@ntlab/ntjs-assets 2.0.28 → 2.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/assets/js/cdn.json +1 -1
  2. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +3 -1
  3. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisComposition.js +2 -1
  4. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +1 -1
  5. package/assets/js/highcharts/es-modules/Core/Legend/Legend.js +4 -4
  6. package/assets/js/highcharts/es-modules/Core/Series/Series.js +2 -2
  7. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +1 -1
  8. package/assets/js/highcharts/es-modules/Data/Converters/GoogleSheetsConverter.js +8 -3
  9. package/assets/js/highcharts/es-modules/Data/DataTable.js +0 -1
  10. package/assets/js/highcharts/es-modules/Data/Modifiers/ChainModifier.js +0 -1
  11. package/assets/js/highcharts/es-modules/Data/Modifiers/DataModifier.js +0 -2
  12. package/assets/js/highcharts/es-modules/Data/Modifiers/MathModifier.js +0 -1
  13. package/assets/js/highcharts/es-modules/Data/Modifiers/RangeModifier.js +0 -1
  14. package/assets/js/highcharts/es-modules/Data/Modifiers/SortModifier.js +0 -1
  15. package/assets/js/highcharts/es-modules/Extensions/TextPath.js +3 -1
  16. package/assets/js/highcharts/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
  17. package/assets/js/highcharts/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  18. package/assets/js/highcharts/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  19. package/assets/js/highcharts/es-modules/masters/indicators/ao.src.js +1 -1
  20. package/assets/js/highcharts/es-modules/masters/indicators/apo.src.js +1 -1
  21. package/assets/js/highcharts/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  22. package/assets/js/highcharts/es-modules/masters/indicators/aroon.src.js +1 -1
  23. package/assets/js/highcharts/es-modules/masters/indicators/atr.src.js +1 -1
  24. package/assets/js/highcharts/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  25. package/assets/js/highcharts/es-modules/masters/indicators/cci.src.js +1 -1
  26. package/assets/js/highcharts/es-modules/masters/indicators/chaikin.src.js +1 -1
  27. package/assets/js/highcharts/es-modules/masters/indicators/cmf.src.js +1 -1
  28. package/assets/js/highcharts/es-modules/masters/indicators/cmo.src.js +1 -1
  29. package/assets/js/highcharts/es-modules/masters/indicators/dema.src.js +1 -1
  30. package/assets/js/highcharts/es-modules/masters/indicators/disparity-index.src.js +1 -1
  31. package/assets/js/highcharts/es-modules/masters/indicators/dmi.src.js +1 -1
  32. package/assets/js/highcharts/es-modules/masters/indicators/dpo.src.js +1 -1
  33. package/assets/js/highcharts/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  34. package/assets/js/highcharts/es-modules/masters/indicators/indicators-all.src.js +1 -1
  35. package/assets/js/highcharts/es-modules/masters/indicators/indicators.src.js +1 -1
  36. package/assets/js/highcharts/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  37. package/assets/js/highcharts/es-modules/masters/indicators/klinger.src.js +1 -1
  38. package/assets/js/highcharts/es-modules/masters/indicators/macd.src.js +1 -1
  39. package/assets/js/highcharts/es-modules/masters/indicators/mfi.src.js +1 -1
  40. package/assets/js/highcharts/es-modules/masters/indicators/momentum.src.js +1 -1
  41. package/assets/js/highcharts/es-modules/masters/indicators/natr.src.js +1 -1
  42. package/assets/js/highcharts/es-modules/masters/indicators/obv.src.js +1 -1
  43. package/assets/js/highcharts/es-modules/masters/indicators/pivot-points.src.js +1 -1
  44. package/assets/js/highcharts/es-modules/masters/indicators/ppo.src.js +1 -1
  45. package/assets/js/highcharts/es-modules/masters/indicators/price-channel.src.js +1 -1
  46. package/assets/js/highcharts/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  47. package/assets/js/highcharts/es-modules/masters/indicators/psar.src.js +1 -1
  48. package/assets/js/highcharts/es-modules/masters/indicators/regressions.src.js +1 -1
  49. package/assets/js/highcharts/es-modules/masters/indicators/roc.src.js +1 -1
  50. package/assets/js/highcharts/es-modules/masters/indicators/rsi.src.js +1 -1
  51. package/assets/js/highcharts/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  52. package/assets/js/highcharts/es-modules/masters/indicators/stochastic.src.js +1 -1
  53. package/assets/js/highcharts/es-modules/masters/indicators/supertrend.src.js +1 -1
  54. package/assets/js/highcharts/es-modules/masters/indicators/tema.src.js +1 -1
  55. package/assets/js/highcharts/es-modules/masters/indicators/trendline.src.js +1 -1
  56. package/assets/js/highcharts/es-modules/masters/indicators/trix.src.js +1 -1
  57. package/assets/js/highcharts/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  58. package/assets/js/highcharts/es-modules/masters/indicators/vwap.src.js +1 -1
  59. package/assets/js/highcharts/es-modules/masters/indicators/williams-r.src.js +1 -1
  60. package/assets/js/highcharts/es-modules/masters/indicators/wma.src.js +1 -1
  61. package/assets/js/highcharts/es-modules/masters/indicators/zigzag.src.js +1 -1
  62. package/assets/js/highcharts/es-modules/masters/modules/arc-diagram.src.js +1 -1
  63. package/assets/js/highcharts/es-modules/masters/modules/cylinder.src.js +1 -1
  64. package/assets/js/highcharts/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  65. package/assets/js/highcharts/es-modules/masters/modules/drag-panes.src.js +1 -1
  66. package/assets/js/highcharts/es-modules/masters/modules/export-data.src.js +1 -1
  67. package/assets/js/highcharts/es-modules/masters/modules/funnel3d.src.js +2 -2
  68. package/assets/js/highcharts/es-modules/masters/modules/heikinashi.src.js +1 -1
  69. package/assets/js/highcharts/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  70. package/assets/js/highcharts/es-modules/masters/modules/offline-exporting.src.js +1 -1
  71. package/assets/js/highcharts/es-modules/masters/modules/organization.src.js +1 -1
  72. package/assets/js/highcharts/es-modules/masters/modules/price-indicator.src.js +1 -1
  73. package/assets/js/highcharts/es-modules/masters/modules/pyramid3d.src.js +3 -3
  74. package/assets/js/highcharts/es-modules/masters/modules/solid-gauge.src.js +1 -1
  75. package/assets/js/highcharts/es-modules/masters/modules/stock-tools.src.js +1 -1
  76. package/assets/js/highcharts/es-modules/masters/modules/tilemap.src.js +1 -1
  77. package/assets/js/highcharts/es-modules/masters/modules/treegraph.src.js +1 -1
  78. package/assets/js/highcharts/highcharts-3d.js +1 -1
  79. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  80. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  81. package/assets/js/highcharts/highcharts-gantt.src.js +14 -12
  82. package/assets/js/highcharts/highcharts-more.js +2 -2
  83. package/assets/js/highcharts/highcharts-more.src.js +4 -2
  84. package/assets/js/highcharts/highcharts.js +3 -3
  85. package/assets/js/highcharts/highcharts.src.js +14 -12
  86. package/assets/js/highcharts/highmaps.js +3 -3
  87. package/assets/js/highcharts/highmaps.src.js +17 -14
  88. package/assets/js/highcharts/highstock.js +3 -3
  89. package/assets/js/highcharts/highstock.src.js +14 -12
  90. package/assets/js/highcharts/indicators/acceleration-bands.js +2 -2
  91. package/assets/js/highcharts/indicators/acceleration-bands.src.js +2 -2
  92. package/assets/js/highcharts/indicators/accumulation-distribution.js +2 -2
  93. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +2 -2
  94. package/assets/js/highcharts/indicators/ao.js +2 -2
  95. package/assets/js/highcharts/indicators/ao.src.js +2 -2
  96. package/assets/js/highcharts/indicators/apo.js +2 -2
  97. package/assets/js/highcharts/indicators/apo.src.js +2 -2
  98. package/assets/js/highcharts/indicators/aroon-oscillator.js +2 -2
  99. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +2 -2
  100. package/assets/js/highcharts/indicators/aroon.js +2 -2
  101. package/assets/js/highcharts/indicators/aroon.src.js +2 -2
  102. package/assets/js/highcharts/indicators/atr.js +2 -2
  103. package/assets/js/highcharts/indicators/atr.src.js +2 -2
  104. package/assets/js/highcharts/indicators/bollinger-bands.js +2 -2
  105. package/assets/js/highcharts/indicators/bollinger-bands.src.js +2 -2
  106. package/assets/js/highcharts/indicators/cci.js +2 -2
  107. package/assets/js/highcharts/indicators/cci.src.js +2 -2
  108. package/assets/js/highcharts/indicators/chaikin.js +2 -2
  109. package/assets/js/highcharts/indicators/chaikin.src.js +2 -2
  110. package/assets/js/highcharts/indicators/cmf.js +2 -2
  111. package/assets/js/highcharts/indicators/cmf.src.js +2 -2
  112. package/assets/js/highcharts/indicators/cmo.js +2 -2
  113. package/assets/js/highcharts/indicators/cmo.src.js +2 -2
  114. package/assets/js/highcharts/indicators/dema.js +2 -2
  115. package/assets/js/highcharts/indicators/dema.src.js +2 -2
  116. package/assets/js/highcharts/indicators/disparity-index.js +2 -2
  117. package/assets/js/highcharts/indicators/disparity-index.src.js +2 -2
  118. package/assets/js/highcharts/indicators/dmi.js +2 -2
  119. package/assets/js/highcharts/indicators/dmi.src.js +2 -2
  120. package/assets/js/highcharts/indicators/dpo.js +2 -2
  121. package/assets/js/highcharts/indicators/dpo.src.js +2 -2
  122. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +2 -2
  123. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +2 -2
  124. package/assets/js/highcharts/indicators/indicators-all.js +2 -2
  125. package/assets/js/highcharts/indicators/indicators-all.src.js +2 -2
  126. package/assets/js/highcharts/indicators/indicators.js +2 -2
  127. package/assets/js/highcharts/indicators/indicators.src.js +2 -2
  128. package/assets/js/highcharts/indicators/keltner-channels.js +2 -2
  129. package/assets/js/highcharts/indicators/keltner-channels.src.js +2 -2
  130. package/assets/js/highcharts/indicators/klinger.js +2 -2
  131. package/assets/js/highcharts/indicators/klinger.src.js +2 -2
  132. package/assets/js/highcharts/indicators/macd.js +2 -2
  133. package/assets/js/highcharts/indicators/macd.src.js +2 -2
  134. package/assets/js/highcharts/indicators/mfi.js +2 -2
  135. package/assets/js/highcharts/indicators/mfi.src.js +2 -2
  136. package/assets/js/highcharts/indicators/momentum.js +2 -2
  137. package/assets/js/highcharts/indicators/momentum.src.js +2 -2
  138. package/assets/js/highcharts/indicators/natr.js +2 -2
  139. package/assets/js/highcharts/indicators/natr.src.js +2 -2
  140. package/assets/js/highcharts/indicators/obv.js +2 -2
  141. package/assets/js/highcharts/indicators/obv.src.js +2 -2
  142. package/assets/js/highcharts/indicators/pivot-points.js +2 -2
  143. package/assets/js/highcharts/indicators/pivot-points.src.js +2 -2
  144. package/assets/js/highcharts/indicators/ppo.js +2 -2
  145. package/assets/js/highcharts/indicators/ppo.src.js +2 -2
  146. package/assets/js/highcharts/indicators/price-channel.js +2 -2
  147. package/assets/js/highcharts/indicators/price-channel.src.js +2 -2
  148. package/assets/js/highcharts/indicators/price-envelopes.js +2 -2
  149. package/assets/js/highcharts/indicators/price-envelopes.src.js +2 -2
  150. package/assets/js/highcharts/indicators/psar.js +2 -2
  151. package/assets/js/highcharts/indicators/psar.src.js +2 -2
  152. package/assets/js/highcharts/indicators/regressions.js +2 -2
  153. package/assets/js/highcharts/indicators/regressions.src.js +2 -2
  154. package/assets/js/highcharts/indicators/roc.js +2 -2
  155. package/assets/js/highcharts/indicators/roc.src.js +2 -2
  156. package/assets/js/highcharts/indicators/rsi.js +2 -2
  157. package/assets/js/highcharts/indicators/rsi.src.js +2 -2
  158. package/assets/js/highcharts/indicators/slow-stochastic.js +2 -2
  159. package/assets/js/highcharts/indicators/slow-stochastic.src.js +2 -2
  160. package/assets/js/highcharts/indicators/stochastic.js +2 -2
  161. package/assets/js/highcharts/indicators/stochastic.src.js +2 -2
  162. package/assets/js/highcharts/indicators/supertrend.js +2 -2
  163. package/assets/js/highcharts/indicators/supertrend.src.js +2 -2
  164. package/assets/js/highcharts/indicators/tema.js +2 -2
  165. package/assets/js/highcharts/indicators/tema.src.js +2 -2
  166. package/assets/js/highcharts/indicators/trendline.js +2 -2
  167. package/assets/js/highcharts/indicators/trendline.src.js +2 -2
  168. package/assets/js/highcharts/indicators/trix.js +2 -2
  169. package/assets/js/highcharts/indicators/trix.src.js +2 -2
  170. package/assets/js/highcharts/indicators/volume-by-price.js +2 -2
  171. package/assets/js/highcharts/indicators/volume-by-price.src.js +2 -2
  172. package/assets/js/highcharts/indicators/vwap.js +2 -2
  173. package/assets/js/highcharts/indicators/vwap.src.js +2 -2
  174. package/assets/js/highcharts/indicators/williams-r.js +2 -2
  175. package/assets/js/highcharts/indicators/williams-r.src.js +2 -2
  176. package/assets/js/highcharts/indicators/wma.js +2 -2
  177. package/assets/js/highcharts/indicators/wma.src.js +2 -2
  178. package/assets/js/highcharts/indicators/zigzag.js +2 -2
  179. package/assets/js/highcharts/indicators/zigzag.src.js +2 -2
  180. package/assets/js/highcharts/modules/accessibility.js +1 -1
  181. package/assets/js/highcharts/modules/accessibility.src.js +1 -1
  182. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  183. package/assets/js/highcharts/modules/annotations-advanced.src.js +3 -3
  184. package/assets/js/highcharts/modules/annotations.js +2 -2
  185. package/assets/js/highcharts/modules/annotations.src.js +3 -3
  186. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  187. package/assets/js/highcharts/modules/arc-diagram.src.js +6 -6
  188. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  189. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  190. package/assets/js/highcharts/modules/boost-canvas.js +1 -1
  191. package/assets/js/highcharts/modules/boost-canvas.src.js +1 -1
  192. package/assets/js/highcharts/modules/boost.js +1 -1
  193. package/assets/js/highcharts/modules/boost.src.js +1 -1
  194. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  195. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  196. package/assets/js/highcharts/modules/bullet.js +1 -1
  197. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  198. package/assets/js/highcharts/modules/coloraxis.js +2 -2
  199. package/assets/js/highcharts/modules/coloraxis.src.js +4 -3
  200. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  201. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  202. package/assets/js/highcharts/modules/cylinder.js +2 -2
  203. package/assets/js/highcharts/modules/cylinder.src.js +2 -2
  204. package/assets/js/highcharts/modules/data-tools.js +2 -2
  205. package/assets/js/highcharts/modules/data-tools.src.js +9 -11
  206. package/assets/js/highcharts/modules/data.js +1 -1
  207. package/assets/js/highcharts/modules/data.src.js +1 -1
  208. package/assets/js/highcharts/modules/datagrouping.js +1 -1
  209. package/assets/js/highcharts/modules/datagrouping.src.js +1 -1
  210. package/assets/js/highcharts/modules/debugger.js +1 -1
  211. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  212. package/assets/js/highcharts/modules/dependency-wheel.js +2 -2
  213. package/assets/js/highcharts/modules/dependency-wheel.src.js +2 -2
  214. package/assets/js/highcharts/modules/dotplot.js +1 -1
  215. package/assets/js/highcharts/modules/dotplot.src.js +1 -1
  216. package/assets/js/highcharts/modules/drag-panes.js +2 -2
  217. package/assets/js/highcharts/modules/drag-panes.src.js +2 -2
  218. package/assets/js/highcharts/modules/draggable-points.js +1 -1
  219. package/assets/js/highcharts/modules/draggable-points.src.js +1 -1
  220. package/assets/js/highcharts/modules/drilldown.js +1 -1
  221. package/assets/js/highcharts/modules/drilldown.src.js +1 -1
  222. package/assets/js/highcharts/modules/dumbbell.js +1 -1
  223. package/assets/js/highcharts/modules/dumbbell.src.js +1 -1
  224. package/assets/js/highcharts/modules/export-data.js +2 -2
  225. package/assets/js/highcharts/modules/export-data.src.js +2 -2
  226. package/assets/js/highcharts/modules/exporting.js +1 -1
  227. package/assets/js/highcharts/modules/exporting.src.js +1 -1
  228. package/assets/js/highcharts/modules/flowmap.js +1 -1
  229. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  230. package/assets/js/highcharts/modules/full-screen.js +1 -1
  231. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  232. package/assets/js/highcharts/modules/funnel.js +1 -1
  233. package/assets/js/highcharts/modules/funnel.src.js +1 -1
  234. package/assets/js/highcharts/modules/funnel3d.js +2 -2
  235. package/assets/js/highcharts/modules/funnel3d.src.js +2 -2
  236. package/assets/js/highcharts/modules/gantt.js +1 -1
  237. package/assets/js/highcharts/modules/gantt.src.js +1 -1
  238. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  239. package/assets/js/highcharts/modules/geoheatmap.src.js +1 -1
  240. package/assets/js/highcharts/modules/grid-axis.js +1 -1
  241. package/assets/js/highcharts/modules/grid-axis.src.js +1 -1
  242. package/assets/js/highcharts/modules/heatmap.js +2 -2
  243. package/assets/js/highcharts/modules/heatmap.src.js +4 -3
  244. package/assets/js/highcharts/modules/heikinashi.js +2 -2
  245. package/assets/js/highcharts/modules/heikinashi.src.js +2 -2
  246. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  247. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  248. package/assets/js/highcharts/modules/hollowcandlestick.js +2 -2
  249. package/assets/js/highcharts/modules/hollowcandlestick.src.js +2 -2
  250. package/assets/js/highcharts/modules/item-series.js +1 -1
  251. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  252. package/assets/js/highcharts/modules/lollipop.js +1 -1
  253. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  254. package/assets/js/highcharts/modules/map.js +2 -2
  255. package/assets/js/highcharts/modules/map.src.js +4 -3
  256. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  257. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  258. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  259. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  260. package/assets/js/highcharts/modules/navigator.js +1 -1
  261. package/assets/js/highcharts/modules/navigator.src.js +1 -1
  262. package/assets/js/highcharts/modules/networkgraph.js +2 -2
  263. package/assets/js/highcharts/modules/networkgraph.src.js +4 -2
  264. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  265. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  266. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  267. package/assets/js/highcharts/modules/offline-exporting.src.js +3 -3
  268. package/assets/js/highcharts/modules/organization.js +2 -2
  269. package/assets/js/highcharts/modules/organization.src.js +2 -2
  270. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  271. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  272. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  273. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  274. package/assets/js/highcharts/modules/pareto.js +1 -1
  275. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  276. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  277. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  278. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  279. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  280. package/assets/js/highcharts/modules/pictorial.js +1 -1
  281. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  282. package/assets/js/highcharts/modules/price-indicator.js +2 -2
  283. package/assets/js/highcharts/modules/price-indicator.src.js +2 -2
  284. package/assets/js/highcharts/modules/pyramid3d.js +2 -2
  285. package/assets/js/highcharts/modules/pyramid3d.src.js +2 -2
  286. package/assets/js/highcharts/modules/sankey.js +2 -2
  287. package/assets/js/highcharts/modules/sankey.src.js +4 -2
  288. package/assets/js/highcharts/modules/series-label.js +1 -1
  289. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  290. package/assets/js/highcharts/modules/series-on-point.js +1 -1
  291. package/assets/js/highcharts/modules/series-on-point.src.js +1 -1
  292. package/assets/js/highcharts/modules/solid-gauge.js +2 -2
  293. package/assets/js/highcharts/modules/solid-gauge.src.js +2 -2
  294. package/assets/js/highcharts/modules/sonification.js +1 -1
  295. package/assets/js/highcharts/modules/sonification.src.js +1 -1
  296. package/assets/js/highcharts/modules/static-scale.js +1 -1
  297. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  298. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  299. package/assets/js/highcharts/modules/stock-tools.src.js +4 -4
  300. package/assets/js/highcharts/modules/stock.js +1 -1
  301. package/assets/js/highcharts/modules/stock.src.js +1 -1
  302. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  303. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  304. package/assets/js/highcharts/modules/sunburst.js +2 -2
  305. package/assets/js/highcharts/modules/sunburst.src.js +4 -2
  306. package/assets/js/highcharts/modules/textpath.js +2 -2
  307. package/assets/js/highcharts/modules/textpath.src.js +4 -2
  308. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  309. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  310. package/assets/js/highcharts/modules/tilemap.js +2 -2
  311. package/assets/js/highcharts/modules/tilemap.src.js +2 -2
  312. package/assets/js/highcharts/modules/timeline.js +1 -1
  313. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  314. package/assets/js/highcharts/modules/treegraph.js +2 -2
  315. package/assets/js/highcharts/modules/treegraph.src.js +5 -3
  316. package/assets/js/highcharts/modules/treegrid.js +1 -1
  317. package/assets/js/highcharts/modules/treegrid.src.js +1 -1
  318. package/assets/js/highcharts/modules/treemap.js +1 -1
  319. package/assets/js/highcharts/modules/treemap.src.js +1 -1
  320. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  321. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  322. package/assets/js/highcharts/modules/variwide.js +1 -1
  323. package/assets/js/highcharts/modules/variwide.src.js +1 -1
  324. package/assets/js/highcharts/modules/vector.js +1 -1
  325. package/assets/js/highcharts/modules/vector.src.js +1 -1
  326. package/assets/js/highcharts/modules/venn.js +1 -1
  327. package/assets/js/highcharts/modules/venn.src.js +1 -1
  328. package/assets/js/highcharts/modules/windbarb.js +1 -1
  329. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  330. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  331. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  332. package/assets/js/highcharts/modules/xrange.js +1 -1
  333. package/assets/js/highcharts/modules/xrange.src.js +1 -1
  334. package/assets/js/highcharts/standalone-navigator.js +2 -2
  335. package/assets/js/highcharts/standalone-navigator.src.js +13 -11
  336. package/assets/js/highcharts/themes/avocado.js +1 -1
  337. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  338. package/assets/js/highcharts/themes/brand-dark.js +1 -1
  339. package/assets/js/highcharts/themes/brand-dark.src.js +1 -1
  340. package/assets/js/highcharts/themes/brand-light.js +1 -1
  341. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  342. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  343. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  344. package/assets/js/highcharts/themes/dark-green.js +1 -1
  345. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  346. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  347. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  348. package/assets/js/highcharts/themes/gray.js +1 -1
  349. package/assets/js/highcharts/themes/gray.src.js +1 -1
  350. package/assets/js/highcharts/themes/grid-light.js +1 -1
  351. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  352. package/assets/js/highcharts/themes/grid.js +1 -1
  353. package/assets/js/highcharts/themes/grid.src.js +1 -1
  354. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  355. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  356. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  357. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  358. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  359. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  360. package/assets/js/highcharts/themes/skies.js +1 -1
  361. package/assets/js/highcharts/themes/skies.src.js +1 -1
  362. package/assets/js/highcharts/themes/sunset.js +1 -1
  363. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  364. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  !/**
2
- * Highstock JS v11.4.4 (2024-07-02)
2
+ * Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * All technical indicators for Highcharts Stock
5
5
  *
6
6
  * (c) 2010-2024 Pawel Fus
7
7
  *
8
8
  * License: www.highcharts.com/license
9
- */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/indicators-all",["highcharts","modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function s(t,s,i,o){t.hasOwnProperty(s)||(t[s]=o.apply(null,i),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:s,module:t[s]}})))}s(t,"Stock/Indicators/SMA/SMAIndicator.js",[t["Core/Chart/Chart.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{line:i}=t.seriesTypes,{addEvent:o,fireEvent:a,error:r,extend:n,isArray:l,merge:p,pick:u,splat:d}=s;class h extends i{destroy(){this.dataEventsToUnbind.forEach(function(e){e()}),super.destroy.apply(this,arguments)}getName(){let e=[],t=this.name;return t||((this.nameComponents||[]).forEach(function(t,s){e.push(this.options.params[t]+u(this.nameSuffixes[s],""))},this),t=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+e.join(", ")+")":"")),t}getValues(e,t){let s=t.period,i=e.xData,o=e.yData,a=o.length,r=[],n=[],p=[],u,d=-1,h=0,c,g=0;if(!(i.length<s)){for(l(o[0])&&(d=t.index?t.index:0);h<s-1;)g+=d<0?o[h]:o[h][d],h++;for(u=h;u<a;u++)g+=d<0?o[u]:o[u][d],c=[i[u],g/s],r.push(c),n.push(c[0]),p.push(c[1]),g-=d<0?o[u-h]:o[u-h][d];return{values:r,xData:n,yData:p}}}init(t,s){let i=this;super.init.call(i,t,s);let a=o(e,"afterLinkSeries",function({isUpdating:e}){if(e)return;let s=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return r("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,t);if(!s&&(i.dataEventsToUnbind.push(o(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push(o(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.processedYData||i.recalculateValues();else if(!s){let e=o(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),e()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(a)}recalculateValues(){let e=[],t=this.points||[],s=(this.xData||[]).length,i=!0,o,r,n,l,p,u,h=this.linkedParent.options&&this.linkedParent.yData&&this.linkedParent.yData.length&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};if(s&&!this.hasGroupedData&&this.visible&&this.points){if(this.cropped){for(this.xAxis&&(l=this.xAxis.min,p=this.xAxis.max),n=this.cropData(h.xData,h.yData,l,p),u=0;u<n.xData.length;u++)e.push([n.xData[u]].concat(d(n.yData[u])));o=h.xData.indexOf(this.xData[0]),r=h.xData.indexOf(this.xData[this.xData.length-1]),-1===o&&r===h.xData.length-2&&e[0][0]===t[0].x&&e.shift(),this.updateData(e)}else(this.updateAllPoints||h.xData.length!==s-1&&h.xData.length!==s+1)&&(i=!1,this.updateData(h.values))}i&&(this.xData=h.xData,this.yData=h.yData,this.options.data=h.values),this.calculateOn.xAxis&&this.processedXData&&(delete this.processedXData,this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,a(this,"updatedData")}processData(){let e=this.options.compareToMain,t=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&t&&t.dataModify&&t.dataModify.compareValue&&e&&(this.dataModify.compareValue=t.dataModify.compareValue)}}return h.defaultOptions=p(i.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),n(h.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),t.registerSeriesType("sma",h),h}),s(t,"Stock/Indicators/EMA/EMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{accumulatePeriodPoints(e,t,s){let i=0,o=0;for(;o<e;)i+=t<0?s[o]:s[o][t],o++;return i}calculateEma(e,t,s,o,a,r,n){let l=e[s-1],p=r<0?t[s-1]:t[s-1][r];return[l,void 0===a?n:i(p*o+a*(1-o))]}getValues(e,t){let s=t.period,i=e.xData,a=e.yData,r=a?a.length:0,n=2/(s+1),l=[],p=[],u=[],d,h,c,g=-1,y=0;if(!(r<s)){for(o(a[0])&&(g=t.index?t.index:0),y=this.accumulatePeriodPoints(s,g,a)/s,c=s;c<r+1;c++)h=this.calculateEma(i,a,c,n,d,g,y),l.push(h),p.push(h[0]),u.push(h[1]),d=h[1];return{values:l,xData:p,yData:u}}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:3,period:9}}),e.registerSeriesType("ema",r),r}),s(t,"Stock/Indicators/AD/ADIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{error:i,extend:o,merge:a}=t;class r extends s{static populateAverage(e,t,s,i,o){let a=t[i][1],r=t[i][2],n=t[i][3],l=s[i];return[e[i],n===a&&n===r||a===r?0:(2*n-r-a)/(a-r)*l]}getValues(e,t){let s,o,a;let n=t.period,l=e.xData,p=e.yData,u=t.volumeSeriesID,d=e.chart.get(u),h=d&&d.yData,c=p?p.length:0,g=[],y=[],m=[];if(!(l.length<=n)||!c||4===p[0].length){if(!d){i("Series "+u+" not found! Check `volumeSeriesID`.",!0,e.chart);return}for(o=n;o<c;o++)s=g.length,a=r.populateAverage(l,p,h,o,n),s>0&&(a[1]+=g[s-1][1]),g.push(a),y.push(a[0]),m.push(a[1]);return{values:g,xData:y,yData:m}}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),o(r.prototype,{nameComponents:!1,nameBase:"Accumulation/Distribution"}),e.registerSeriesType("ad",r),r}),s(t,"Stock/Indicators/AO/AOIndicator.js",[t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{noop:i}=e,{column:{prototype:o},sma:a}=t.seriesTypes,{extend:r,merge:n,correctFloat:l,isArray:p}=s;class u extends a{drawGraph(){let e;let t=this.options,s=this.points,i=this.userOptions.color,o=t.greaterBarColor,a=t.lowerBarColor,r=s[0];if(!i&&r)for(e=1,r.color=o;e<s.length;e++)s[e].y>s[e-1].y?s[e].color=o:s[e].y<s[e-1].y?s[e].color=a:s[e].color=s[e-1].color}getValues(e){let t=e.xData||[],s=e.yData||[],i=s.length,o=[],a=[],r=[],n,u,d,h,c,g,y=0,m=0;if(!(t.length<=34)&&p(s[0])&&4===s[0].length){for(c=0;c<33;c++)h=(s[c][1]+s[c][2])/2,c>=29&&(m=l(m+h)),y=l(y+h);for(g=33;g<i;g++)m=l(m+(h=(s[g][1]+s[g][2])/2)),y=l(y+h),n=l(m/5-y/34),o.push([t[g],n]),a.push(t[g]),r.push(n),u=g+1-5,d=g+1-34,m=l(m-(s[u][1]+s[u][2])/2),y=l(y-(s[d][1]+s[d][2])/2);return{values:o,xData:a,yData:r}}}}return u.defaultOptions=n(a.defaultOptions,{params:{index:void 0,period:void 0},greaterBarColor:"#06b535",lowerBarColor:"#f21313",threshold:0,groupPadding:.2,pointPadding:.2,crisp:!1,states:{hover:{halo:{size:0}}}}),r(u.prototype,{nameBase:"AO",nameComponents:void 0,markerAttribs:i,getColumnMetrics:o.getColumnMetrics,crispCol:o.crispCol,translate:o.translate,drawPoints:o.drawPoints}),t.registerSeriesType("ao",u),u}),s(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var s;let{sma:{prototype:i}}=e.seriesTypes,{defined:o,error:a,merge:r}=t;return function(e){let t=["bottomLine"],s=["top","bottom"],n=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let s=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&s.push(l(e))}),s}function u(){let e=this,t=e.pointValKey,s=e.linesApiNames,n=e.areaLinesNames,u=e.points,d=e.options,h=e.graph,c={options:{gapSize:d.gapSize}},g=[],y=p(e,t),m=u.length,f;if(y.forEach((e,t)=>{for(g[t]=[];m--;)f=u[m],g[t].push({x:f.x,plotX:f.plotX,plotY:f[e],isNull:!o(f[e])});m=u.length}),e.userOptions.fillColor&&n.length){let t=g[y.indexOf(l(n[0]))],s=1===n.length?u:g[y.indexOf(l(n[1]))],o=e.color;e.points=s,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=r(u,c),e.graph=e.area,e.fillGraph=!0,i.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=o}s.forEach((t,s)=>{g[s]?(e.points=g[s],d[t]?e.options=r(d[t].styles,c):a('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],i.drawGraph.call(e),e["graph"+t]=e.graph):a('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=u,e.options=d,e.graph=h,i.drawGraph.call(e)}function d(e){let t,s=[],o=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=i.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",s=i.getGraphPath.call(this,e),o=t.slice(0,s.length);for(let e=o.length-1;e>=0;e--)s.push(o[e])}}else s=i.getGraphPath.apply(this,arguments);return s}function h(e){let t=[];return(this.pointArrayMap||[]).forEach(s=>{t.push(e[s])}),t}function c(){let e=this.pointArrayMap,t=[],s;t=p(this),i.translate.apply(this,arguments),this.points.forEach(i=>{e.forEach((e,o)=>{s=i[e],this.dataModify&&(s=this.dataModify.modifyValue(s)),null!==s&&(i[t[o]]=this.yAxis.toPixels(s,!0))})})}e.compose=function(e){let i=e.prototype;return i.linesApiNames=i.linesApiNames||t.slice(),i.pointArrayMap=i.pointArrayMap||s.slice(),i.pointValKey=i.pointValKey||"top",i.areaLinesNames=i.areaLinesNames||n.slice(),i.drawGraph=u,i.getGraphPath=d,i.toYData=h,i.translate=c,e}}(s||(s={})),s}),s(t,"Stock/Indicators/Aroon/AroonIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,merge:a,pick:r}=s;function n(e,t){let s=e[0],i=0,o;for(o=1;o<e.length;o++)("max"===t&&e[o]>=s||"min"===t&&e[o]<=s)&&(s=e[o],i=o);return i}class l extends i{getValues(e,t){let s,i,o,a,l;let p=t.period,u=e.xData,d=e.yData,h=d?d.length:0,c=[],g=[],y=[];for(a=p-1;a<h;a++)o=n((l=d.slice(a-p+1,a+2)).map(function(e){return r(e[2],e)}),"min"),s=n(l.map(function(e){return r(e[1],e)}),"max")/p*100,i=o/p*100,u[a+1]&&(c.push([u[a+1],s,i]),g.push(u[a+1]),y.push([s,i]));return{values:c,xData:g,yData:y}}}return l.defaultOptions=a(i.defaultOptions,{params:{index:void 0,period:25},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Aroon Up: {point.y}<br/>Aroon Down: {point.aroonDown}<br/>'},aroonDown:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),o(l.prototype,{areaLinesNames:[],linesApiNames:["aroonDown"],nameBase:"Aroon",pointArrayMap:["y","aroonDown"],pointValKey:"y"}),e.compose(l),t.registerSeriesType("aroon",l),l}),s(t,"Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{aroon:i}=t.seriesTypes,{extend:o,merge:a}=s;class r extends i{getValues(e,t){let s,i;let o=[],a=[],r=[],n=super.getValues.call(this,e,t);for(i=0;i<n.yData.length;i++)s=n.yData[i][0]-n.yData[i][1],o.push([n.xData[i],s]),a.push(n.xData[i]),r.push(s);return{values:o,xData:a,yData:r}}}return r.defaultOptions=a(i.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b>: {point.y}'}}),o(r.prototype,{nameBase:"Aroon Oscillator",linesApiNames:[],pointArrayMap:["y"],pointValKey:"y"}),e.compose(i),t.registerSeriesType("aroonoscillator",r),r}),s(t,"Stock/Indicators/ATR/ATRIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;function a(e,t){return Math.max(e[1]-e[2],void 0===t?0:Math.abs(e[1]-t[3]),void 0===t?0:Math.abs(e[2]-t[3]))}class r extends s{getValues(e,t){let s=t.period,o=e.xData,r=e.yData,n=r?r.length:0,l=[[o[0],r[0]]],p=[],u=[],d=[],h,c,g=0,y=1,m=0;if(!(o.length<=s)&&i(r[0])&&4===r[0].length){for(c=1;c<=n;c++){var f,D;(function(e,t,s,i){let o=t[i],a=s[i];e.push([o,a])})(l,o,r,c),s<y?(g=(f=c,D=g,h=[o[f-1],(D*(s-1)+a(r[f-1],r[f-2]))/s])[1],p.push(h),u.push(h[0]),d.push(h[1])):(s===y?(g=m/(c-1),p.push([o[c-1],g]),u.push(o[c-1]),d.push(g)):m+=a(r[c-1],r[c-2]),y++)}return{values:p,xData:u,yData:d}}}}return r.defaultOptions=o(s.defaultOptions,{params:{index:void 0}}),e.registerSeriesType("atr",r),r}),s(t,"Stock/Indicators/BB/BBIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,s){let i,o,r,n,l,p,u,d,h;let c=s.period,g=s.standardDeviation,y=[],m=[],f=e.xData,D=e.yData,x=D?D.length:0,S=[];if(f.length<c)return;let v=a(D[0]);for(h=c;h<=x;h++)l=f.slice(h-c,h),p=D.slice(h-c,h),n=(d=t.seriesTypes.sma.prototype.getValues.call(this,{xData:l,yData:p},s)).xData[0],i=d.yData[0],u=function(e,t,s,i){let o=e.length,a=0,r,n=0;for(;a<o;a++)n+=(r=(s?e[a][t]:e[a])-i)*r;return Math.sqrt(n/=o-1)}(p,s.index,v,i),o=i+g*u,r=i-g*u,S.push([n,o,i,r]),y.push(n),m.push([o,i,r]);return{values:S,xData:y,yData:m}}}return n.defaultOptions=r(i.defaultOptions,{params:{period:20,standardDeviation:2,index:3},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),o(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","standardDeviation"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("bb",n),n}),s(t,"Stock/Indicators/CCI/CCIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;class a extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u=[],d,h,c=[],g,y=1,m,f,D,x;if(!(o.length<=s)&&i(a[0])&&4===a[0].length){for(;y<s;)h=a[y-1],n.push((h[1]+h[2]+h[3])/3),y++;for(x=s;x<=r;x++)f=((h=a[x-1])[1]+h[2]+h[3])/3,g=n.push(f),m=(c=n.slice(g-s)).reduce(function(e,t){return e+t},0)/s,D=function(e,t){let s=e.length,i=0,o;for(o=0;o<s;o++)i+=Math.abs(t-e[o]);return i}(c,m)/s,d=(f-m)/(.015*D),l.push([o[x-1],d]),p.push(o[x-1]),u.push(d);return{values:l,xData:p,yData:u}}}}return a.defaultOptions=o(s.defaultOptions,{params:{index:void 0}}),e.registerSeriesType("cci",a),a}),s(t,"Stock/Indicators/CMF/CMFIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i}=t;class o extends s{constructor(){super(...arguments),this.nameBase="Chaikin Money Flow"}isValid(){let e=this.chart,t=this.options,s=this.linkedParent,i=this.volumeSeries||(this.volumeSeries=e.get(t.params.volumeSeriesID)),o=s&&s.yData&&4===s.yData[0].length;function a(e){return e.xData&&e.xData.length>=t.params.period}return!!(s&&i&&a(s)&&a(i)&&o)}getValues(e,t){if(this.isValid())return this.getMoneyFlow(e.xData,e.yData,this.volumeSeries.yData,t.period)}getMoneyFlow(e,t,s,i){let o=t.length,a=[],r=[],n=[],l=[],p,u,d=-1,h=0,c=0;function g(e,t){let s=e[1],i=e[2],o=e[3];return null!==t&&null!==s&&null!==i&&null!==o&&s!==i?(o-i-(s-o))/(s-i)*t:(d=p,null)}if(i>0&&i<=o){for(p=0;p<i;p++)a[p]=g(t[p],s[p]),h+=s[p],c+=a[p];for(r.push(e[p-1]),n.push(p-d>=i&&0!==h?c/h:null),l.push([r[0],n[0]]);p<o;p++)a[p]=g(t[p],s[p]),h-=s[p-i],h+=s[p],c-=a[p-i],c+=a[p],u=[e[p],p-d>=i?c/h:null],r.push(u[0]),n.push(u[1]),l.push([u[0],u[1]])}return{values:l,xData:r,yData:n}}}return o.defaultOptions=i(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),e.registerSeriesType("cmf",o),o}),s(t,"Stock/Indicators/DMI/DMIIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,isArray:r,merge:n}=s;class l extends i{calculateDM(e,t,s){let i=e[t][1],a=e[t][2],r=e[t-1][1],n=e[t-1][2];return o(i-r>n-a?s?Math.max(i-r,0):0:s?0:Math.max(n-a,0))}calculateDI(e,t){return e/t*100}calculateDX(e,t){return o(Math.abs(e-t)/Math.abs(e+t)*100)}smoothValues(e,t,s){return o(e-e/s+t)}getTR(e,t){return o(Math.max(e[1]-e[2],t?Math.abs(e[1]-t[3]):0,t?Math.abs(e[2]-t[3]):0))}getValues(e,t){let s=t.period,i=e.xData,o=e.yData,a=o?o.length:0,n=[],l=[],p=[];if(i.length<=s||!r(o[0])||4!==o[0].length)return;let u=0,d=0,h=0,c;for(c=1;c<a;c++){let e,t,a,r,g,y,m,f,D;c<=s?(r=this.calculateDM(o,c,!0),g=this.calculateDM(o,c),y=this.getTR(o[c],o[c-1]),u+=r,d+=g,h+=y,c===s&&(m=this.calculateDI(u,h),f=this.calculateDI(d,h),D=this.calculateDX(u,d),n.push([i[c],D,m,f]),l.push(i[c]),p.push([D,m,f]))):(r=this.calculateDM(o,c,!0),g=this.calculateDM(o,c),y=this.getTR(o[c],o[c-1]),e=this.smoothValues(u,r,s),t=this.smoothValues(d,g,s),a=this.smoothValues(h,y,s),u=e,d=t,h=a,m=this.calculateDI(u,h),f=this.calculateDI(d,h),D=this.calculateDX(u,d),n.push([i[c],D,m,f]),l.push(i[c]),p.push([D,m,f]))}return{values:n,xData:l,yData:p}}}return l.defaultOptions=n(i.defaultOptions,{params:{index:void 0},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">DX</span>: {point.y}<br/><span style="color: {point.series.options.plusDILine.styles.lineColor}">+DI</span>: {point.plusDI}<br/><span style="color: {point.series.options.minusDILine.styles.lineColor}">-DI</span>: {point.minusDI}<br/>'},plusDILine:{styles:{lineWidth:1,lineColor:"#06b535"}},minusDILine:{styles:{lineWidth:1,lineColor:"#f21313"}},dataGrouping:{approximation:"averages"}}),a(l.prototype,{areaLinesNames:[],nameBase:"DMI",linesApiNames:["plusDILine","minusDILine"],pointArrayMap:["y","plusDI","minusDI"],parallelArrays:["x","y","plusDI","minusDI"],pointValKey:"y"}),e.compose(l),t.registerSeriesType("dmi",l),l}),s(t,"Stock/Indicators/DPO/DPOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,correctFloat:a,pick:r}=t;function n(e,t,s,i,o){let n=r(t[s][i],t[s]);return o?a(e-n):a(e+n)}class l extends s{getValues(e,t){let s=t.period,i=t.index,o=Math.floor(s/2+1),a=s+o,l=e.xData||[],p=e.yData||[],u=p.length,d=[],h=[],c=[],g,y,m,f,D,x=0;if(!(l.length<=a)){for(f=0;f<s-1;f++)x=n(x,p,f,i);for(D=0;D<=u-a;D++)y=D+s-1,m=D+a-1,x=n(x,p,y,i),g=r(p[m][i],p[m])-x/s,x=n(x,p,D,i,!0),d.push([l[m],g]),h.push(l[m]),c.push(g);return{values:d,xData:h,yData:c}}}}return l.defaultOptions=o(s.defaultOptions,{params:{index:0,period:21}}),i(l.prototype,{nameBase:"DPO"}),e.registerSeriesType("dpo",l),l}),s(t,"Stock/Indicators/Chaikin/ChaikinIndicator.js",[t["Stock/Indicators/AD/ADIndicator.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{ema:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r,error:n}=s;class l extends i{getValues(t,s){let i,a;let r=s.periods,l=s.period,p=[],u=[],d=[];if(2!==r.length||r[1]<=r[0]){n('Error: "Chaikin requires two periods. Notice, first period should be lower than the second one."');return}let h=e.prototype.getValues.call(this,t,{volumeSeriesID:s.volumeSeriesID,period:l});if(!h)return;let c=super.getValues.call(this,h,{period:r[0]}),g=super.getValues.call(this,h,{period:r[1]});if(!c||!g)return;let y=r[1]-r[0];for(a=0;a<g.yData.length;a++)i=o(c.yData[a+y]-g.yData[a]),p.push([g.xData[a],i]),u.push(g.xData[a]),d.push(i);return{values:p,xData:u,yData:d}}}return l.defaultOptions=r(i.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",period:9,periods:[3,10]}}),a(l.prototype,{nameBase:"Chaikin Osc",nameComponents:["periods"]}),t.registerSeriesType("chaikin",l),l}),s(t,"Stock/Indicators/CMO/CMOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,merge:o}=t;class a extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u,d=t.index,h;if(o.length<s)return;i(a[0])?h=a:(d=Math.min(d,a[0].length-1),h=a.map(e=>e[d]));let c=0,g=0,y=0,m;for(let e=s;e>0;e--)h[e]>h[e-1]?g+=h[e]-h[e-1]:h[e]<h[e-1]&&(y+=h[e-1]-h[e]);for(m=g+y>0?100*(g-y)/(g+y):0,l.push(o[s]),p.push(m),n.push([o[s],m]),u=s+1;u<r;u++)c=Math.abs(h[u-s-1]-h[u-s]),h[u]>h[u-1]?g+=h[u]-h[u-1]:h[u]<h[u-1]&&(y+=h[u-1]-h[u]),h[u-s]>h[u-s-1]?g-=c:y-=c,m=g+y>0?100*(g-y)/(g+y):0,l.push(o[u]),p.push(m),n.push([o[u],m]);return{values:n,xData:l,yData:p}}}return a.defaultOptions=o(s.defaultOptions,{params:{period:20,index:3}}),e.registerSeriesType("cmo",a),a}),s(t,"Stock/Indicators/DEMA/DEMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{getEMA(e,t,s,i,o,a){return super.calculateEma(a||[],e,void 0===o?1:o,this.EMApercent,t,void 0===i?-1:i,s)}getValues(e,t){let s=t.period,a=[],r=2*s,n=e.xData,l=e.yData,p=l?l.length:0,u=[],d=[],h=[],c=0,g=0,y,m,f,D,x=-1,S,v=0;if(this.EMApercent=2/(s+1),!(p<2*s-1)){for(o(l[0])&&(x=t.index?t.index:0),v=(c=super.accumulatePeriodPoints(s,x,l))/s,c=0,D=s;D<p+2;D++)D<p+1&&(g=this.getEMA(l,m,v,x,D)[1],a.push(g)),m=g,D<r?c+=g:(D===r&&(v=c/s),g=a[D-s-1],y=this.getEMA([g],f,v)[1],S=[n[D-2],i(2*g-y)],u.push(S),d.push(S[0]),h.push(S[1]),f=y);return{values:u,xData:d,yData:h}}}}return r.defaultOptions=a(s.defaultOptions),e.registerSeriesType("dema",r),r}),s(t,"Stock/Indicators/TEMA/TEMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{getEMA(e,t,s,i,o,a){return super.calculateEma(a||[],e,void 0===o?1:o,this.EMApercent,t,void 0===i?-1:i,s)}getTemaPoint(e,t,s,o){return[e[o-3],i(3*s.level1-3*s.level2+s.level3)]}getValues(e,t){let s=t.period,i=2*s,a=3*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],d=[],h=[],c=[],g={},y=-1,m=0,f=0,D,x,S,v;if(this.EMApercent=2/(s+1),!(l<3*s-2)){for(o(n[0])&&(y=t.index?t.index:0),f=(m=super.accumulatePeriodPoints(s,y,n))/s,m=0,S=s;S<l+3;S++)S<l+1&&(g.level1=this.getEMA(n,D,f,y,S)[1],h.push(g.level1)),D=g.level1,S<i?m+=g.level1:(S===i&&(f=m/s,m=0),g.level1=h[S-s-1],g.level2=this.getEMA([g.level1],x,f)[1],c.push(g.level2),x=g.level2,S<a?m+=g.level2:(S===a&&(f=m/s),S===l+1&&(g.level1=h[S-s-1],g.level2=this.getEMA([g.level1],x,f)[1],c.push(g.level2)),g.level1=h[S-s-2],g.level2=c[S-2*s-1],g.level3=this.getEMA([g.level2],g.prevLevel3,f)[1],(v=this.getTemaPoint(r,a,g,S))&&(p.push(v),u.push(v[0]),d.push(v[1])),g.prevLevel3=g.level3));return{values:p,xData:u,yData:d}}}}return r.defaultOptions=a(s.defaultOptions),e.registerSeriesType("tema",r),r}),s(t,"Stock/Indicators/TRIX/TRIXIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{tema:s}=e.seriesTypes,{correctFloat:i,merge:o}=t;class a extends s{getTemaPoint(e,t,s,o){if(o>t)return[e[o-3],0!==s.prevLevel3?i(s.level3-s.prevLevel3)/s.prevLevel3*100:null]}}return a.defaultOptions=o(s.defaultOptions),e.registerSeriesType("trix",a),a}),s(t,"Stock/Indicators/APO/APOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{extend:i,merge:o,error:a}=t;class r extends s{getValues(e,t){let s,i;let o=t.periods,r=t.index,n=[],l=[],p=[];if(2!==o.length||o[1]<=o[0]){a('Error: "APO requires two periods. Notice, first period should be lower than the second one."');return}let u=super.getValues.call(this,e,{index:r,period:o[0]}),d=super.getValues.call(this,e,{index:r,period:o[1]});if(!u||!d)return;let h=o[1]-o[0];for(i=0;i<d.yData.length;i++)s=u.yData[i+h]-d.yData[i],n.push([d.xData[i],s]),l.push(d.xData[i]),p.push(s);return{values:n,xData:l,yData:p}}}return r.defaultOptions=o(s.defaultOptions,{params:{period:void 0,periods:[10,20]}}),i(r.prototype,{nameBase:"APO",nameComponents:["periods"]}),e.registerSeriesType("apo",r),r}),s(t,"Stock/Indicators/IKH/IKHIndicator.js",[t["Extensions/DataGrouping/ApproximationRegistry.js"],t["Core/Color/Color.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i){let{parse:o}=t,{sma:a}=s.seriesTypes,{defined:r,extend:n,isArray:l,isNumber:p,getClosestDistance:u,merge:d,objectEach:h}=i;function c(e){return{high:e.reduce(function(e,t){return Math.max(e,t[1])},-1/0),low:e.reduce(function(e,t){return Math.min(e,t[2])},1/0)}}function g(e){let t=e.indicator;t.points=e.points,t.nextPoints=e.nextPoints,t.color=e.color,t.options=d(e.options.senkouSpan.styles,e.gap),t.graph=e.graph,t.fillGraph=!0,s.seriesTypes.sma.prototype.drawGraph.call(t)}class y extends a{constructor(){super(...arguments),this.data=[],this.options={},this.points=[],this.graphCollection=[]}init(){super.init.apply(this,arguments),this.options=d({tenkanLine:{styles:{lineColor:this.color}},kijunLine:{styles:{lineColor:this.color}},chikouLine:{styles:{lineColor:this.color}},senkouSpanA:{styles:{lineColor:this.color,fill:o(this.color).setOpacity(.5).get()}},senkouSpanB:{styles:{lineColor:this.color,fill:o(this.color).setOpacity(.5).get()}},senkouSpan:{styles:{fill:o(this.color).setOpacity(.2).get()}}},this.options)}toYData(e){return[e.tenkanSen,e.kijunSen,e.chikouSpan,e.senkouSpanA,e.senkouSpanB]}translate(){for(let e of(s.seriesTypes.sma.prototype.translate.apply(this),this.points))for(let t of this.pointArrayMap){let s=e[t];p(s)&&(e["plot"+t]=this.yAxis.toPixels(s,!0),e.plotY=e["plot"+t],e.tooltipPos=[e.plotX,e["plot"+t]],e.isNull=!1)}}drawGraph(){let e=this,t=e.points,i=e.options,o=e.graph,a=e.color,n={options:{gapSize:i.gapSize}},l=e.pointArrayMap.length,p=[[],[],[],[],[],[]],u={tenkanLine:p[0],kijunLine:p[1],chikouLine:p[2],senkouSpanA:p[3],senkouSpanB:p[4],senkouSpan:p[5]},c=[],y=e.options.senkouSpan,m=y.color||y.styles.fill,f=y.negativeColor,D=[[],[]],x=[[],[]],S=t.length,v=0,C,A,I,T,P,k,j,b,M,L,V,O,R;for(e.ikhMap=u;S--;){for(I=0,A=t[S];I<l;I++)r(A[C=e.pointArrayMap[I]])&&p[I].push({plotX:A.plotX,plotY:A["plot"+C],isNull:!1});if(f&&S!==t.length-1){let e=u.senkouSpanB.length-1,t=function(e,t,s,i){if(e&&t&&s&&i){let o=t.plotX-e.plotX,a=t.plotY-e.plotY,r=i.plotX-s.plotX,n=i.plotY-s.plotY,l=e.plotX-s.plotX,p=e.plotY-s.plotY,u=(-a*l+o*p)/(-r*a+o*n),d=(r*p-n*l)/(-r*a+o*n);if(u>=0&&u<=1&&d>=0&&d<=1)return{plotX:e.plotX+d*o,plotY:e.plotY+d*a}}}(u.senkouSpanA[e-1],u.senkouSpanA[e],u.senkouSpanB[e-1],u.senkouSpanB[e]);if(t){let s={plotX:t.plotX,plotY:t.plotY,isNull:!1,intersectPoint:!0};u.senkouSpanA.splice(e,0,s),u.senkouSpanB.splice(e,0,s),c.push(e)}}}if(h(u,(t,o)=>{i[o]&&"senkouSpan"!==o&&(e.points=p[v],e.options=d(i[o].styles,n),e.graph=e["graph"+o],e.fillGraph=!1,e.color=a,s.seriesTypes.sma.prototype.drawGraph.call(e),e["graph"+o]=e.graph),v++}),e.graphCollection)for(let t of e.graphCollection)e[t].destroy(),delete e[t];if(e.graphCollection=[],f&&u.senkouSpanA[0]&&u.senkouSpanB[0]){for(c.unshift(0),c.push(u.senkouSpanA.length-1),O=0;O<c.length-1;O++)if(T=c[O],P=c[O+1],k=u.senkouSpanB.slice(T,P+1),j=u.senkouSpanA.slice(T,P+1),Math.floor(k.length/2)>=1){let e=Math.floor(k.length/2);if(k[e].plotY===j[e].plotY){for(R=0,b=0,M=0;R<k.length;R++)b+=k[R].plotY,M+=j[R].plotY;D[V=b>M?0:1]=D[V].concat(k),x[V]=x[V].concat(j)}else D[V=k[e].plotY>j[e].plotY?0:1]=D[V].concat(k),x[V]=x[V].concat(j)}else D[V=k[0].plotY>j[0].plotY?0:1]=D[V].concat(k),x[V]=x[V].concat(j);["graphsenkouSpanColor","graphsenkouSpanNegativeColor"].forEach(function(t,s){D[s].length&&x[s].length&&(L=0===s?m:f,g({indicator:e,points:D[s],nextPoints:x[s],color:L,options:i,gap:n,graph:e[t]}),e[t]=e.graph,e.graphCollection.push(t))})}else g({indicator:e,points:u.senkouSpanB,nextPoints:u.senkouSpanA,color:m,options:i,gap:n,graph:e.graphsenkouSpan}),e.graphsenkouSpan=e.graph;delete e.nextPoints,delete e.fillGraph,e.points=t,e.options=i,e.graph=o,e.color=a}getGraphPath(e){let t=[],i,o=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((i=s.seriesTypes.sma.prototype.getGraphPath.call(this,this.nextPoints))&&i.length){i[0][0]="L",t=s.seriesTypes.sma.prototype.getGraphPath.call(this,e),o=i.slice(0,t.length);for(let e=o.length-1;e>=0;e--)t.push(o[e])}}else t=s.seriesTypes.sma.prototype.getGraphPath.apply(this,arguments);return t}getValues(e,t){let s,i,o,a,r,n,p,d,h,g;let y=t.period,m=t.periodTenkan,f=t.periodSenkouSpanB,D=e.xData,x=e.yData,S=e.xAxis,v=x&&x.length||0,C=u(S.series.map(e=>e.xData||[])),A=[],I=[];if(D.length<=y||!l(x[0])||4!==x[0].length)return;let T=D[0]-y*C;for(r=0;r<y;r++)I.push(T+r*C);for(r=0;r<v;r++)r>=m&&(n=((i=c(x.slice(r-m,r))).high+i.low)/2),r>=y&&(h=(n+(p=((o=c(x.slice(r-y,r))).high+o.low)/2))/2),r>=f&&(g=((a=c(x.slice(r-f,r))).high+a.low)/2),d=x[r][3],s=D[r],void 0===A[r]&&(A[r]=[]),void 0===A[r+y-1]&&(A[r+y-1]=[]),A[r+y-1][0]=n,A[r+y-1][1]=p,A[r+y-1][2]=void 0,void 0===A[r+1]&&(A[r+1]=[]),A[r+1][2]=d,r<=y&&(A[r+y-1][3]=void 0,A[r+y-1][4]=void 0),void 0===A[r+2*y-2]&&(A[r+2*y-2]=[]),A[r+2*y-2][3]=h,A[r+2*y-2][4]=g,I.push(s);for(r=1;r<=y;r++)I.push(s+r*C);return{values:A,xData:I,yData:A}}}return y.defaultOptions=d(a.defaultOptions,{params:{index:void 0,period:26,periodTenkan:9,periodSenkouSpanB:52},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>TENKAN SEN: {point.tenkanSen:.3f}<br/>KIJUN SEN: {point.kijunSen:.3f}<br/>CHIKOU SPAN: {point.chikouSpan:.3f}<br/>SENKOU SPAN A: {point.senkouSpanA:.3f}<br/>SENKOU SPAN B: {point.senkouSpanB:.3f}<br/>'},tenkanLine:{styles:{lineWidth:1,lineColor:void 0}},kijunLine:{styles:{lineWidth:1,lineColor:void 0}},chikouLine:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanA:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanB:{styles:{lineWidth:1,lineColor:void 0}},senkouSpan:{styles:{fill:"rgba(255, 0, 0, 0.5)"}},dataGrouping:{approximation:"ichimoku-averages"}}),n(y.prototype,{pointArrayMap:["tenkanSen","kijunSen","chikouSpan","senkouSpanA","senkouSpanB"],pointValKey:"tenkanSen",nameComponents:["periodSenkouSpanB","period","periodTenkan"]}),e["ichimoku-averages"]=function(){let t;let s=[];return[].forEach.call(arguments,function(i,o){s.push(e.average(i)),t=!t&&void 0===s[o]}),t?void 0:s},s.registerSeriesType("ikh",y),y}),s(t,"Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r}=s;class n extends i{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,s){let i,a,r,n,l,p,u;let d=s.period,h=s.periodATR,c=s.multiplierATR,g=s.index,y=e.yData,m=y?y.length:0,f=[],D=t.seriesTypes.ema.prototype.getValues(e,{period:d,index:g}),x=t.seriesTypes.atr.prototype.getValues(e,{period:h}),S=[],v=[];if(!(m<d)){for(u=d;u<=m;u++)l=D.values[u-d],p=x.values[u-h],n=l[0],a=o(l[1]+c*p[1]),r=o(l[1]-c*p[1]),i=l[1],f.push([n,a,i,r]),S.push(n),v.push([a,i,r]);return{values:f,xData:S,yData:v}}}}return n.defaultOptions=r(i.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),a(n.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("keltnerchannels",n),n}),s(t,"Stock/Indicators/Klinger/KlingerIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{ema:i,sma:o}=t.seriesTypes,{correctFloat:a,error:r,extend:n,isArray:l,merge:p}=s;class u extends o{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,s=this.options,i=this.linkedParent,o=l(e)&&4===e.length,a=this.volumeSeries||(this.volumeSeries=t.get(s.params.volumeSeriesID));return a||r("Series "+s.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,i.chart),!!([i,a].every(function(e){return e&&e.xData&&e.xData.length>=s.params.slowAvgPeriod})&&o)}getCM(e,t,s,i,o){return a(t+(s===i?e:o))}getDM(e,t){return a(e-t)}getVolumeForce(e){let t=[],s=0,i,o=1,a=0,r=e[0][1]-e[0][2],n=0,l;for(;o<e.length;o++)l=this.calculateTrend(e,o),i=this.getDM(e[o][1],e[o][2]),s=this.getCM(a,i,l,n,r),t.push([this.volumeSeries.yData[o]*l*Math.abs(2*(i/s-1))*100]),n=l,a=s,r=i;return t}getEMA(e,t,s,o,a,r,n){return i.prototype.calculateEma(n||[],e,void 0===r?1:r,o,t,void 0===a?-1:a,s)}getSMA(e,t,s){return i.prototype.accumulatePeriodPoints(e,t,s)/e}getValues(e,t){let s=[],i=e.xData,o=e.yData,r=[],n=[],l=[],p,u=0,d=0,h,c,g,y=null;if(!this.isValidData(o[0]))return;let m=this.getVolumeForce(o),f=this.getSMA(t.fastAvgPeriod,0,m),D=this.getSMA(t.slowAvgPeriod,0,m),x=2/(t.fastAvgPeriod+1),S=2/(t.slowAvgPeriod+1);for(;u<o.length;u++)u>=t.fastAvgPeriod&&(c=d=this.getEMA(m,c,f,x,0,u,i)[1]),u>=t.slowAvgPeriod&&(g=h=this.getEMA(m,g,D,S,0,u,i)[1],l.push(p=a(d-h)),l.length>=t.signalPeriod&&(y=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),s.push([i[u],p,y]),r.push(i[u]),n.push([p,y]));return{values:s,xData:r,yData:n}}}return u.defaultOptions=p(o.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),n(u.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),e.compose(u),t.registerSeriesType("klinger",u),u}),s(t,"Stock/Indicators/MACD/MACDIndicator.js",[t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{noop:i}=e,{column:o,sma:a}=t.seriesTypes,{extend:r,correctFloat:n,defined:l,merge:p}=s;class u extends a{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments);let e=this.color;this.options&&(l(this.colorIndex)&&(this.options.signalLine&&this.options.signalLine.styles&&!this.options.signalLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.signalLine.styles.lineColor=this.color),this.options.macdLine&&this.options.macdLine.styles&&!this.options.macdLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.macdLine.styles.lineColor=this.color)),this.macdZones={zones:this.options.macdLine.zones,startIndex:0},this.signalZones={zones:this.macdZones.zones.concat(this.options.signalLine.zones),startIndex:this.macdZones.zones.length}),this.color=e}toYData(e){return[e.y,e.signal,e.MACD]}translate(){let t=this,s=["plotSignal","plotMACD"];e.seriesTypes.column.prototype.translate.apply(t),t.points.forEach(function(e){[e.signal,e.MACD].forEach(function(i,o){null!==i&&(e[s[o]]=t.yAxis.toPixels(i,!0))})})}destroy(){this.graph=null,this.graphmacd=this.graphmacd&&this.graphmacd.destroy(),this.graphsignal=this.graphsignal&&this.graphsignal.destroy(),t.seriesTypes.sma.prototype.destroy.apply(this,arguments)}drawGraph(){let e=this,s=e.points,i=e.options,o=e.zones,a={options:{gapSize:i.gapSize}},r=[[],[]],n,u=s.length;for(;u--;)l((n=s[u]).plotMACD)&&r[0].push({plotX:n.plotX,plotY:n.plotMACD,isNull:!l(n.plotMACD)}),l(n.plotSignal)&&r[1].push({plotX:n.plotX,plotY:n.plotSignal,isNull:!l(n.plotMACD)});["macd","signal"].forEach((s,o)=>{e.points=r[o],e.options=p(i[`${s}Line`]?.styles||{},a),e.graph=e[`graph${s}`],e.zones=(e[`${s}Zones`].zones||[]).slice(e[`${s}Zones`].startIndex||0),t.seriesTypes.sma.prototype.drawGraph.call(e),e[`graph${s}`]=e.graph}),e.points=s,e.options=i,e.zones=o}applyZones(){let e=this.zones;this.zones=this.signalZones.zones,t.seriesTypes.sma.prototype.applyZones.call(this),this.graphmacd&&this.options.macdLine.zones.length&&this.graphmacd.hide(),this.zones=e}getValues(e,s){let i=s.longPeriod-s.shortPeriod,o=[],a=[],r=[],p,u,d,h=0,c=[];if(!(e.xData.length<s.longPeriod+s.signalPeriod)){for(d=0,p=t.seriesTypes.ema.prototype.getValues(e,{period:s.shortPeriod,index:s.index}),u=t.seriesTypes.ema.prototype.getValues(e,{period:s.longPeriod,index:s.index}),p=p.values,u=u.values;d<=p.length;d++)l(u[d])&&l(u[d][1])&&l(p[d+i])&&l(p[d+i][0])&&o.push([p[d+i][0],0,null,p[d+i][1]-u[d][1]]);for(d=0;d<o.length;d++)a.push(o[d][0]),r.push([0,null,o[d][3]]);for(d=0,c=(c=t.seriesTypes.ema.prototype.getValues({xData:a,yData:r},{period:s.signalPeriod,index:2})).values;d<o.length;d++)o[d][0]>=c[0][0]&&(o[d][2]=c[h][1],r[d]=[0,c[h][1],o[d][3]],null===o[d][3]?(o[d][1]=0,r[d][0]=0):(o[d][1]=n(o[d][3]-c[h][1]),r[d][0]=n(o[d][3]-c[h][1])),h++);return{values:o,xData:a,yData:r}}}}return u.defaultOptions=p(a.defaultOptions,{params:{shortPeriod:12,longPeriod:26,signalPeriod:9,period:26},signalLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},macdLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},threshold:0,groupPadding:.1,pointPadding:.1,crisp:!1,states:{hover:{halo:{size:0}}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Value: {point.MACD}<br/>Signal: {point.signal}<br/>Histogram: {point.y}<br/>'},dataGrouping:{approximation:"averages"},minPointLength:0}),r(u.prototype,{nameComponents:["longPeriod","shortPeriod","signalPeriod"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:i,getColumnMetrics:e.seriesTypes.column.prototype.getColumnMetrics,crispCol:e.seriesTypes.column.prototype.crispCol,drawPoints:e.seriesTypes.column.prototype.drawPoints}),t.registerSeriesType("macd",u),u}),s(t,"Stock/Indicators/MFI/MFIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,error:a,isArray:r}=t;function n(e){return e.reduce(function(e,t){return e+t})}function l(e){return(e[1]+e[2]+e[3])/3}class p extends s{getValues(e,t){let s=t.period,i=e.xData,o=e.yData,p=o?o.length:0,u=t.decimals,d=e.chart.get(t.volumeSeriesID),h=d&&d.yData,c=[],g=[],y=[],m=[],f=[],D,x,S,v,C,A,I=!1,T=1;if(!d){a("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);return}if(!(i.length<=s)&&r(o[0])&&4===o[0].length&&h){for(D=l(o[T]);T<s+1;)x=D,I=(D=l(o[T]))>=x,S=D*h[T],m.push(I?S:0),f.push(I?0:S),T++;for(A=T-1;A<p;A++)A>T-1&&(m.shift(),f.shift(),x=D,I=(D=l(o[A]))>x,S=D*h[A],m.push(I?S:0),f.push(I?0:S)),v=n(f),C=parseFloat((100-100/(1+n(m)/v)).toFixed(u)),c.push([i[A],C]),g.push(i[A]),y.push(C);return{values:c,xData:g,yData:y}}}}return p.defaultOptions=o(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",decimals:4}}),i(p.prototype,{nameBase:"Money Flow Index"}),e.registerSeriesType("mfi",p),p}),s(t,"Stock/Indicators/Momentum/MomentumIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,isArray:o,merge:a}=t;function r(e,t,s,i,o){let a=t[s-1][o]-t[s-i-1][o];return[e[s-1],a]}class n extends s{getValues(e,t){let s,i;let a=t.period,n=t.index,l=e.xData,p=e.yData,u=p?p.length:0,d=[],h=[],c=[];if(!(l.length<=a)&&o(p[0])){for(s=a+1;s<u;s++)i=r(l,p,s,a,n),d.push(i),h.push(i[0]),c.push(i[1]);return i=r(l,p,s,a,n),d.push(i),h.push(i[0]),c.push(i[1]),{values:d,xData:h,yData:c}}}}return n.defaultOptions=a(s.defaultOptions,{params:{index:3}}),i(n.prototype,{nameBase:"Momentum"}),e.registerSeriesType("momentum",n),n}),s(t,"Stock/Indicators/NATR/NATRIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{atr:s}=e.seriesTypes,{merge:i}=t;class o extends s{getValues(e,t){let s=super.getValues.apply(this,arguments),i=s.values.length,o=e.yData,a=0,r=t.period-1;if(s){for(;a<i;a++)s.yData[a]=s.values[a][1]/o[r][3]*100,s.values[a][1]=s.yData[a],r++;return s}}}return o.defaultOptions=i(s.defaultOptions,{tooltip:{valueSuffix:"%"}}),e.registerSeriesType("natr",o),o}),s(t,"Stock/Indicators/OBV/OBVIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,error:o,extend:a,merge:r}=t;class n extends s{getValues(e,t){let s=e.chart.get(t.volumeSeriesID),a=e.xData,r=e.yData,n=[],l=[],p=[],u=!i(r[0]),d=[],h=1,c=0,g=0,y=0,m=0,f;if(s)for(f=s.yData,d=[a[0],c],y=u?r[0][3]:r[0],n.push(d),l.push(a[0]),p.push(d[1]);h<r.length;h++)g=(m=u?r[h][3]:r[h])>y?c+f[h]:m===y?c:c-f[h],d=[a[h],g],c=g,y=m,n.push(d),l.push(a[h]),p.push(d[1]);else{o("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);return}return{values:n,xData:l,yData:p}}}return n.defaultOptions=r(s.defaultOptions,{marker:{enabled:!1},params:{index:void 0,period:void 0,volumeSeriesID:"volume"},tooltip:{valueDecimals:0}}),a(n.prototype,{nameComponents:void 0}),e.registerSeriesType("obv",n),n}),s(t,"Stock/Indicators/PivotPoints/PivotPointsPoint.js",[t["Core/Series/SeriesRegistry.js"]],function(e){let t=e.seriesTypes.sma.prototype.pointClass;function s(t,s){let i=t.series.pointArrayMap,o,a=i.length;for(e.seriesTypes.sma.prototype.pointClass.prototype[s].call(t);a--;)t[o="dataLabel"+i[a]]&&t[o].element&&t[o].destroy(),t[o]=null}return class extends t{destroyElements(){s(this,"destroyElements")}destroy(){s(this,"destroyElements")}}}),s(t,"Stock/Indicators/PivotPoints/PivotPointsIndicator.js",[t["Stock/Indicators/PivotPoints/PivotPointsPoint.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{merge:o,extend:a,defined:r,isArray:n}=s;class l extends i{toYData(e){return[e.P]}translate(){let e=this;super.translate.apply(e),e.points.forEach(function(t){e.pointArrayMap.forEach(function(s){r(t[s])&&(t["plot"+s]=e.yAxis.toPixels(t[s],!0))})}),e.plotEndPoint=e.xAxis.toPixels(e.endPoint,!0)}getGraphPath(e){let t=this,s=[[],[],[],[],[],[],[],[],[]],i=t.pointArrayMap.length,o=t.plotEndPoint,a=[],n,l,p=e.length,u;for(;p--;){for(u=0,l=e[p];u<i;u++)r(l[n=t.pointArrayMap[u]])&&s[u].push({plotX:l.plotX,plotY:l["plot"+n],isNull:!1},{plotX:o,plotY:l["plot"+n],isNull:!1},{plotX:o,plotY:null,isNull:!0});o=l.plotX}return s.forEach(e=>{a=a.concat(super.getGraphPath.call(t,e))}),a}drawDataLabels(){let e,t,s,i;let o=this,a=o.pointArrayMap;o.options.dataLabels.enabled&&(t=o.points.length,a.concat([!1]).forEach((r,n)=>{for(i=t;i--;)s=o.points[i],r?(s.y=s[r],s.pivotLine=r,s.plotY=s["plot"+r],e=s["dataLabel"+r],n&&(s["dataLabel"+a[n-1]]=s.dataLabel),s.dataLabels||(s.dataLabels=[]),s.dataLabels[0]=s.dataLabel=e=e&&e.element?e:null):s["dataLabel"+a[n-1]]=s.dataLabel;super.drawDataLabels.call(o)}))}getValues(e,t){let s,i,o,a,r,l,p;let u=t.period,d=e.xData,h=e.yData,c=h?h.length:0,g=this[t.algorithm+"Placement"],y=[],m=[],f=[];if(!(d.length<u)&&n(h[0])&&4===h[0].length){for(p=u+1;p<=c+u;p+=u)o=d.slice(p-u-1,p),a=h.slice(p-u-1,p),i=o.length,s=o[i-1],l=g(this.getPivotAndHLC(a)),r=y.push([s].concat(l)),m.push(s),f.push(y[r-1].slice(1));return this.endPoint=o[0]+(s-o[0])/i*u,{values:y,xData:m,yData:f}}}getPivotAndHLC(e){let t=e[e.length-1][3],s=-1/0,i=1/0;return e.forEach(function(e){s=Math.max(s,e[1]),i=Math.min(i,e[2])}),[(s+i+t)/3,s,i,t]}standardPlacement(e){let t=e[1]-e[2];return[null,null,e[0]+t,2*e[0]-e[2],e[0],2*e[0]-e[1],e[0]-t,null,null]}camarillaPlacement(e){let t=e[1]-e[2];return[e[3]+1.5*t,e[3]+1.25*t,e[3]+1.1666*t,e[3]+1.0833*t,e[0],e[3]-1.0833*t,e[3]-1.1666*t,e[3]-1.25*t,e[3]-1.5*t]}fibonacciPlacement(e){let t=e[1]-e[2];return[null,e[0]+t,e[0]+.618*t,e[0]+.382*t,e[0],e[0]-.382*t,e[0]-.618*t,e[0]-t,null]}}return l.defaultOptions=o(i.defaultOptions,{params:{index:void 0,period:28,algorithm:"standard"},marker:{enabled:!1},enableMouseTracking:!1,dataLabels:{enabled:!0,format:"{point.pivotLine}"},dataGrouping:{approximation:"averages"}}),a(l.prototype,{nameBase:"Pivot Points",pointArrayMap:["R4","R3","R2","R1","P","S1","S2","S3","S4"],pointValKey:"P",pointClass:e}),t.registerSeriesType("pivotpoints",l),l}),s(t,"Stock/Indicators/PPO/PPOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,extend:o,merge:a,error:r}=t;class n extends s{getValues(e,t){let s,o;let a=t.periods,n=t.index,l=[],p=[],u=[];if(2!==a.length||a[1]<=a[0]){r('Error: "PPO requires two periods. Notice, first period should be lower than the second one."');return}let d=super.getValues.call(this,e,{index:n,period:a[0]}),h=super.getValues.call(this,e,{index:n,period:a[1]});if(!d||!h)return;let c=a[1]-a[0];for(o=0;o<h.yData.length;o++)s=i((d.yData[o+c]-h.yData[o])/h.yData[o]*100),l.push([h.xData[o],s]),p.push(h.xData[o]),u.push(s);return{values:l,xData:p,yData:u}}}return n.defaultOptions=a(s.defaultOptions,{params:{period:void 0,periods:[12,26]}}),o(n.prototype,{nameBase:"PPO",nameComponents:["periods"]}),e.registerSeriesType("ppo",n),n}),s(t,"Stock/Indicators/ArrayUtilities.js",[],function(){return{getArrayExtremes:function(e,t,s){return e.reduce((e,i)=>[Math.min(e[0],i[t]),Math.max(e[1],i[s])],[Number.MAX_VALUE,-Number.MAX_VALUE])}}}),s(t,"Stock/Indicators/PC/PCIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Color/Palettes.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i,o){let{sma:a}=i.seriesTypes,{merge:r,extend:n}=o;class l extends a{getValues(t,s){let i,o,a,r,n,l,p;let u=s.period,d=t.xData,h=t.yData,c=h?h.length:0,g=[],y=[],m=[];if(!(c<u)){for(p=u;p<=c;p++)r=d[p-1],n=h.slice(p-u,p),i=((o=(l=e.getArrayExtremes(n,2,1))[1])+(a=l[0]))/2,g.push([r,o,i,a]),y.push(r),m.push([o,i,a]);return{values:g,xData:y,yData:m}}}}return l.defaultOptions=r(a.defaultOptions,{params:{index:void 0,period:20},lineWidth:1,topLine:{styles:{lineColor:s.colors[2],lineWidth:1}},bottomLine:{styles:{lineColor:s.colors[8],lineWidth:1}},dataGrouping:{approximation:"averages"}}),n(l.prototype,{areaLinesNames:["top","bottom"],nameBase:"Price Channel",nameComponents:["period"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),t.compose(l),i.registerSeriesType("pc",l),l}),s(t,"Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{init(){super.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,i,o,r,n,l,p,u;let d=t.period,h=t.topBand,c=t.bottomBand,g=e.xData,y=e.yData,m=y?y.length:0,f=[],D=[],x=[];if(!(g.length<d)&&a(y[0])&&4===y[0].length){for(u=d;u<=m;u++)n=g.slice(u-d,u),l=y.slice(u-d,u),r=(p=super.getValues({xData:n,yData:l},t)).xData[0],i=(s=p.yData[0])*(1+h),o=s*(1-c),f.push([r,i,s,o]),D.push(r),x.push([i,s,o]);return{values:f,xData:D,yData:x}}}}return n.defaultOptions=r(i.defaultOptions,{marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},params:{period:20,topBand:.1,bottomBand:.1},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),o(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","topBand","bottomBand"],nameBase:"Price envelopes",pointArrayMap:["top","middle","bottom"],parallelArrays:["x","y","top","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("priceenvelopes",n),n}),s(t,"Stock/Indicators/PSAR/PSARIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i}=t;function o(e,t){return parseFloat(e.toFixed(t))}class a extends s{constructor(){super(...arguments),this.nameComponents=void 0}getValues(e,t){let s=e.xData,i=e.yData,a=t.maxAccelerationFactor,r=t.increment,n=t.initialAccelerationFactor,l=t.decimals,p=t.index,u=[],d=[],h=[],c=t.initialAccelerationFactor,g,y=i[0][1],m,f,D,x=1,S,v,C,A,I=i[0][2],T,P,k,j;if(!(p>=i.length)){for(j=0;j<p;j++)y=Math.max(i[j][1],y),I=Math.min(i[j][2],o(I,l));for(g=i[j][1]>I?1:-1,m=y-I,f=(c=t.initialAccelerationFactor)*m,u.push([s[p],I]),d.push(s[p]),h.push(o(I,l)),j=p+1;j<i.length;j++)if(S=i[j-1][2],v=i[j-2][2],C=i[j-1][1],A=i[j-2][1],P=i[j][1],k=i[j][2],null!==v&&null!==A&&null!==S&&null!==C&&null!==P&&null!==k){var b,M,L,V,O,R,E,w,B,U,N,G,W;O=g,R=x,E=I,w=f,B=y,I=O===R?1===O?E+w<Math.min(v,S)?E+w:Math.min(v,S):E+w>Math.max(A,C)?E+w:Math.max(A,C):B,b=g,M=y,T=1===b?P>M?P:M:k<M?k:M,L=x,V=I,U=D=1===L&&k>V||-1===L&&P>V?1:-1,N=g,G=y,W=c,f=(c=U===N?1===U&&T>G||-1===U&&T<G?W===a?a:o(W+r,2):W:n)*(m=T-I),u.push([s[j],o(I,l)]),d.push(s[j]),h.push(o(I,l)),x=g,g=D,y=T}return{values:u,xData:d,yData:h}}}}return a.defaultOptions=i(s.defaultOptions,{lineWidth:0,marker:{enabled:!0},states:{hover:{lineWidthPlus:0}},params:{period:void 0,initialAccelerationFactor:.02,maxAccelerationFactor:.2,increment:.02,index:2,decimals:4}}),e.registerSeriesType("psar",a),a}),s(t,"Stock/Indicators/ROC/ROCIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o,extend:a}=t;class r extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u,d=-1,h;if(!(o.length<=s)){for(i(a[0])&&(d=t.index),u=s;u<r;u++)h=function(e,t,s,i,o){let a,r;return r=o<0?(a=t[s-i])?(t[s]-a)/a*100:null:(a=t[s-i][o])?(t[s][o]-a)/a*100:null,[e[s],r]}(o,a,u,s,d),n.push(h),l.push(h[0]),p.push(h[1]);return{values:n,xData:l,yData:p}}}}return r.defaultOptions=o(s.defaultOptions,{params:{index:3,period:9}}),a(r.prototype,{nameBase:"Rate of Change"}),e.registerSeriesType("roc",r),r}),s(t,"Stock/Indicators/RSI/RSIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,merge:o}=t;function a(e,t){return parseFloat(e.toFixed(t))}class r extends s{getValues(e,t){let s=t.period,o=e.xData,r=e.yData,n=r?r.length:0,l=t.decimals,p=[],u=[],d=[],h=0,c=0,g=t.index,y=1,m,f,D,x,S,v;if(!(o.length<s)){for(i(r[0])?v=r:(g=Math.min(g,r[0].length-1),v=r.map(e=>e[g]));y<s;)(f=a(v[y]-v[y-1],l))>0?h+=f:c+=Math.abs(f),y++;for(D=a(h/(s-1),l),x=a(c/(s-1),l),S=y;S<n;S++)(f=a(v[S]-v[S-1],l))>0?(h=f,c=0):(h=0,c=Math.abs(f)),D=a((D*(s-1)+h)/s,l),m=0===(x=a((x*(s-1)+c)/s,l))?100:0===D?0:a(100-100/(1+D/x),l),p.push([o[S],m]),u.push(o[S]),d.push(m);return{values:p,xData:u,yData:d}}}}return r.defaultOptions=o(s.defaultOptions,{params:{decimals:4,index:3}}),e.registerSeriesType("rsi",r),r}),s(t,"Stock/Indicators/Stochastic/StochasticIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i){let{sma:o}=s.seriesTypes,{extend:a,isArray:r,merge:n}=i;class l extends o{init(){super.init.apply(this,arguments),this.options=n({smoothedLine:{styles:{lineColor:this.color}}},this.options)}getValues(t,s){let i=s.periods[0],o=s.periods[1],a=t.xData,n=t.yData,l=n?n.length:0,p=[],u=[],d=[],h,c,g,y=null,m,f;if(l<i||!r(n[0])||4!==n[0].length)return;let D=!0,x=0;for(f=i-1;f<l;f++){if(h=n.slice(f-i+1,f+1),c=(m=e.getArrayExtremes(h,2,1))[0],isNaN(g=(n[f][3]-c)/(m[1]-c)*100)&&D){x++;continue}D&&!isNaN(g)&&(D=!1);let t=u.push(a[f]);isNaN(g)?d.push([d[t-2]&&"number"==typeof d[t-2][0]?d[t-2][0]:null,null]):d.push([g,null]),f>=x+(i-1)+(o-1)&&(y=super.getValues({xData:u.slice(-o),yData:d.slice(-o)},{period:o}).yData[0]),p.push([a[f],g,y]),d[t-1][1]=y}return{values:p,xData:u,yData:d}}}return l.defaultOptions=n(o.defaultOptions,{params:{index:void 0,period:void 0,periods:[14,3]},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>%K: {point.y}<br/>%D: {point.smoothed}<br/>'},smoothedLine:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),a(l.prototype,{areaLinesNames:[],nameComponents:["periods"],nameBase:"Stochastic",pointArrayMap:["y","smoothed"],parallelArrays:["x","y","smoothed"],pointValKey:"y",linesApiNames:["smoothedLine"]}),t.compose(l),s.registerSeriesType("stochastic",l),l}),s(t,"Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s,stochastic:i}=e.seriesTypes,{extend:o,merge:a}=t;class r extends i{getValues(e,t){let i=t.periods,o=super.getValues.call(this,e,t),a={values:[],xData:[],yData:[]};if(!o)return;a.xData=o.xData.slice(i[1]-1);let r=o.yData.slice(i[1]-1),n=s.prototype.getValues.call(this,{xData:a.xData,yData:r},{index:1,period:i[2]});if(n){for(let e=0,t=a.xData.length;e<t;e++)a.yData[e]=[r[e][1],n.yData[e-i[2]+1]||null],a.values[e]=[a.xData[e],r[e][1],n.yData[e-i[2]+1]||null];return a}}}return r.defaultOptions=a(i.defaultOptions,{params:{periods:[14,3,3]}}),o(r.prototype,{nameBase:"Slow Stochastic"}),e.registerSeriesType("slowstochastic",r),r}),s(t,"Stock/Indicators/Supertrend/SupertrendIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{atr:s,sma:i}=e.seriesTypes,{addEvent:o,correctFloat:a,isArray:r,extend:n,merge:l,objectEach:p}=t;function u(e,t,s){return{index:t,close:e.yData[t][s],x:e.xData[t]}}class d extends i{init(){let e=this;super.init.apply(e,arguments);let t=o(this.chart.constructor,"afterLinkSeries",()=>{if(e.options){let t=e.options,s=e.linkedParent.options;t.cropThreshold=s.cropThreshold-(t.params.period-1)}t()},{order:1})}drawGraph(){let e=this,t=e.options,s=e.linkedParent,o=s?s.points:[],a=e.points,r=e.graph,n=o.length-a.length,d=n>0?n:0,h={options:{gapSize:t.gapSize}},c={top:[],bottom:[],intersect:[]},g={top:{styles:{lineWidth:t.lineWidth,lineColor:t.fallingTrendColor||t.color,dashStyle:t.dashStyle}},bottom:{styles:{lineWidth:t.lineWidth,lineColor:t.risingTrendColor||t.color,dashStyle:t.dashStyle}},intersect:t.changeTrendLine},y,m,f,D,x,S,v,C,A,I=a.length;for(;I--;)y=a[I],m=a[I-1],f=o[I-1+d],D=o[I-2+d],x=o[I+d],S=o[I+d+1],v=y.options.color,C={x:y.x,plotX:y.plotX,plotY:y.plotY,isNull:!1},!D&&f&&s.yData[f.index-1]&&(D=u(s,f.index-1,3)),!S&&x&&s.yData[x.index+1]&&(S=u(s,x.index+1,3)),!f&&D&&s.yData[D.index+1]?f=u(s,D.index+1,3):!f&&x&&s.yData[x.index-1]&&(f=u(s,x.index-1,3)),y&&f&&x&&D&&y.x!==f.x&&(y.x===x.x?(D=f,f=x):y.x===D.x?(f=D,D={close:s.yData[f.index-1][3],x:s.xData[f.index-1]}):S&&y.x===S.x&&(f=S,D=x)),m&&D&&f?(A={x:m.x,plotX:m.plotX,plotY:m.plotY,isNull:!1},y.y>=f.close&&m.y>=D.close?(y.color=v||t.fallingTrendColor||t.color,c.top.push(C)):y.y<f.close&&m.y<D.close?(y.color=v||t.risingTrendColor||t.color,c.bottom.push(C)):(c.intersect.push(C),c.intersect.push(A),c.intersect.push(l(A,{isNull:!0})),y.y>=f.close&&m.y<D.close?(y.color=v||t.fallingTrendColor||t.color,m.color=v||t.risingTrendColor||t.color,c.top.push(C),c.top.push(l(A,{isNull:!0}))):y.y<f.close&&m.y>=D.close&&(y.color=v||t.risingTrendColor||t.color,m.color=v||t.fallingTrendColor||t.color,c.bottom.push(C),c.bottom.push(l(A,{isNull:!0}))))):f&&(y.y>=f.close?(y.color=v||t.fallingTrendColor||t.color,c.top.push(C)):(y.color=v||t.risingTrendColor||t.color,c.bottom.push(C)));p(c,function(t,s){e.points=t,e.options=l(g[s].styles,h),e.graph=e["graph"+s+"Line"],i.prototype.drawGraph.call(e),e["graph"+s+"Line"]=e.graph}),e.points=a,e.options=t,e.graph=r}getValues(e,t){let i=t.period,o=t.multiplier,n=e.xData,l=e.yData,p=[],u=[],d=[],h=0===i?0:i-1,c=[],g=[],y=[],m,f,D,x,S,v,C,A,I;if(!(n.length<=i)&&r(l[0])&&4===l[0].length&&!(i<0)){for(I=0,y=s.prototype.getValues.call(this,e,{period:i}).yData;I<y.length;I++)A=l[h+I],C=l[h+I-1]||[],x=c[I-1],S=g[I-1],v=d[I-1],0===I&&(x=S=v=0),m=a((A[1]+A[2])/2+o*y[I]),f=a((A[1]+A[2])/2-o*y[I]),m<x||C[3]>x?c[I]=m:c[I]=x,f>S||C[3]<S?g[I]=f:g[I]=S,v===x&&A[3]<c[I]||v===S&&A[3]<g[I]?D=c[I]:(v===x&&A[3]>c[I]||v===S&&A[3]>g[I])&&(D=g[I]),p.push([n[h+I],D]),u.push(n[h+I]),d.push(D);return{values:p,xData:u,yData:d}}}}return d.defaultOptions=l(i.defaultOptions,{params:{index:void 0,multiplier:3,period:10},risingTrendColor:"#06b535",fallingTrendColor:"#f21313",changeTrendLine:{styles:{lineWidth:1,lineColor:"#333333",dashStyle:"LongDash"}}}),n(d.prototype,{nameBase:"Supertrend",nameComponents:["multiplier","period"]}),e.registerSeriesType("supertrend",d),d}),s(t,"Stock/Indicators/VBP/VBPPoint.js",[t["Core/Series/SeriesRegistry.js"]],function(e){let{sma:{prototype:{pointClass:t}}}=e.seriesTypes;return class extends t{destroy(){this.negativeGraphic&&(this.negativeGraphic=this.negativeGraphic.destroy()),super.destroy.apply(this,arguments)}}}),s(t,"Stock/Indicators/VBP/VBPIndicator.js",[t["Stock/Indicators/VBP/VBPPoint.js"],t["Core/Animation/AnimationUtilities.js"],t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i,o){let{animObject:a}=t,{noop:r}=s,{column:{prototype:n},sma:l}=i.seriesTypes,{addEvent:p,arrayMax:u,arrayMin:d,correctFloat:h,defined:c,error:g,extend:y,isArray:m,merge:f}=o,D=Math.abs;class x extends l{init(e,t){let s=this;delete t.data,super.init.apply(s,arguments);let i=p(this.chart.constructor,"afterLinkSeries",function(){if(s.options){let t=s.options.params,i=s.linkedParent,o=e.get(t.volumeSeriesID);s.addCustomEvents(i,o)}i()},{order:1});return s}addCustomEvents(e,t){let s=this,i=()=>{s.chart.redraw(),s.setData([]),s.zoneStarts=[],s.zoneLinesSVG&&(s.zoneLinesSVG=s.zoneLinesSVG.destroy())};return s.dataEventsToUnbind.push(p(e,"remove",function(){i()})),t&&s.dataEventsToUnbind.push(p(t,"remove",function(){i()})),s}animate(e){let t=this,s=t.chart.inverted,i=t.group,o={};if(!e&&i){let e=s?t.yAxis.top:t.xAxis.left;s?(i["forceAnimate:translateY"]=!0,o.translateY=e):(i["forceAnimate:translateX"]=!0,o.translateX=e),i.animate(o,y(a(t.options.animation),{step:function(e,s){t.group.attr({scaleX:Math.max(.001,s.pos)})}}))}}drawPoints(){this.options.volumeDivision.enabled&&(this.posNegVolume(!0,!0),n.drawPoints.apply(this,arguments),this.posNegVolume(!1,!1)),n.drawPoints.apply(this,arguments)}posNegVolume(e,t){let s=t?["positive","negative"]:["negative","positive"],i=this.options.volumeDivision,o=this.points.length,a=[],r=[],n=0,l,p,u,d;for(e?(this.posWidths=a,this.negWidths=r):(a=this.posWidths,r=this.negWidths);n<o;n++)(d=this.points[n])[s[0]+"Graphic"]=d.graphic,d.graphic=d[s[1]+"Graphic"],e&&(l=d.shapeArgs.width,(u=(p=this.priceZones[n]).wholeVolumeData)?(a.push(l/u*p.positiveVolumeData),r.push(l/u*p.negativeVolumeData)):(a.push(0),r.push(0))),d.color=t?i.styles.positiveColor:i.styles.negativeColor,d.shapeArgs.width=t?this.posWidths[n]:this.negWidths[n],d.shapeArgs.x=t?d.shapeArgs.x:this.posWidths[n]}translate(){let e=this,t=e.options,s=e.chart,i=e.yAxis,o=i.min,a=e.options.zoneLines,r=e.priceZones,l=0,p,d,c,g,y,m,f,x,S,v;n.translate.apply(e);let C=e.points;C.length&&(f=t.pointPadding<.5?t.pointPadding:.1,p=u(e.volumeDataArray),d=s.plotWidth/2,x=s.plotTop,c=D(i.toPixels(o)-i.toPixels(o+e.rangeStep)),y=D(i.toPixels(o)-i.toPixels(o+e.rangeStep)),f&&(g=D(c*(1-2*f)),l=D((c-g)/2),c=D(g)),C.forEach(function(t,s){S=t.barX=t.plotX=0,v=t.plotY=i.toPixels(r[s].start)-x-(i.reversed?c-y:c)-l,m=h(d*r[s].wholeVolumeData/p),t.pointWidth=m,t.shapeArgs=e.crispCol.apply(e,[S,v,m,c]),t.volumeNeg=r[s].negativeVolumeData,t.volumePos=r[s].positiveVolumeData,t.volumeAll=r[s].wholeVolumeData}),a.enabled&&e.drawZones(s,i,e.zoneStarts,a.styles))}getExtremes(){let e;let t=this.options.compare,s=this.options.cumulative;return this.options.compare?(this.options.compare=void 0,e=super.getExtremes(),this.options.compare=t):this.options.cumulative?(this.options.cumulative=!1,e=super.getExtremes(),this.options.cumulative=s):e=super.getExtremes(),e}getValues(e,t){let s=e.processedXData,i=e.processedYData,o=this.chart,a=t.ranges,r=[],n=[],l=[],p=o.get(t.volumeSeriesID);if(!e.chart){g("Base series not found! In case it has been removed, add a new one.",!0,o);return}if(!p||!p.processedXData.length){let e=p&&!p.processedXData.length?" does not contain any data.":" not found! Check `volumeSeriesID`.";g("Series "+t.volumeSeriesID+e,!0,o);return}let u=m(i[0]);if(u&&4!==i[0].length){g("Type of "+e.name+" series is different than line, OHLC or candlestick.",!0,o);return}return(this.priceZones=this.specifyZones(u,s,i,a,p)).forEach(function(e,t){r.push([e.x,e.end]),n.push(r[t][0]),l.push(r[t][1])}),{values:r,xData:n,yData:l}}specifyZones(e,t,s,i,o){let a=!!e&&function(e){let t=e.length,s=e[0][3],i=s,o=1,a;for(;o<t;o++)(a=e[o][3])<s&&(s=a),a>i&&(i=a);return{min:s,max:i}}(s),r=this.zoneStarts=[],n=[],l=a?a.min:d(s),p=a?a.max:u(s),g=0,y=1,m=this.linkedParent;if(!this.options.compareToMain&&m.dataModify&&(l=m.dataModify.modifyValue(l),p=m.dataModify.modifyValue(p)),!c(l)||!c(p))return this.points.length&&(this.setData([]),this.zoneStarts=[],this.zoneLinesSVG&&(this.zoneLinesSVG=this.zoneLinesSVG.destroy())),[];let f=this.rangeStep=h(p-l)/i;for(r.push(l);g<i-1;g++)r.push(h(r[g]+f));r.push(p);let D=r.length;for(;y<D;y++)n.push({index:y-1,x:t[0],start:r[y-1],end:r[y]});return this.volumePerZone(e,n,o,t,s)}volumePerZone(e,t,s,i,o){let a,r,n,l,p;let u=this,d=s.processedXData,h=s.processedYData,c=t.length-1,g=o.length,y=h.length;return D(g-y)&&(i[0]!==d[0]&&h.unshift(0),i[g-1]!==d[y-1]&&h.push(0)),u.volumeDataArray=[],t.forEach(function(t){for(p=0,t.wholeVolumeData=0,t.positiveVolumeData=0,t.negativeVolumeData=0;p<g;p++){r=!1,n=!1,l=e?o[p][3]:o[p],a=p?e?o[p-1][3]:o[p-1]:l;let s=u.linkedParent;!u.options.compareToMain&&s.dataModify&&(l=s.dataModify.modifyValue(l),a=s.dataModify.modifyValue(a)),l<=t.start&&0===t.index&&(r=!0),l>=t.end&&t.index===c&&(n=!0),(l>t.start||r)&&(l<t.end||n)&&(t.wholeVolumeData+=h[p],a>l?t.negativeVolumeData+=h[p]:t.positiveVolumeData+=h[p])}u.volumeDataArray.push(t.wholeVolumeData)}),t}drawZones(e,t,s,i){let o=e.renderer,a=e.plotWidth,r=e.plotTop,n=this.zoneLinesSVG,l=[],p;s.forEach(function(s){p=t.toPixels(s)-r,l=l.concat(e.renderer.crispLine([["M",0,p],["L",a,p]],i.lineWidth))}),n?n.animate({d:l}):n=this.zoneLinesSVG=o.path(l).attr({"stroke-width":i.lineWidth,stroke:i.color,dashstyle:i.dashStyle,zIndex:this.group.zIndex+.1}).add(this.group)}}return x.defaultOptions=f(l.defaultOptions,{params:{index:void 0,period:void 0,ranges:12,volumeSeriesID:"volume"},zoneLines:{enabled:!0,styles:{color:"#0A9AC9",dashStyle:"LongDash",lineWidth:1}},volumeDivision:{enabled:!0,styles:{positiveColor:"rgba(144, 237, 125, 0.8)",negativeColor:"rgba(244, 91, 91, 0.8)"}},animationLimit:1e3,enableMouseTracking:!1,pointPadding:0,zIndex:-1,crisp:!0,dataGrouping:{enabled:!1},dataLabels:{allowOverlap:!0,enabled:!0,format:"P: {point.volumePos:.2f} | N: {point.volumeNeg:.2f}",padding:0,style:{fontSize:"0.5em"},verticalAlign:"top"}}),y(x.prototype,{nameBase:"Volume by Price",nameComponents:["ranges"],calculateOn:{chart:"render",xAxis:"afterSetExtremes"},pointClass:e,markerAttribs:r,drawGraph:r,getColumnMetrics:n.getColumnMetrics,crispCol:n.crispCol}),i.registerSeriesType("vbp",x),x}),s(t,"Stock/Indicators/VWAP/VWAPIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{error:i,isArray:o,merge:a}=t;class r extends s{getValues(e,t){let s=e.chart,a=e.xData,r=e.yData,n=t.period,l=!0,p;if(!(p=s.get(t.volumeSeriesID))){i("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,s);return}return o(r[0])||(l=!1),this.calculateVWAPValues(l,a,r,p,n)}calculateVWAPValues(e,t,s,i,o){let a,r,n,l,p,u;let d=i.yData,h=i.xData.length,c=t.length,g=[],y=[],m=[],f=[],D=[];for(p=0,a=c<=h?c:h,u=0;p<a;p++)r=(e?(s[p][1]+s[p][2]+s[p][3])/3:s[p])*d[p],n=u?g[p-1]+r:r,l=u?y[p-1]+d[p]:d[p],g.push(n),y.push(l),D.push([t[p],n/l]),m.push(D[p][0]),f.push(D[p][1]),++u===o&&(u=0);return{values:D,xData:m,yData:f}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:void 0,period:30,volumeSeriesID:"volume"}}),e.registerSeriesType("vwap",r),r}),s(t,"Stock/Indicators/WilliamsR/WilliamsRIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{getValues(t,s){let i,o,r,n,l,p;let u=s.period,d=t.xData,h=t.yData,c=h?h.length:0,g=[],y=[],m=[];if(!(d.length<u)&&a(h[0])&&4===h[0].length){for(p=u-1;p<c;p++)i=h.slice(p-u+1,p+1),l=(o=e.getArrayExtremes(i,2,1))[0],r=-(((n=o[1])-h[p][3])/(n-l)*100),d[p]&&(g.push([d[p],r]),y.push(d[p]),m.push(r));return{values:g,xData:y,yData:m}}}}return n.defaultOptions=r(i.defaultOptions,{params:{index:void 0,period:14}}),o(n.prototype,{nameBase:"Williams %R"}),t.registerSeriesType("williamsr",n),n}),s(t,"Stock/Indicators/WMA/WMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;function a(e,t,s,i,o){let a=t[i],r=o<0?s[i]:s[i][o];e.push([a,r])}function r(e,t,s,i){let o=e.length,a=e.reduce(function(e,t,s){return[null,e[1]+t[1]*(s+1)]})[1]/((o+1)/2*o),r=t[i-1];return e.shift(),[r,a]}class n extends s{getValues(e,t){let s=t.period,o=e.xData,n=e.yData,l=n?n.length:0,p=o[0],u=[],d=[],h=[],c=1,g=-1,y,m,f=n[0];if(o.length<s)return;i(n[0])&&(g=t.index,f=n[0][g]);let D=[[p,f]];for(;c!==s;)a(D,o,n,c,g),c++;for(y=c;y<l;y++)u.push(m=r(D,o,n,y)),d.push(m[0]),h.push(m[1]),a(D,o,n,y,g);return u.push(m=r(D,o,n,y)),d.push(m[0]),h.push(m[1]),{values:u,xData:d,yData:h}}}return n.defaultOptions=o(s.defaultOptions,{params:{index:3,period:9}}),e.registerSeriesType("wma",n),n}),s(t,"Stock/Indicators/Zigzag/ZigzagIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i,extend:o}=t;class a extends s{getValues(e,t){let s=t.lowIndex,i=t.highIndex,o=t.deviation/100,a={low:1+o,high:1-o},r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],d=[],h,c,g,y,m=!1,f=!1;if(!r||r.length<=1||l&&(void 0===n[0][s]||void 0===n[0][i]))return;let D=n[0][s],x=n[0][i];for(h=1;h<l;h++)n[h][s]<=x*a.high?(p.push([r[0],x]),g=[r[h],n[h][s]],y=!0,m=!0):n[h][i]>=D*a.low&&(p.push([r[0],D]),g=[r[h],n[h][i]],y=!1,m=!0),m&&(u.push(p[0][0]),d.push(p[0][1]),c=h++,h=l);for(h=c;h<l;h++)y?(n[h][s]<=g[1]&&(g=[r[h],n[h][s]]),n[h][i]>=g[1]*a.low&&(f=i)):(n[h][i]>=g[1]&&(g=[r[h],n[h][i]]),n[h][s]<=g[1]*a.high&&(f=s)),!1!==f&&(p.push(g),u.push(g[0]),d.push(g[1]),g=[r[h],n[h][f]],y=!y,f=!1);let S=p.length;return 0!==S&&p[S-1][0]<r[l-1]&&(p.push(g),u.push(g[0]),d.push(g[1])),{values:p,xData:u,yData:d}}}return a.defaultOptions=i(s.defaultOptions,{params:{index:void 0,period:void 0,lowIndex:2,highIndex:1,deviation:1}}),o(a.prototype,{nameComponents:["deviation"],nameSuffixes:["%"],nameBase:"Zig Zag"}),e.registerSeriesType("zigzag",a),a}),s(t,"Stock/Indicators/LinearRegression/LinearRegressionIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,extend:o,merge:a}=t;class r extends s{getRegressionLineParameters(e,t){let s=this.options.params.index,o=function(e,t){return i(e)?e[t]:e},a=e.reduce(function(e,t){return t+e},0),r=t.reduce(function(e,t){return o(t,s)+e},0),n=a/e.length,l=r/t.length,p,u,d=0,h=0;for(u=0;u<e.length;u++)d+=(p=e[u]-n)*(o(t[u],s)-l),h+=Math.pow(p,2);let c=h?d/h:0;return{slope:c,intercept:l-c*n}}getEndPointY(e,t){return e.slope*t+e.intercept}transformXData(e,t){let s=e[0];return e.map(function(e){return(e-s)/t})}findClosestDistance(e){let t,s,i;for(i=1;i<e.length-1;i++)(t=e[i]-e[i-1])>0&&(void 0===s||t<s)&&(s=t);return s}getValues(e,t){let s,i,o,a,r,n,l,p,u;let d=e.xData,h=e.yData,c=t.period,g={xData:[],yData:[],values:[]},y=this.options.params.xAxisUnit||this.findClosestDistance(d);for(i=c-1;i<=d.length-1;i++)o=i-c+1,a=i+1,r=d[i],l=d.slice(o,a),p=h.slice(o,a),u=this.transformXData(l,y),s=this.getRegressionLineParameters(u,p),n=this.getEndPointY(s,u[u.length-1]),g.values.push({regressionLineParameters:s,x:r,y:n}),g.xData.push(r),g.yData.push(n);return g}}return r.defaultOptions=a(s.defaultOptions,{params:{xAxisUnit:null},tooltip:{valueDecimals:4}}),o(r.prototype,{nameBase:"Linear Regression Indicator"}),e.registerSeriesType("linearRegression",r),r}),s(t,"Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopesIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{getEndPointY(e){return e.slope}}return a.defaultOptions=o(s.defaultOptions),i(a.prototype,{nameBase:"Linear Regression Slope Indicator"}),e.registerSeriesType("linearRegressionSlope",a),a}),s(t,"Stock/Indicators/LinearRegressionIntercept/LinearRegressionInterceptIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{getEndPointY(e){return e.intercept}}return a.defaultOptions=o(s.defaultOptions),i(a.prototype,{nameBase:"Linear Regression Intercept Indicator"}),e.registerSeriesType("linearRegressionIntercept",a),a}),s(t,"Stock/Indicators/LinearRegressionAngle/LinearRegressionAngleIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{slopeToAngle(e){return 180/Math.PI*Math.atan(e)}getEndPointY(e){return this.slopeToAngle(e.slope)}}return a.defaultOptions=o(s.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span>{series.name}: <b>{point.y}\xb0</b><br/>'}}),i(a.prototype,{nameBase:"Linear Regression Angle Indicator"}),e.registerSeriesType("linearRegressionAngle",a),a}),s(t,"Stock/Indicators/ABands/ABandsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r}=s;class n extends i{getValues(e,t){let s,i,a,r,n,l,p,u,d,h,c;let g=t.period,y=t.factor,m=t.index,f=e.xData,D=e.yData,x=D?D.length:0,S=[],v=[],C=[],A=[],I=[];if(!(x<g)){for(c=0;c<=x;c++){if(c<x){var T,P;T=D[c][2],n=o((P=D[c][1])-T)/(o(P+T)/2)*1e3*y,S.push(D[c][1]*o(1+2*n)),v.push(D[c][2]*o(1-2*n))}c>=g&&(d=f.slice(c-g,c),h=D.slice(c-g,c),p=super.getValues.call(this,{xData:d,yData:S.slice(c-g,c)},{period:g}),u=super.getValues.call(this,{xData:d,yData:v.slice(c-g,c)},{period:g}),r=(l=super.getValues.call(this,{xData:d,yData:h},{period:g,index:m})).xData[0],i=p.yData[0],a=u.yData[0],s=l.yData[0],C.push([r,i,s,a]),A.push(r),I.push([i,s,a]))}return{values:C,xData:A,yData:I}}}}return n.defaultOptions=r(i.defaultOptions,{params:{period:20,factor:.001,index:3},lineWidth:1,topLine:{styles:{lineWidth:1}},bottomLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),a(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameBase:"Acceleration Bands",nameComponents:["period","factor"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("abands",n),n}),s(t,"Stock/Indicators/TrendLine/TrendLineIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,isArray:a}=t;class r extends s{constructor(){super(...arguments),this.updateAllPoints=!0}getValues(e,t){let s=e.xData,i=e.yData,o=[],r=[],n=[],l=[],p=t.index,u=0,d=0,h=0,c=0,g=0;for(let e=0;e<s.length;e++)(0===e||s[e]!==s[e-1])&&g++,o.push(g);for(let e=0;e<o.length;e++)h+=o[e],c+=a(i[e])?i[e][p]:i[e];let y=h/o.length,m=c/i.length;for(let e=0;e<o.length;e++){let t=a(i[e])?i[e][p]:i[e];u+=(o[e]-y)*(t-m),d+=Math.pow(o[e]-y,2)}for(let e=0;e<o.length;e++){if(s[e]===n[n.length-1])continue;let t=s[e],i=m+u/d*(o[e]-y);r.push([t,i]),n.push(t),l.push(i)}return{xData:n,yData:l,values:r}}}return r.defaultOptions=o(s.defaultOptions,{params:{period:void 0,index:3}}),i(r.prototype,{nameBase:"Trendline",nameComponents:void 0}),e.registerSeriesType("trendline",r),r}),s(t,"Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{correctFloat:i,defined:o,extend:a,isArray:r,merge:n}=t;class l extends s{init(){let t=arguments,i=t[1].params,o=i&&i.average?i.average:void 0;this.averageIndicator=e.seriesTypes[o]||s,this.averageIndicator.prototype.init.apply(this,t)}calculateDisparityIndex(e,t){return i(e-t)/t*100}getValues(e,t){let s=t.index,i=e.xData,a=e.yData,n=a?a.length:0,l=[],p=[],u=[],d=this.averageIndicator,h=r(a[0]),c=d.prototype.getValues(e,t),g=c.yData,y=i.indexOf(c.xData[0]);if(g&&0!==g.length&&o(s)&&!(a.length<=y)){for(let e=y;e<n;e++){let t=this.calculateDisparityIndex(h?a[e][s]:a[e],g[e-y]);l.push([i[e],t]),p.push(i[e]),u.push(t)}return{values:l,xData:p,yData:u}}}}return l.defaultOptions=n(s.defaultOptions,{params:{average:"sma",index:3},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),a(l.prototype,{nameBase:"Disparity Index",nameComponents:["period","average"]}),e.registerSeriesType("disparityindex",l),l}),s(t,"masters/indicators/indicators-all.src.js",[t["Core/Globals.js"]],function(e){return e})});
9
+ */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/indicators-all",["highcharts","highcharts/modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function s(t,s,i,o){t.hasOwnProperty(s)||(t[s]=o.apply(null,i),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:s,module:t[s]}})))}s(t,"Stock/Indicators/SMA/SMAIndicator.js",[t["Core/Chart/Chart.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{line:i}=t.seriesTypes,{addEvent:o,fireEvent:a,error:r,extend:n,isArray:l,merge:p,pick:u,splat:h}=s;class d extends i{destroy(){this.dataEventsToUnbind.forEach(function(e){e()}),super.destroy.apply(this,arguments)}getName(){let e=[],t=this.name;return t||((this.nameComponents||[]).forEach(function(t,s){e.push(this.options.params[t]+u(this.nameSuffixes[s],""))},this),t=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+e.join(", ")+")":"")),t}getValues(e,t){let s=t.period,i=e.xData,o=e.yData,a=o.length,r=[],n=[],p=[],u,h=-1,d=0,c,g=0;if(!(i.length<s)){for(l(o[0])&&(h=t.index?t.index:0);d<s-1;)g+=h<0?o[d]:o[d][h],d++;for(u=d;u<a;u++)g+=h<0?o[u]:o[u][h],c=[i[u],g/s],r.push(c),n.push(c[0]),p.push(c[1]),g-=h<0?o[u-d]:o[u-d][h];return{values:r,xData:n,yData:p}}}init(t,s){let i=this;super.init.call(i,t,s);let a=o(e,"afterLinkSeries",function({isUpdating:e}){if(e)return;let s=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return r("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,t);if(!s&&(i.dataEventsToUnbind.push(o(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push(o(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.processedYData||i.recalculateValues();else if(!s){let e=o(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),e()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(a)}recalculateValues(){let e=[],t=this.points||[],s=(this.xData||[]).length,i=!0,o,r,n,l,p,u,d=this.linkedParent.options&&this.linkedParent.yData&&this.linkedParent.yData.length&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};if(s&&!this.hasGroupedData&&this.visible&&this.points){if(this.cropped){for(this.xAxis&&(l=this.xAxis.min,p=this.xAxis.max),n=this.cropData(d.xData,d.yData,l,p),u=0;u<n.xData.length;u++)e.push([n.xData[u]].concat(h(n.yData[u])));o=d.xData.indexOf(this.xData[0]),r=d.xData.indexOf(this.xData[this.xData.length-1]),-1===o&&r===d.xData.length-2&&e[0][0]===t[0].x&&e.shift(),this.updateData(e)}else(this.updateAllPoints||d.xData.length!==s-1&&d.xData.length!==s+1)&&(i=!1,this.updateData(d.values))}i&&(this.xData=d.xData,this.yData=d.yData,this.options.data=d.values),this.calculateOn.xAxis&&this.processedXData&&(delete this.processedXData,this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,a(this,"updatedData")}processData(){let e=this.options.compareToMain,t=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&t&&t.dataModify&&t.dataModify.compareValue&&e&&(this.dataModify.compareValue=t.dataModify.compareValue)}}return d.defaultOptions=p(i.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),n(d.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),t.registerSeriesType("sma",d),d}),s(t,"Stock/Indicators/EMA/EMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{accumulatePeriodPoints(e,t,s){let i=0,o=0;for(;o<e;)i+=t<0?s[o]:s[o][t],o++;return i}calculateEma(e,t,s,o,a,r,n){let l=e[s-1],p=r<0?t[s-1]:t[s-1][r];return[l,void 0===a?n:i(p*o+a*(1-o))]}getValues(e,t){let s=t.period,i=e.xData,a=e.yData,r=a?a.length:0,n=2/(s+1),l=[],p=[],u=[],h,d,c,g=-1,y=0;if(!(r<s)){for(o(a[0])&&(g=t.index?t.index:0),y=this.accumulatePeriodPoints(s,g,a)/s,c=s;c<r+1;c++)d=this.calculateEma(i,a,c,n,h,g,y),l.push(d),p.push(d[0]),u.push(d[1]),h=d[1];return{values:l,xData:p,yData:u}}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:3,period:9}}),e.registerSeriesType("ema",r),r}),s(t,"Stock/Indicators/AD/ADIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{error:i,extend:o,merge:a}=t;class r extends s{static populateAverage(e,t,s,i,o){let a=t[i][1],r=t[i][2],n=t[i][3],l=s[i];return[e[i],n===a&&n===r||a===r?0:(2*n-r-a)/(a-r)*l]}getValues(e,t){let s,o,a;let n=t.period,l=e.xData,p=e.yData,u=t.volumeSeriesID,h=e.chart.get(u),d=h&&h.yData,c=p?p.length:0,g=[],y=[],m=[];if(!(l.length<=n)||!c||4===p[0].length){if(!h){i("Series "+u+" not found! Check `volumeSeriesID`.",!0,e.chart);return}for(o=n;o<c;o++)s=g.length,a=r.populateAverage(l,p,d,o,n),s>0&&(a[1]+=g[s-1][1]),g.push(a),y.push(a[0]),m.push(a[1]);return{values:g,xData:y,yData:m}}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),o(r.prototype,{nameComponents:!1,nameBase:"Accumulation/Distribution"}),e.registerSeriesType("ad",r),r}),s(t,"Stock/Indicators/AO/AOIndicator.js",[t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{noop:i}=e,{column:{prototype:o},sma:a}=t.seriesTypes,{extend:r,merge:n,correctFloat:l,isArray:p}=s;class u extends a{drawGraph(){let e;let t=this.options,s=this.points,i=this.userOptions.color,o=t.greaterBarColor,a=t.lowerBarColor,r=s[0];if(!i&&r)for(e=1,r.color=o;e<s.length;e++)s[e].y>s[e-1].y?s[e].color=o:s[e].y<s[e-1].y?s[e].color=a:s[e].color=s[e-1].color}getValues(e){let t=e.xData||[],s=e.yData||[],i=s.length,o=[],a=[],r=[],n,u,h,d,c,g,y=0,m=0;if(!(t.length<=34)&&p(s[0])&&4===s[0].length){for(c=0;c<33;c++)d=(s[c][1]+s[c][2])/2,c>=29&&(m=l(m+d)),y=l(y+d);for(g=33;g<i;g++)m=l(m+(d=(s[g][1]+s[g][2])/2)),y=l(y+d),n=l(m/5-y/34),o.push([t[g],n]),a.push(t[g]),r.push(n),u=g+1-5,h=g+1-34,m=l(m-(s[u][1]+s[u][2])/2),y=l(y-(s[h][1]+s[h][2])/2);return{values:o,xData:a,yData:r}}}}return u.defaultOptions=n(a.defaultOptions,{params:{index:void 0,period:void 0},greaterBarColor:"#06b535",lowerBarColor:"#f21313",threshold:0,groupPadding:.2,pointPadding:.2,crisp:!1,states:{hover:{halo:{size:0}}}}),r(u.prototype,{nameBase:"AO",nameComponents:void 0,markerAttribs:i,getColumnMetrics:o.getColumnMetrics,crispCol:o.crispCol,translate:o.translate,drawPoints:o.drawPoints}),t.registerSeriesType("ao",u),u}),s(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var s;let{sma:{prototype:i}}=e.seriesTypes,{defined:o,error:a,merge:r}=t;return function(e){let t=["bottomLine"],s=["top","bottom"],n=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let s=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&s.push(l(e))}),s}function u(){let e=this,t=e.pointValKey,s=e.linesApiNames,n=e.areaLinesNames,u=e.points,h=e.options,d=e.graph,c={options:{gapSize:h.gapSize}},g=[],y=p(e,t),m=u.length,f;if(y.forEach((e,t)=>{for(g[t]=[];m--;)f=u[m],g[t].push({x:f.x,plotX:f.plotX,plotY:f[e],isNull:!o(f[e])});m=u.length}),e.userOptions.fillColor&&n.length){let t=g[y.indexOf(l(n[0]))],s=1===n.length?u:g[y.indexOf(l(n[1]))],o=e.color;e.points=s,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=r(u,c),e.graph=e.area,e.fillGraph=!0,i.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=o}s.forEach((t,s)=>{g[s]?(e.points=g[s],h[t]?e.options=r(h[t].styles,c):a('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],i.drawGraph.call(e),e["graph"+t]=e.graph):a('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=u,e.options=h,e.graph=d,i.drawGraph.call(e)}function h(e){let t,s=[],o=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=i.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",s=i.getGraphPath.call(this,e),o=t.slice(0,s.length);for(let e=o.length-1;e>=0;e--)s.push(o[e])}}else s=i.getGraphPath.apply(this,arguments);return s}function d(e){let t=[];return(this.pointArrayMap||[]).forEach(s=>{t.push(e[s])}),t}function c(){let e=this.pointArrayMap,t=[],s;t=p(this),i.translate.apply(this,arguments),this.points.forEach(i=>{e.forEach((e,o)=>{s=i[e],this.dataModify&&(s=this.dataModify.modifyValue(s)),null!==s&&(i[t[o]]=this.yAxis.toPixels(s,!0))})})}e.compose=function(e){let i=e.prototype;return i.linesApiNames=i.linesApiNames||t.slice(),i.pointArrayMap=i.pointArrayMap||s.slice(),i.pointValKey=i.pointValKey||"top",i.areaLinesNames=i.areaLinesNames||n.slice(),i.drawGraph=u,i.getGraphPath=h,i.toYData=d,i.translate=c,e}}(s||(s={})),s}),s(t,"Stock/Indicators/Aroon/AroonIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,merge:a,pick:r}=s;function n(e,t){let s=e[0],i=0,o;for(o=1;o<e.length;o++)("max"===t&&e[o]>=s||"min"===t&&e[o]<=s)&&(s=e[o],i=o);return i}class l extends i{getValues(e,t){let s,i,o,a,l;let p=t.period,u=e.xData,h=e.yData,d=h?h.length:0,c=[],g=[],y=[];for(a=p-1;a<d;a++)o=n((l=h.slice(a-p+1,a+2)).map(function(e){return r(e[2],e)}),"min"),s=n(l.map(function(e){return r(e[1],e)}),"max")/p*100,i=o/p*100,u[a+1]&&(c.push([u[a+1],s,i]),g.push(u[a+1]),y.push([s,i]));return{values:c,xData:g,yData:y}}}return l.defaultOptions=a(i.defaultOptions,{params:{index:void 0,period:25},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Aroon Up: {point.y}<br/>Aroon Down: {point.aroonDown}<br/>'},aroonDown:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),o(l.prototype,{areaLinesNames:[],linesApiNames:["aroonDown"],nameBase:"Aroon",pointArrayMap:["y","aroonDown"],pointValKey:"y"}),e.compose(l),t.registerSeriesType("aroon",l),l}),s(t,"Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{aroon:i}=t.seriesTypes,{extend:o,merge:a}=s;class r extends i{getValues(e,t){let s,i;let o=[],a=[],r=[],n=super.getValues.call(this,e,t);for(i=0;i<n.yData.length;i++)s=n.yData[i][0]-n.yData[i][1],o.push([n.xData[i],s]),a.push(n.xData[i]),r.push(s);return{values:o,xData:a,yData:r}}}return r.defaultOptions=a(i.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b>: {point.y}'}}),o(r.prototype,{nameBase:"Aroon Oscillator",linesApiNames:[],pointArrayMap:["y"],pointValKey:"y"}),e.compose(i),t.registerSeriesType("aroonoscillator",r),r}),s(t,"Stock/Indicators/ATR/ATRIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;function a(e,t){return Math.max(e[1]-e[2],void 0===t?0:Math.abs(e[1]-t[3]),void 0===t?0:Math.abs(e[2]-t[3]))}class r extends s{getValues(e,t){let s=t.period,o=e.xData,r=e.yData,n=r?r.length:0,l=[[o[0],r[0]]],p=[],u=[],h=[],d,c,g=0,y=1,m=0;if(!(o.length<=s)&&i(r[0])&&4===r[0].length){for(c=1;c<=n;c++){var f,D;(function(e,t,s,i){let o=t[i],a=s[i];e.push([o,a])})(l,o,r,c),s<y?(g=(f=c,D=g,d=[o[f-1],(D*(s-1)+a(r[f-1],r[f-2]))/s])[1],p.push(d),u.push(d[0]),h.push(d[1])):(s===y?(g=m/(c-1),p.push([o[c-1],g]),u.push(o[c-1]),h.push(g)):m+=a(r[c-1],r[c-2]),y++)}return{values:p,xData:u,yData:h}}}}return r.defaultOptions=o(s.defaultOptions,{params:{index:void 0}}),e.registerSeriesType("atr",r),r}),s(t,"Stock/Indicators/BB/BBIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,s){let i,o,r,n,l,p,u,h,d;let c=s.period,g=s.standardDeviation,y=[],m=[],f=e.xData,D=e.yData,x=D?D.length:0,S=[];if(f.length<c)return;let v=a(D[0]);for(d=c;d<=x;d++)l=f.slice(d-c,d),p=D.slice(d-c,d),n=(h=t.seriesTypes.sma.prototype.getValues.call(this,{xData:l,yData:p},s)).xData[0],i=h.yData[0],u=function(e,t,s,i){let o=e.length,a=0,r,n=0;for(;a<o;a++)n+=(r=(s?e[a][t]:e[a])-i)*r;return Math.sqrt(n/=o-1)}(p,s.index,v,i),o=i+g*u,r=i-g*u,S.push([n,o,i,r]),y.push(n),m.push([o,i,r]);return{values:S,xData:y,yData:m}}}return n.defaultOptions=r(i.defaultOptions,{params:{period:20,standardDeviation:2,index:3},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),o(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","standardDeviation"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("bb",n),n}),s(t,"Stock/Indicators/CCI/CCIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;class a extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u=[],h,d,c=[],g,y=1,m,f,D,x;if(!(o.length<=s)&&i(a[0])&&4===a[0].length){for(;y<s;)d=a[y-1],n.push((d[1]+d[2]+d[3])/3),y++;for(x=s;x<=r;x++)f=((d=a[x-1])[1]+d[2]+d[3])/3,g=n.push(f),m=(c=n.slice(g-s)).reduce(function(e,t){return e+t},0)/s,D=function(e,t){let s=e.length,i=0,o;for(o=0;o<s;o++)i+=Math.abs(t-e[o]);return i}(c,m)/s,h=(f-m)/(.015*D),l.push([o[x-1],h]),p.push(o[x-1]),u.push(h);return{values:l,xData:p,yData:u}}}}return a.defaultOptions=o(s.defaultOptions,{params:{index:void 0}}),e.registerSeriesType("cci",a),a}),s(t,"Stock/Indicators/CMF/CMFIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i}=t;class o extends s{constructor(){super(...arguments),this.nameBase="Chaikin Money Flow"}isValid(){let e=this.chart,t=this.options,s=this.linkedParent,i=this.volumeSeries||(this.volumeSeries=e.get(t.params.volumeSeriesID)),o=s&&s.yData&&4===s.yData[0].length;function a(e){return e.xData&&e.xData.length>=t.params.period}return!!(s&&i&&a(s)&&a(i)&&o)}getValues(e,t){if(this.isValid())return this.getMoneyFlow(e.xData,e.yData,this.volumeSeries.yData,t.period)}getMoneyFlow(e,t,s,i){let o=t.length,a=[],r=[],n=[],l=[],p,u,h=-1,d=0,c=0;function g(e,t){let s=e[1],i=e[2],o=e[3];return null!==t&&null!==s&&null!==i&&null!==o&&s!==i?(o-i-(s-o))/(s-i)*t:(h=p,null)}if(i>0&&i<=o){for(p=0;p<i;p++)a[p]=g(t[p],s[p]),d+=s[p],c+=a[p];for(r.push(e[p-1]),n.push(p-h>=i&&0!==d?c/d:null),l.push([r[0],n[0]]);p<o;p++)a[p]=g(t[p],s[p]),d-=s[p-i],d+=s[p],c-=a[p-i],c+=a[p],u=[e[p],p-h>=i?c/d:null],r.push(u[0]),n.push(u[1]),l.push([u[0],u[1]])}return{values:l,xData:r,yData:n}}}return o.defaultOptions=i(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),e.registerSeriesType("cmf",o),o}),s(t,"Stock/Indicators/DMI/DMIIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,isArray:r,merge:n}=s;class l extends i{calculateDM(e,t,s){let i=e[t][1],a=e[t][2],r=e[t-1][1],n=e[t-1][2];return o(i-r>n-a?s?Math.max(i-r,0):0:s?0:Math.max(n-a,0))}calculateDI(e,t){return e/t*100}calculateDX(e,t){return o(Math.abs(e-t)/Math.abs(e+t)*100)}smoothValues(e,t,s){return o(e-e/s+t)}getTR(e,t){return o(Math.max(e[1]-e[2],t?Math.abs(e[1]-t[3]):0,t?Math.abs(e[2]-t[3]):0))}getValues(e,t){let s=t.period,i=e.xData,o=e.yData,a=o?o.length:0,n=[],l=[],p=[];if(i.length<=s||!r(o[0])||4!==o[0].length)return;let u=0,h=0,d=0,c;for(c=1;c<a;c++){let e,t,a,r,g,y,m,f,D;c<=s?(r=this.calculateDM(o,c,!0),g=this.calculateDM(o,c),y=this.getTR(o[c],o[c-1]),u+=r,h+=g,d+=y,c===s&&(m=this.calculateDI(u,d),f=this.calculateDI(h,d),D=this.calculateDX(u,h),n.push([i[c],D,m,f]),l.push(i[c]),p.push([D,m,f]))):(r=this.calculateDM(o,c,!0),g=this.calculateDM(o,c),y=this.getTR(o[c],o[c-1]),e=this.smoothValues(u,r,s),t=this.smoothValues(h,g,s),a=this.smoothValues(d,y,s),u=e,h=t,d=a,m=this.calculateDI(u,d),f=this.calculateDI(h,d),D=this.calculateDX(u,h),n.push([i[c],D,m,f]),l.push(i[c]),p.push([D,m,f]))}return{values:n,xData:l,yData:p}}}return l.defaultOptions=n(i.defaultOptions,{params:{index:void 0},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">DX</span>: {point.y}<br/><span style="color: {point.series.options.plusDILine.styles.lineColor}">+DI</span>: {point.plusDI}<br/><span style="color: {point.series.options.minusDILine.styles.lineColor}">-DI</span>: {point.minusDI}<br/>'},plusDILine:{styles:{lineWidth:1,lineColor:"#06b535"}},minusDILine:{styles:{lineWidth:1,lineColor:"#f21313"}},dataGrouping:{approximation:"averages"}}),a(l.prototype,{areaLinesNames:[],nameBase:"DMI",linesApiNames:["plusDILine","minusDILine"],pointArrayMap:["y","plusDI","minusDI"],parallelArrays:["x","y","plusDI","minusDI"],pointValKey:"y"}),e.compose(l),t.registerSeriesType("dmi",l),l}),s(t,"Stock/Indicators/DPO/DPOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,correctFloat:a,pick:r}=t;function n(e,t,s,i,o){let n=r(t[s][i],t[s]);return o?a(e-n):a(e+n)}class l extends s{getValues(e,t){let s=t.period,i=t.index,o=Math.floor(s/2+1),a=s+o,l=e.xData||[],p=e.yData||[],u=p.length,h=[],d=[],c=[],g,y,m,f,D,x=0;if(!(l.length<=a)){for(f=0;f<s-1;f++)x=n(x,p,f,i);for(D=0;D<=u-a;D++)y=D+s-1,m=D+a-1,x=n(x,p,y,i),g=r(p[m][i],p[m])-x/s,x=n(x,p,D,i,!0),h.push([l[m],g]),d.push(l[m]),c.push(g);return{values:h,xData:d,yData:c}}}}return l.defaultOptions=o(s.defaultOptions,{params:{index:0,period:21}}),i(l.prototype,{nameBase:"DPO"}),e.registerSeriesType("dpo",l),l}),s(t,"Stock/Indicators/Chaikin/ChaikinIndicator.js",[t["Stock/Indicators/AD/ADIndicator.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{ema:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r,error:n}=s;class l extends i{getValues(t,s){let i,a;let r=s.periods,l=s.period,p=[],u=[],h=[];if(2!==r.length||r[1]<=r[0]){n('Error: "Chaikin requires two periods. Notice, first period should be lower than the second one."');return}let d=e.prototype.getValues.call(this,t,{volumeSeriesID:s.volumeSeriesID,period:l});if(!d)return;let c=super.getValues.call(this,d,{period:r[0]}),g=super.getValues.call(this,d,{period:r[1]});if(!c||!g)return;let y=r[1]-r[0];for(a=0;a<g.yData.length;a++)i=o(c.yData[a+y]-g.yData[a]),p.push([g.xData[a],i]),u.push(g.xData[a]),h.push(i);return{values:p,xData:u,yData:h}}}return l.defaultOptions=r(i.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",period:9,periods:[3,10]}}),a(l.prototype,{nameBase:"Chaikin Osc",nameComponents:["periods"]}),t.registerSeriesType("chaikin",l),l}),s(t,"Stock/Indicators/CMO/CMOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,merge:o}=t;class a extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u,h=t.index,d;if(o.length<s)return;i(a[0])?d=a:(h=Math.min(h,a[0].length-1),d=a.map(e=>e[h]));let c=0,g=0,y=0,m;for(let e=s;e>0;e--)d[e]>d[e-1]?g+=d[e]-d[e-1]:d[e]<d[e-1]&&(y+=d[e-1]-d[e]);for(m=g+y>0?100*(g-y)/(g+y):0,l.push(o[s]),p.push(m),n.push([o[s],m]),u=s+1;u<r;u++)c=Math.abs(d[u-s-1]-d[u-s]),d[u]>d[u-1]?g+=d[u]-d[u-1]:d[u]<d[u-1]&&(y+=d[u-1]-d[u]),d[u-s]>d[u-s-1]?g-=c:y-=c,m=g+y>0?100*(g-y)/(g+y):0,l.push(o[u]),p.push(m),n.push([o[u],m]);return{values:n,xData:l,yData:p}}}return a.defaultOptions=o(s.defaultOptions,{params:{period:20,index:3}}),e.registerSeriesType("cmo",a),a}),s(t,"Stock/Indicators/DEMA/DEMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{getEMA(e,t,s,i,o,a){return super.calculateEma(a||[],e,void 0===o?1:o,this.EMApercent,t,void 0===i?-1:i,s)}getValues(e,t){let s=t.period,a=[],r=2*s,n=e.xData,l=e.yData,p=l?l.length:0,u=[],h=[],d=[],c=0,g=0,y,m,f,D,x=-1,S,v=0;if(this.EMApercent=2/(s+1),!(p<2*s-1)){for(o(l[0])&&(x=t.index?t.index:0),v=(c=super.accumulatePeriodPoints(s,x,l))/s,c=0,D=s;D<p+2;D++)D<p+1&&(g=this.getEMA(l,m,v,x,D)[1],a.push(g)),m=g,D<r?c+=g:(D===r&&(v=c/s),g=a[D-s-1],y=this.getEMA([g],f,v)[1],S=[n[D-2],i(2*g-y)],u.push(S),h.push(S[0]),d.push(S[1]),f=y);return{values:u,xData:h,yData:d}}}}return r.defaultOptions=a(s.defaultOptions),e.registerSeriesType("dema",r),r}),s(t,"Stock/Indicators/TEMA/TEMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,isArray:o,merge:a}=t;class r extends s{getEMA(e,t,s,i,o,a){return super.calculateEma(a||[],e,void 0===o?1:o,this.EMApercent,t,void 0===i?-1:i,s)}getTemaPoint(e,t,s,o){return[e[o-3],i(3*s.level1-3*s.level2+s.level3)]}getValues(e,t){let s=t.period,i=2*s,a=3*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d=[],c=[],g={},y=-1,m=0,f=0,D,x,S,v;if(this.EMApercent=2/(s+1),!(l<3*s-2)){for(o(n[0])&&(y=t.index?t.index:0),f=(m=super.accumulatePeriodPoints(s,y,n))/s,m=0,S=s;S<l+3;S++)S<l+1&&(g.level1=this.getEMA(n,D,f,y,S)[1],d.push(g.level1)),D=g.level1,S<i?m+=g.level1:(S===i&&(f=m/s,m=0),g.level1=d[S-s-1],g.level2=this.getEMA([g.level1],x,f)[1],c.push(g.level2),x=g.level2,S<a?m+=g.level2:(S===a&&(f=m/s),S===l+1&&(g.level1=d[S-s-1],g.level2=this.getEMA([g.level1],x,f)[1],c.push(g.level2)),g.level1=d[S-s-2],g.level2=c[S-2*s-1],g.level3=this.getEMA([g.level2],g.prevLevel3,f)[1],(v=this.getTemaPoint(r,a,g,S))&&(p.push(v),u.push(v[0]),h.push(v[1])),g.prevLevel3=g.level3));return{values:p,xData:u,yData:h}}}}return r.defaultOptions=a(s.defaultOptions),e.registerSeriesType("tema",r),r}),s(t,"Stock/Indicators/TRIX/TRIXIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{tema:s}=e.seriesTypes,{correctFloat:i,merge:o}=t;class a extends s{getTemaPoint(e,t,s,o){if(o>t)return[e[o-3],0!==s.prevLevel3?i(s.level3-s.prevLevel3)/s.prevLevel3*100:null]}}return a.defaultOptions=o(s.defaultOptions),e.registerSeriesType("trix",a),a}),s(t,"Stock/Indicators/APO/APOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{extend:i,merge:o,error:a}=t;class r extends s{getValues(e,t){let s,i;let o=t.periods,r=t.index,n=[],l=[],p=[];if(2!==o.length||o[1]<=o[0]){a('Error: "APO requires two periods. Notice, first period should be lower than the second one."');return}let u=super.getValues.call(this,e,{index:r,period:o[0]}),h=super.getValues.call(this,e,{index:r,period:o[1]});if(!u||!h)return;let d=o[1]-o[0];for(i=0;i<h.yData.length;i++)s=u.yData[i+d]-h.yData[i],n.push([h.xData[i],s]),l.push(h.xData[i]),p.push(s);return{values:n,xData:l,yData:p}}}return r.defaultOptions=o(s.defaultOptions,{params:{period:void 0,periods:[10,20]}}),i(r.prototype,{nameBase:"APO",nameComponents:["periods"]}),e.registerSeriesType("apo",r),r}),s(t,"Stock/Indicators/IKH/IKHIndicator.js",[t["Extensions/DataGrouping/ApproximationRegistry.js"],t["Core/Color/Color.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i){let{parse:o}=t,{sma:a}=s.seriesTypes,{defined:r,extend:n,isArray:l,isNumber:p,getClosestDistance:u,merge:h,objectEach:d}=i;function c(e){return{high:e.reduce(function(e,t){return Math.max(e,t[1])},-1/0),low:e.reduce(function(e,t){return Math.min(e,t[2])},1/0)}}function g(e){let t=e.indicator;t.points=e.points,t.nextPoints=e.nextPoints,t.color=e.color,t.options=h(e.options.senkouSpan.styles,e.gap),t.graph=e.graph,t.fillGraph=!0,s.seriesTypes.sma.prototype.drawGraph.call(t)}class y extends a{constructor(){super(...arguments),this.data=[],this.options={},this.points=[],this.graphCollection=[]}init(){super.init.apply(this,arguments),this.options=h({tenkanLine:{styles:{lineColor:this.color}},kijunLine:{styles:{lineColor:this.color}},chikouLine:{styles:{lineColor:this.color}},senkouSpanA:{styles:{lineColor:this.color,fill:o(this.color).setOpacity(.5).get()}},senkouSpanB:{styles:{lineColor:this.color,fill:o(this.color).setOpacity(.5).get()}},senkouSpan:{styles:{fill:o(this.color).setOpacity(.2).get()}}},this.options)}toYData(e){return[e.tenkanSen,e.kijunSen,e.chikouSpan,e.senkouSpanA,e.senkouSpanB]}translate(){for(let e of(s.seriesTypes.sma.prototype.translate.apply(this),this.points))for(let t of this.pointArrayMap){let s=e[t];p(s)&&(e["plot"+t]=this.yAxis.toPixels(s,!0),e.plotY=e["plot"+t],e.tooltipPos=[e.plotX,e["plot"+t]],e.isNull=!1)}}drawGraph(){let e=this,t=e.points,i=e.options,o=e.graph,a=e.color,n={options:{gapSize:i.gapSize}},l=e.pointArrayMap.length,p=[[],[],[],[],[],[]],u={tenkanLine:p[0],kijunLine:p[1],chikouLine:p[2],senkouSpanA:p[3],senkouSpanB:p[4],senkouSpan:p[5]},c=[],y=e.options.senkouSpan,m=y.color||y.styles.fill,f=y.negativeColor,D=[[],[]],x=[[],[]],S=t.length,v=0,C,A,I,T,P,k,j,b,M,L,V,O,R;for(e.ikhMap=u;S--;){for(I=0,A=t[S];I<l;I++)r(A[C=e.pointArrayMap[I]])&&p[I].push({plotX:A.plotX,plotY:A["plot"+C],isNull:!1});if(f&&S!==t.length-1){let e=u.senkouSpanB.length-1,t=function(e,t,s,i){if(e&&t&&s&&i){let o=t.plotX-e.plotX,a=t.plotY-e.plotY,r=i.plotX-s.plotX,n=i.plotY-s.plotY,l=e.plotX-s.plotX,p=e.plotY-s.plotY,u=(-a*l+o*p)/(-r*a+o*n),h=(r*p-n*l)/(-r*a+o*n);if(u>=0&&u<=1&&h>=0&&h<=1)return{plotX:e.plotX+h*o,plotY:e.plotY+h*a}}}(u.senkouSpanA[e-1],u.senkouSpanA[e],u.senkouSpanB[e-1],u.senkouSpanB[e]);if(t){let s={plotX:t.plotX,plotY:t.plotY,isNull:!1,intersectPoint:!0};u.senkouSpanA.splice(e,0,s),u.senkouSpanB.splice(e,0,s),c.push(e)}}}if(d(u,(t,o)=>{i[o]&&"senkouSpan"!==o&&(e.points=p[v],e.options=h(i[o].styles,n),e.graph=e["graph"+o],e.fillGraph=!1,e.color=a,s.seriesTypes.sma.prototype.drawGraph.call(e),e["graph"+o]=e.graph),v++}),e.graphCollection)for(let t of e.graphCollection)e[t].destroy(),delete e[t];if(e.graphCollection=[],f&&u.senkouSpanA[0]&&u.senkouSpanB[0]){for(c.unshift(0),c.push(u.senkouSpanA.length-1),O=0;O<c.length-1;O++)if(T=c[O],P=c[O+1],k=u.senkouSpanB.slice(T,P+1),j=u.senkouSpanA.slice(T,P+1),Math.floor(k.length/2)>=1){let e=Math.floor(k.length/2);if(k[e].plotY===j[e].plotY){for(R=0,b=0,M=0;R<k.length;R++)b+=k[R].plotY,M+=j[R].plotY;D[V=b>M?0:1]=D[V].concat(k),x[V]=x[V].concat(j)}else D[V=k[e].plotY>j[e].plotY?0:1]=D[V].concat(k),x[V]=x[V].concat(j)}else D[V=k[0].plotY>j[0].plotY?0:1]=D[V].concat(k),x[V]=x[V].concat(j);["graphsenkouSpanColor","graphsenkouSpanNegativeColor"].forEach(function(t,s){D[s].length&&x[s].length&&(L=0===s?m:f,g({indicator:e,points:D[s],nextPoints:x[s],color:L,options:i,gap:n,graph:e[t]}),e[t]=e.graph,e.graphCollection.push(t))})}else g({indicator:e,points:u.senkouSpanB,nextPoints:u.senkouSpanA,color:m,options:i,gap:n,graph:e.graphsenkouSpan}),e.graphsenkouSpan=e.graph;delete e.nextPoints,delete e.fillGraph,e.points=t,e.options=i,e.graph=o,e.color=a}getGraphPath(e){let t=[],i,o=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((i=s.seriesTypes.sma.prototype.getGraphPath.call(this,this.nextPoints))&&i.length){i[0][0]="L",t=s.seriesTypes.sma.prototype.getGraphPath.call(this,e),o=i.slice(0,t.length);for(let e=o.length-1;e>=0;e--)t.push(o[e])}}else t=s.seriesTypes.sma.prototype.getGraphPath.apply(this,arguments);return t}getValues(e,t){let s,i,o,a,r,n,p,h,d,g;let y=t.period,m=t.periodTenkan,f=t.periodSenkouSpanB,D=e.xData,x=e.yData,S=e.xAxis,v=x&&x.length||0,C=u(S.series.map(e=>e.xData||[])),A=[],I=[];if(D.length<=y||!l(x[0])||4!==x[0].length)return;let T=D[0]-y*C;for(r=0;r<y;r++)I.push(T+r*C);for(r=0;r<v;r++)r>=m&&(n=((i=c(x.slice(r-m,r))).high+i.low)/2),r>=y&&(d=(n+(p=((o=c(x.slice(r-y,r))).high+o.low)/2))/2),r>=f&&(g=((a=c(x.slice(r-f,r))).high+a.low)/2),h=x[r][3],s=D[r],void 0===A[r]&&(A[r]=[]),void 0===A[r+y-1]&&(A[r+y-1]=[]),A[r+y-1][0]=n,A[r+y-1][1]=p,A[r+y-1][2]=void 0,void 0===A[r+1]&&(A[r+1]=[]),A[r+1][2]=h,r<=y&&(A[r+y-1][3]=void 0,A[r+y-1][4]=void 0),void 0===A[r+2*y-2]&&(A[r+2*y-2]=[]),A[r+2*y-2][3]=d,A[r+2*y-2][4]=g,I.push(s);for(r=1;r<=y;r++)I.push(s+r*C);return{values:A,xData:I,yData:A}}}return y.defaultOptions=h(a.defaultOptions,{params:{index:void 0,period:26,periodTenkan:9,periodSenkouSpanB:52},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>TENKAN SEN: {point.tenkanSen:.3f}<br/>KIJUN SEN: {point.kijunSen:.3f}<br/>CHIKOU SPAN: {point.chikouSpan:.3f}<br/>SENKOU SPAN A: {point.senkouSpanA:.3f}<br/>SENKOU SPAN B: {point.senkouSpanB:.3f}<br/>'},tenkanLine:{styles:{lineWidth:1,lineColor:void 0}},kijunLine:{styles:{lineWidth:1,lineColor:void 0}},chikouLine:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanA:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanB:{styles:{lineWidth:1,lineColor:void 0}},senkouSpan:{styles:{fill:"rgba(255, 0, 0, 0.5)"}},dataGrouping:{approximation:"ichimoku-averages"}}),n(y.prototype,{pointArrayMap:["tenkanSen","kijunSen","chikouSpan","senkouSpanA","senkouSpanB"],pointValKey:"tenkanSen",nameComponents:["periodSenkouSpanB","period","periodTenkan"]}),e["ichimoku-averages"]=function(){let t;let s=[];return[].forEach.call(arguments,function(i,o){s.push(e.average(i)),t=!t&&void 0===s[o]}),t?void 0:s},s.registerSeriesType("ikh",y),y}),s(t,"Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r}=s;class n extends i{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,s){let i,a,r,n,l,p,u;let h=s.period,d=s.periodATR,c=s.multiplierATR,g=s.index,y=e.yData,m=y?y.length:0,f=[],D=t.seriesTypes.ema.prototype.getValues(e,{period:h,index:g}),x=t.seriesTypes.atr.prototype.getValues(e,{period:d}),S=[],v=[];if(!(m<h)){for(u=h;u<=m;u++)l=D.values[u-h],p=x.values[u-d],n=l[0],a=o(l[1]+c*p[1]),r=o(l[1]-c*p[1]),i=l[1],f.push([n,a,i,r]),S.push(n),v.push([a,i,r]);return{values:f,xData:S,yData:v}}}}return n.defaultOptions=r(i.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),a(n.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("keltnerchannels",n),n}),s(t,"Stock/Indicators/Klinger/KlingerIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{ema:i,sma:o}=t.seriesTypes,{correctFloat:a,error:r,extend:n,isArray:l,merge:p}=s;class u extends o{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,s=this.options,i=this.linkedParent,o=l(e)&&4===e.length,a=this.volumeSeries||(this.volumeSeries=t.get(s.params.volumeSeriesID));return a||r("Series "+s.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,i.chart),!!([i,a].every(function(e){return e&&e.xData&&e.xData.length>=s.params.slowAvgPeriod})&&o)}getCM(e,t,s,i,o){return a(t+(s===i?e:o))}getDM(e,t){return a(e-t)}getVolumeForce(e){let t=[],s=0,i,o=1,a=0,r=e[0][1]-e[0][2],n=0,l;for(;o<e.length;o++)l=this.calculateTrend(e,o),i=this.getDM(e[o][1],e[o][2]),s=this.getCM(a,i,l,n,r),t.push([this.volumeSeries.yData[o]*l*Math.abs(2*(i/s-1))*100]),n=l,a=s,r=i;return t}getEMA(e,t,s,o,a,r,n){return i.prototype.calculateEma(n||[],e,void 0===r?1:r,o,t,void 0===a?-1:a,s)}getSMA(e,t,s){return i.prototype.accumulatePeriodPoints(e,t,s)/e}getValues(e,t){let s=[],i=e.xData,o=e.yData,r=[],n=[],l=[],p,u=0,h=0,d,c,g,y=null;if(!this.isValidData(o[0]))return;let m=this.getVolumeForce(o),f=this.getSMA(t.fastAvgPeriod,0,m),D=this.getSMA(t.slowAvgPeriod,0,m),x=2/(t.fastAvgPeriod+1),S=2/(t.slowAvgPeriod+1);for(;u<o.length;u++)u>=t.fastAvgPeriod&&(c=h=this.getEMA(m,c,f,x,0,u,i)[1]),u>=t.slowAvgPeriod&&(g=d=this.getEMA(m,g,D,S,0,u,i)[1],l.push(p=a(h-d)),l.length>=t.signalPeriod&&(y=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),s.push([i[u],p,y]),r.push(i[u]),n.push([p,y]));return{values:s,xData:r,yData:n}}}return u.defaultOptions=p(o.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),n(u.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),e.compose(u),t.registerSeriesType("klinger",u),u}),s(t,"Stock/Indicators/MACD/MACDIndicator.js",[t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{noop:i}=e,{column:o,sma:a}=t.seriesTypes,{extend:r,correctFloat:n,defined:l,merge:p}=s;class u extends a{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments);let e=this.color;this.options&&(l(this.colorIndex)&&(this.options.signalLine&&this.options.signalLine.styles&&!this.options.signalLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.signalLine.styles.lineColor=this.color),this.options.macdLine&&this.options.macdLine.styles&&!this.options.macdLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.macdLine.styles.lineColor=this.color)),this.macdZones={zones:this.options.macdLine.zones,startIndex:0},this.signalZones={zones:this.macdZones.zones.concat(this.options.signalLine.zones),startIndex:this.macdZones.zones.length}),this.color=e}toYData(e){return[e.y,e.signal,e.MACD]}translate(){let t=this,s=["plotSignal","plotMACD"];e.seriesTypes.column.prototype.translate.apply(t),t.points.forEach(function(e){[e.signal,e.MACD].forEach(function(i,o){null!==i&&(e[s[o]]=t.yAxis.toPixels(i,!0))})})}destroy(){this.graph=null,this.graphmacd=this.graphmacd&&this.graphmacd.destroy(),this.graphsignal=this.graphsignal&&this.graphsignal.destroy(),t.seriesTypes.sma.prototype.destroy.apply(this,arguments)}drawGraph(){let e=this,s=e.points,i=e.options,o=e.zones,a={options:{gapSize:i.gapSize}},r=[[],[]],n,u=s.length;for(;u--;)l((n=s[u]).plotMACD)&&r[0].push({plotX:n.plotX,plotY:n.plotMACD,isNull:!l(n.plotMACD)}),l(n.plotSignal)&&r[1].push({plotX:n.plotX,plotY:n.plotSignal,isNull:!l(n.plotMACD)});["macd","signal"].forEach((s,o)=>{e.points=r[o],e.options=p(i[`${s}Line`]?.styles||{},a),e.graph=e[`graph${s}`],e.zones=(e[`${s}Zones`].zones||[]).slice(e[`${s}Zones`].startIndex||0),t.seriesTypes.sma.prototype.drawGraph.call(e),e[`graph${s}`]=e.graph}),e.points=s,e.options=i,e.zones=o}applyZones(){let e=this.zones;this.zones=this.signalZones.zones,t.seriesTypes.sma.prototype.applyZones.call(this),this.graphmacd&&this.options.macdLine.zones.length&&this.graphmacd.hide(),this.zones=e}getValues(e,s){let i=s.longPeriod-s.shortPeriod,o=[],a=[],r=[],p,u,h,d=0,c=[];if(!(e.xData.length<s.longPeriod+s.signalPeriod)){for(h=0,p=t.seriesTypes.ema.prototype.getValues(e,{period:s.shortPeriod,index:s.index}),u=t.seriesTypes.ema.prototype.getValues(e,{period:s.longPeriod,index:s.index}),p=p.values,u=u.values;h<=p.length;h++)l(u[h])&&l(u[h][1])&&l(p[h+i])&&l(p[h+i][0])&&o.push([p[h+i][0],0,null,p[h+i][1]-u[h][1]]);for(h=0;h<o.length;h++)a.push(o[h][0]),r.push([0,null,o[h][3]]);for(h=0,c=(c=t.seriesTypes.ema.prototype.getValues({xData:a,yData:r},{period:s.signalPeriod,index:2})).values;h<o.length;h++)o[h][0]>=c[0][0]&&(o[h][2]=c[d][1],r[h]=[0,c[d][1],o[h][3]],null===o[h][3]?(o[h][1]=0,r[h][0]=0):(o[h][1]=n(o[h][3]-c[d][1]),r[h][0]=n(o[h][3]-c[d][1])),d++);return{values:o,xData:a,yData:r}}}}return u.defaultOptions=p(a.defaultOptions,{params:{shortPeriod:12,longPeriod:26,signalPeriod:9,period:26},signalLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},macdLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},threshold:0,groupPadding:.1,pointPadding:.1,crisp:!1,states:{hover:{halo:{size:0}}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Value: {point.MACD}<br/>Signal: {point.signal}<br/>Histogram: {point.y}<br/>'},dataGrouping:{approximation:"averages"},minPointLength:0}),r(u.prototype,{nameComponents:["longPeriod","shortPeriod","signalPeriod"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:i,getColumnMetrics:e.seriesTypes.column.prototype.getColumnMetrics,crispCol:e.seriesTypes.column.prototype.crispCol,drawPoints:e.seriesTypes.column.prototype.drawPoints}),t.registerSeriesType("macd",u),u}),s(t,"Stock/Indicators/MFI/MFIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,error:a,isArray:r}=t;function n(e){return e.reduce(function(e,t){return e+t})}function l(e){return(e[1]+e[2]+e[3])/3}class p extends s{getValues(e,t){let s=t.period,i=e.xData,o=e.yData,p=o?o.length:0,u=t.decimals,h=e.chart.get(t.volumeSeriesID),d=h&&h.yData,c=[],g=[],y=[],m=[],f=[],D,x,S,v,C,A,I=!1,T=1;if(!h){a("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);return}if(!(i.length<=s)&&r(o[0])&&4===o[0].length&&d){for(D=l(o[T]);T<s+1;)x=D,I=(D=l(o[T]))>=x,S=D*d[T],m.push(I?S:0),f.push(I?0:S),T++;for(A=T-1;A<p;A++)A>T-1&&(m.shift(),f.shift(),x=D,I=(D=l(o[A]))>x,S=D*d[A],m.push(I?S:0),f.push(I?0:S)),v=n(f),C=parseFloat((100-100/(1+n(m)/v)).toFixed(u)),c.push([i[A],C]),g.push(i[A]),y.push(C);return{values:c,xData:g,yData:y}}}}return p.defaultOptions=o(s.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",decimals:4}}),i(p.prototype,{nameBase:"Money Flow Index"}),e.registerSeriesType("mfi",p),p}),s(t,"Stock/Indicators/Momentum/MomentumIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,isArray:o,merge:a}=t;function r(e,t,s,i,o){let a=t[s-1][o]-t[s-i-1][o];return[e[s-1],a]}class n extends s{getValues(e,t){let s,i;let a=t.period,n=t.index,l=e.xData,p=e.yData,u=p?p.length:0,h=[],d=[],c=[];if(!(l.length<=a)&&o(p[0])){for(s=a+1;s<u;s++)i=r(l,p,s,a,n),h.push(i),d.push(i[0]),c.push(i[1]);return i=r(l,p,s,a,n),h.push(i),d.push(i[0]),c.push(i[1]),{values:h,xData:d,yData:c}}}}return n.defaultOptions=a(s.defaultOptions,{params:{index:3}}),i(n.prototype,{nameBase:"Momentum"}),e.registerSeriesType("momentum",n),n}),s(t,"Stock/Indicators/NATR/NATRIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{atr:s}=e.seriesTypes,{merge:i}=t;class o extends s{getValues(e,t){let s=super.getValues.apply(this,arguments),i=s.values.length,o=e.yData,a=0,r=t.period-1;if(s){for(;a<i;a++)s.yData[a]=s.values[a][1]/o[r][3]*100,s.values[a][1]=s.yData[a],r++;return s}}}return o.defaultOptions=i(s.defaultOptions,{tooltip:{valueSuffix:"%"}}),e.registerSeriesType("natr",o),o}),s(t,"Stock/Indicators/OBV/OBVIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,error:o,extend:a,merge:r}=t;class n extends s{getValues(e,t){let s=e.chart.get(t.volumeSeriesID),a=e.xData,r=e.yData,n=[],l=[],p=[],u=!i(r[0]),h=[],d=1,c=0,g=0,y=0,m=0,f;if(s)for(f=s.yData,h=[a[0],c],y=u?r[0][3]:r[0],n.push(h),l.push(a[0]),p.push(h[1]);d<r.length;d++)g=(m=u?r[d][3]:r[d])>y?c+f[d]:m===y?c:c-f[d],h=[a[d],g],c=g,y=m,n.push(h),l.push(a[d]),p.push(h[1]);else{o("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);return}return{values:n,xData:l,yData:p}}}return n.defaultOptions=r(s.defaultOptions,{marker:{enabled:!1},params:{index:void 0,period:void 0,volumeSeriesID:"volume"},tooltip:{valueDecimals:0}}),a(n.prototype,{nameComponents:void 0}),e.registerSeriesType("obv",n),n}),s(t,"Stock/Indicators/PivotPoints/PivotPointsPoint.js",[t["Core/Series/SeriesRegistry.js"]],function(e){let t=e.seriesTypes.sma.prototype.pointClass;function s(t,s){let i=t.series.pointArrayMap,o,a=i.length;for(e.seriesTypes.sma.prototype.pointClass.prototype[s].call(t);a--;)t[o="dataLabel"+i[a]]&&t[o].element&&t[o].destroy(),t[o]=null}return class extends t{destroyElements(){s(this,"destroyElements")}destroy(){s(this,"destroyElements")}}}),s(t,"Stock/Indicators/PivotPoints/PivotPointsIndicator.js",[t["Stock/Indicators/PivotPoints/PivotPointsPoint.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{merge:o,extend:a,defined:r,isArray:n}=s;class l extends i{toYData(e){return[e.P]}translate(){let e=this;super.translate.apply(e),e.points.forEach(function(t){e.pointArrayMap.forEach(function(s){r(t[s])&&(t["plot"+s]=e.yAxis.toPixels(t[s],!0))})}),e.plotEndPoint=e.xAxis.toPixels(e.endPoint,!0)}getGraphPath(e){let t=this,s=[[],[],[],[],[],[],[],[],[]],i=t.pointArrayMap.length,o=t.plotEndPoint,a=[],n,l,p=e.length,u;for(;p--;){for(u=0,l=e[p];u<i;u++)r(l[n=t.pointArrayMap[u]])&&s[u].push({plotX:l.plotX,plotY:l["plot"+n],isNull:!1},{plotX:o,plotY:l["plot"+n],isNull:!1},{plotX:o,plotY:null,isNull:!0});o=l.plotX}return s.forEach(e=>{a=a.concat(super.getGraphPath.call(t,e))}),a}drawDataLabels(){let e,t,s,i;let o=this,a=o.pointArrayMap;o.options.dataLabels.enabled&&(t=o.points.length,a.concat([!1]).forEach((r,n)=>{for(i=t;i--;)s=o.points[i],r?(s.y=s[r],s.pivotLine=r,s.plotY=s["plot"+r],e=s["dataLabel"+r],n&&(s["dataLabel"+a[n-1]]=s.dataLabel),s.dataLabels||(s.dataLabels=[]),s.dataLabels[0]=s.dataLabel=e=e&&e.element?e:null):s["dataLabel"+a[n-1]]=s.dataLabel;super.drawDataLabels.call(o)}))}getValues(e,t){let s,i,o,a,r,l,p;let u=t.period,h=e.xData,d=e.yData,c=d?d.length:0,g=this[t.algorithm+"Placement"],y=[],m=[],f=[];if(!(h.length<u)&&n(d[0])&&4===d[0].length){for(p=u+1;p<=c+u;p+=u)o=h.slice(p-u-1,p),a=d.slice(p-u-1,p),i=o.length,s=o[i-1],l=g(this.getPivotAndHLC(a)),r=y.push([s].concat(l)),m.push(s),f.push(y[r-1].slice(1));return this.endPoint=o[0]+(s-o[0])/i*u,{values:y,xData:m,yData:f}}}getPivotAndHLC(e){let t=e[e.length-1][3],s=-1/0,i=1/0;return e.forEach(function(e){s=Math.max(s,e[1]),i=Math.min(i,e[2])}),[(s+i+t)/3,s,i,t]}standardPlacement(e){let t=e[1]-e[2];return[null,null,e[0]+t,2*e[0]-e[2],e[0],2*e[0]-e[1],e[0]-t,null,null]}camarillaPlacement(e){let t=e[1]-e[2];return[e[3]+1.5*t,e[3]+1.25*t,e[3]+1.1666*t,e[3]+1.0833*t,e[0],e[3]-1.0833*t,e[3]-1.1666*t,e[3]-1.25*t,e[3]-1.5*t]}fibonacciPlacement(e){let t=e[1]-e[2];return[null,e[0]+t,e[0]+.618*t,e[0]+.382*t,e[0],e[0]-.382*t,e[0]-.618*t,e[0]-t,null]}}return l.defaultOptions=o(i.defaultOptions,{params:{index:void 0,period:28,algorithm:"standard"},marker:{enabled:!1},enableMouseTracking:!1,dataLabels:{enabled:!0,format:"{point.pivotLine}"},dataGrouping:{approximation:"averages"}}),a(l.prototype,{nameBase:"Pivot Points",pointArrayMap:["R4","R3","R2","R1","P","S1","S2","S3","S4"],pointValKey:"P",pointClass:e}),t.registerSeriesType("pivotpoints",l),l}),s(t,"Stock/Indicators/PPO/PPOIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{ema:s}=e.seriesTypes,{correctFloat:i,extend:o,merge:a,error:r}=t;class n extends s{getValues(e,t){let s,o;let a=t.periods,n=t.index,l=[],p=[],u=[];if(2!==a.length||a[1]<=a[0]){r('Error: "PPO requires two periods. Notice, first period should be lower than the second one."');return}let h=super.getValues.call(this,e,{index:n,period:a[0]}),d=super.getValues.call(this,e,{index:n,period:a[1]});if(!h||!d)return;let c=a[1]-a[0];for(o=0;o<d.yData.length;o++)s=i((h.yData[o+c]-d.yData[o])/d.yData[o]*100),l.push([d.xData[o],s]),p.push(d.xData[o]),u.push(s);return{values:l,xData:p,yData:u}}}return n.defaultOptions=a(s.defaultOptions,{params:{period:void 0,periods:[12,26]}}),o(n.prototype,{nameBase:"PPO",nameComponents:["periods"]}),e.registerSeriesType("ppo",n),n}),s(t,"Stock/Indicators/ArrayUtilities.js",[],function(){return{getArrayExtremes:function(e,t,s){return e.reduce((e,i)=>[Math.min(e[0],i[t]),Math.max(e[1],i[s])],[Number.MAX_VALUE,-Number.MAX_VALUE])}}}),s(t,"Stock/Indicators/PC/PCIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Color/Palettes.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i,o){let{sma:a}=i.seriesTypes,{merge:r,extend:n}=o;class l extends a{getValues(t,s){let i,o,a,r,n,l,p;let u=s.period,h=t.xData,d=t.yData,c=d?d.length:0,g=[],y=[],m=[];if(!(c<u)){for(p=u;p<=c;p++)r=h[p-1],n=d.slice(p-u,p),i=((o=(l=e.getArrayExtremes(n,2,1))[1])+(a=l[0]))/2,g.push([r,o,i,a]),y.push(r),m.push([o,i,a]);return{values:g,xData:y,yData:m}}}}return l.defaultOptions=r(a.defaultOptions,{params:{index:void 0,period:20},lineWidth:1,topLine:{styles:{lineColor:s.colors[2],lineWidth:1}},bottomLine:{styles:{lineColor:s.colors[8],lineWidth:1}},dataGrouping:{approximation:"averages"}}),n(l.prototype,{areaLinesNames:["top","bottom"],nameBase:"Price Channel",nameComponents:["period"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),t.compose(l),i.registerSeriesType("pc",l),l}),s(t,"Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{init(){super.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,i,o,r,n,l,p,u;let h=t.period,d=t.topBand,c=t.bottomBand,g=e.xData,y=e.yData,m=y?y.length:0,f=[],D=[],x=[];if(!(g.length<h)&&a(y[0])&&4===y[0].length){for(u=h;u<=m;u++)n=g.slice(u-h,u),l=y.slice(u-h,u),r=(p=super.getValues({xData:n,yData:l},t)).xData[0],i=(s=p.yData[0])*(1+d),o=s*(1-c),f.push([r,i,s,o]),D.push(r),x.push([i,s,o]);return{values:f,xData:D,yData:x}}}}return n.defaultOptions=r(i.defaultOptions,{marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},params:{period:20,topBand:.1,bottomBand:.1},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),o(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","topBand","bottomBand"],nameBase:"Price envelopes",pointArrayMap:["top","middle","bottom"],parallelArrays:["x","y","top","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("priceenvelopes",n),n}),s(t,"Stock/Indicators/PSAR/PSARIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i}=t;function o(e,t){return parseFloat(e.toFixed(t))}class a extends s{constructor(){super(...arguments),this.nameComponents=void 0}getValues(e,t){let s=e.xData,i=e.yData,a=t.maxAccelerationFactor,r=t.increment,n=t.initialAccelerationFactor,l=t.decimals,p=t.index,u=[],h=[],d=[],c=t.initialAccelerationFactor,g,y=i[0][1],m,f,D,x=1,S,v,C,A,I=i[0][2],T,P,k,j;if(!(p>=i.length)){for(j=0;j<p;j++)y=Math.max(i[j][1],y),I=Math.min(i[j][2],o(I,l));for(g=i[j][1]>I?1:-1,m=y-I,f=(c=t.initialAccelerationFactor)*m,u.push([s[p],I]),h.push(s[p]),d.push(o(I,l)),j=p+1;j<i.length;j++)if(S=i[j-1][2],v=i[j-2][2],C=i[j-1][1],A=i[j-2][1],P=i[j][1],k=i[j][2],null!==v&&null!==A&&null!==S&&null!==C&&null!==P&&null!==k){var b,M,L,V,O,R,E,w,B,U,N,G,W;O=g,R=x,E=I,w=f,B=y,I=O===R?1===O?E+w<Math.min(v,S)?E+w:Math.min(v,S):E+w>Math.max(A,C)?E+w:Math.max(A,C):B,b=g,M=y,T=1===b?P>M?P:M:k<M?k:M,L=x,V=I,U=D=1===L&&k>V||-1===L&&P>V?1:-1,N=g,G=y,W=c,f=(c=U===N?1===U&&T>G||-1===U&&T<G?W===a?a:o(W+r,2):W:n)*(m=T-I),u.push([s[j],o(I,l)]),h.push(s[j]),d.push(o(I,l)),x=g,g=D,y=T}return{values:u,xData:h,yData:d}}}}return a.defaultOptions=i(s.defaultOptions,{lineWidth:0,marker:{enabled:!0},states:{hover:{lineWidthPlus:0}},params:{period:void 0,initialAccelerationFactor:.02,maxAccelerationFactor:.2,increment:.02,index:2,decimals:4}}),e.registerSeriesType("psar",a),a}),s(t,"Stock/Indicators/ROC/ROCIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o,extend:a}=t;class r extends s{getValues(e,t){let s=t.period,o=e.xData,a=e.yData,r=a?a.length:0,n=[],l=[],p=[],u,h=-1,d;if(!(o.length<=s)){for(i(a[0])&&(h=t.index),u=s;u<r;u++)d=function(e,t,s,i,o){let a,r;return r=o<0?(a=t[s-i])?(t[s]-a)/a*100:null:(a=t[s-i][o])?(t[s][o]-a)/a*100:null,[e[s],r]}(o,a,u,s,h),n.push(d),l.push(d[0]),p.push(d[1]);return{values:n,xData:l,yData:p}}}}return r.defaultOptions=o(s.defaultOptions,{params:{index:3,period:9}}),a(r.prototype,{nameBase:"Rate of Change"}),e.registerSeriesType("roc",r),r}),s(t,"Stock/Indicators/RSI/RSIIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isNumber:i,merge:o}=t;function a(e,t){return parseFloat(e.toFixed(t))}class r extends s{getValues(e,t){let s=t.period,o=e.xData,r=e.yData,n=r?r.length:0,l=t.decimals,p=[],u=[],h=[],d=0,c=0,g=t.index,y=1,m,f,D,x,S,v;if(!(o.length<s)){for(i(r[0])?v=r:(g=Math.min(g,r[0].length-1),v=r.map(e=>e[g]));y<s;)(f=a(v[y]-v[y-1],l))>0?d+=f:c+=Math.abs(f),y++;for(D=a(d/(s-1),l),x=a(c/(s-1),l),S=y;S<n;S++)(f=a(v[S]-v[S-1],l))>0?(d=f,c=0):(d=0,c=Math.abs(f)),D=a((D*(s-1)+d)/s,l),m=0===(x=a((x*(s-1)+c)/s,l))?100:0===D?0:a(100-100/(1+D/x),l),p.push([o[S],m]),u.push(o[S]),h.push(m);return{values:p,xData:u,yData:h}}}}return r.defaultOptions=o(s.defaultOptions,{params:{decimals:4,index:3}}),e.registerSeriesType("rsi",r),r}),s(t,"Stock/Indicators/Stochastic/StochasticIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i){let{sma:o}=s.seriesTypes,{extend:a,isArray:r,merge:n}=i;class l extends o{init(){super.init.apply(this,arguments),this.options=n({smoothedLine:{styles:{lineColor:this.color}}},this.options)}getValues(t,s){let i=s.periods[0],o=s.periods[1],a=t.xData,n=t.yData,l=n?n.length:0,p=[],u=[],h=[],d,c,g,y=null,m,f;if(l<i||!r(n[0])||4!==n[0].length)return;let D=!0,x=0;for(f=i-1;f<l;f++){if(d=n.slice(f-i+1,f+1),c=(m=e.getArrayExtremes(d,2,1))[0],isNaN(g=(n[f][3]-c)/(m[1]-c)*100)&&D){x++;continue}D&&!isNaN(g)&&(D=!1);let t=u.push(a[f]);isNaN(g)?h.push([h[t-2]&&"number"==typeof h[t-2][0]?h[t-2][0]:null,null]):h.push([g,null]),f>=x+(i-1)+(o-1)&&(y=super.getValues({xData:u.slice(-o),yData:h.slice(-o)},{period:o}).yData[0]),p.push([a[f],g,y]),h[t-1][1]=y}return{values:p,xData:u,yData:h}}}return l.defaultOptions=n(o.defaultOptions,{params:{index:void 0,period:void 0,periods:[14,3]},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>%K: {point.y}<br/>%D: {point.smoothed}<br/>'},smoothedLine:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),a(l.prototype,{areaLinesNames:[],nameComponents:["periods"],nameBase:"Stochastic",pointArrayMap:["y","smoothed"],parallelArrays:["x","y","smoothed"],pointValKey:"y",linesApiNames:["smoothedLine"]}),t.compose(l),s.registerSeriesType("stochastic",l),l}),s(t,"Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s,stochastic:i}=e.seriesTypes,{extend:o,merge:a}=t;class r extends i{getValues(e,t){let i=t.periods,o=super.getValues.call(this,e,t),a={values:[],xData:[],yData:[]};if(!o)return;a.xData=o.xData.slice(i[1]-1);let r=o.yData.slice(i[1]-1),n=s.prototype.getValues.call(this,{xData:a.xData,yData:r},{index:1,period:i[2]});if(n){for(let e=0,t=a.xData.length;e<t;e++)a.yData[e]=[r[e][1],n.yData[e-i[2]+1]||null],a.values[e]=[a.xData[e],r[e][1],n.yData[e-i[2]+1]||null];return a}}}return r.defaultOptions=a(i.defaultOptions,{params:{periods:[14,3,3]}}),o(r.prototype,{nameBase:"Slow Stochastic"}),e.registerSeriesType("slowstochastic",r),r}),s(t,"Stock/Indicators/Supertrend/SupertrendIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{atr:s,sma:i}=e.seriesTypes,{addEvent:o,correctFloat:a,isArray:r,extend:n,merge:l,objectEach:p}=t;function u(e,t,s){return{index:t,close:e.yData[t][s],x:e.xData[t]}}class h extends i{init(){let e=this;super.init.apply(e,arguments);let t=o(this.chart.constructor,"afterLinkSeries",()=>{if(e.options){let t=e.options,s=e.linkedParent.options;t.cropThreshold=s.cropThreshold-(t.params.period-1)}t()},{order:1})}drawGraph(){let e=this,t=e.options,s=e.linkedParent,o=s?s.points:[],a=e.points,r=e.graph,n=o.length-a.length,h=n>0?n:0,d={options:{gapSize:t.gapSize}},c={top:[],bottom:[],intersect:[]},g={top:{styles:{lineWidth:t.lineWidth,lineColor:t.fallingTrendColor||t.color,dashStyle:t.dashStyle}},bottom:{styles:{lineWidth:t.lineWidth,lineColor:t.risingTrendColor||t.color,dashStyle:t.dashStyle}},intersect:t.changeTrendLine},y,m,f,D,x,S,v,C,A,I=a.length;for(;I--;)y=a[I],m=a[I-1],f=o[I-1+h],D=o[I-2+h],x=o[I+h],S=o[I+h+1],v=y.options.color,C={x:y.x,plotX:y.plotX,plotY:y.plotY,isNull:!1},!D&&f&&s.yData[f.index-1]&&(D=u(s,f.index-1,3)),!S&&x&&s.yData[x.index+1]&&(S=u(s,x.index+1,3)),!f&&D&&s.yData[D.index+1]?f=u(s,D.index+1,3):!f&&x&&s.yData[x.index-1]&&(f=u(s,x.index-1,3)),y&&f&&x&&D&&y.x!==f.x&&(y.x===x.x?(D=f,f=x):y.x===D.x?(f=D,D={close:s.yData[f.index-1][3],x:s.xData[f.index-1]}):S&&y.x===S.x&&(f=S,D=x)),m&&D&&f?(A={x:m.x,plotX:m.plotX,plotY:m.plotY,isNull:!1},y.y>=f.close&&m.y>=D.close?(y.color=v||t.fallingTrendColor||t.color,c.top.push(C)):y.y<f.close&&m.y<D.close?(y.color=v||t.risingTrendColor||t.color,c.bottom.push(C)):(c.intersect.push(C),c.intersect.push(A),c.intersect.push(l(A,{isNull:!0})),y.y>=f.close&&m.y<D.close?(y.color=v||t.fallingTrendColor||t.color,m.color=v||t.risingTrendColor||t.color,c.top.push(C),c.top.push(l(A,{isNull:!0}))):y.y<f.close&&m.y>=D.close&&(y.color=v||t.risingTrendColor||t.color,m.color=v||t.fallingTrendColor||t.color,c.bottom.push(C),c.bottom.push(l(A,{isNull:!0}))))):f&&(y.y>=f.close?(y.color=v||t.fallingTrendColor||t.color,c.top.push(C)):(y.color=v||t.risingTrendColor||t.color,c.bottom.push(C)));p(c,function(t,s){e.points=t,e.options=l(g[s].styles,d),e.graph=e["graph"+s+"Line"],i.prototype.drawGraph.call(e),e["graph"+s+"Line"]=e.graph}),e.points=a,e.options=t,e.graph=r}getValues(e,t){let i=t.period,o=t.multiplier,n=e.xData,l=e.yData,p=[],u=[],h=[],d=0===i?0:i-1,c=[],g=[],y=[],m,f,D,x,S,v,C,A,I;if(!(n.length<=i)&&r(l[0])&&4===l[0].length&&!(i<0)){for(I=0,y=s.prototype.getValues.call(this,e,{period:i}).yData;I<y.length;I++)A=l[d+I],C=l[d+I-1]||[],x=c[I-1],S=g[I-1],v=h[I-1],0===I&&(x=S=v=0),m=a((A[1]+A[2])/2+o*y[I]),f=a((A[1]+A[2])/2-o*y[I]),m<x||C[3]>x?c[I]=m:c[I]=x,f>S||C[3]<S?g[I]=f:g[I]=S,v===x&&A[3]<c[I]||v===S&&A[3]<g[I]?D=c[I]:(v===x&&A[3]>c[I]||v===S&&A[3]>g[I])&&(D=g[I]),p.push([n[d+I],D]),u.push(n[d+I]),h.push(D);return{values:p,xData:u,yData:h}}}}return h.defaultOptions=l(i.defaultOptions,{params:{index:void 0,multiplier:3,period:10},risingTrendColor:"#06b535",fallingTrendColor:"#f21313",changeTrendLine:{styles:{lineWidth:1,lineColor:"#333333",dashStyle:"LongDash"}}}),n(h.prototype,{nameBase:"Supertrend",nameComponents:["multiplier","period"]}),e.registerSeriesType("supertrend",h),h}),s(t,"Stock/Indicators/VBP/VBPPoint.js",[t["Core/Series/SeriesRegistry.js"]],function(e){let{sma:{prototype:{pointClass:t}}}=e.seriesTypes;return class extends t{destroy(){this.negativeGraphic&&(this.negativeGraphic=this.negativeGraphic.destroy()),super.destroy.apply(this,arguments)}}}),s(t,"Stock/Indicators/VBP/VBPIndicator.js",[t["Stock/Indicators/VBP/VBPPoint.js"],t["Core/Animation/AnimationUtilities.js"],t["Core/Globals.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s,i,o){let{animObject:a}=t,{noop:r}=s,{column:{prototype:n},sma:l}=i.seriesTypes,{addEvent:p,arrayMax:u,arrayMin:h,correctFloat:d,defined:c,error:g,extend:y,isArray:m,merge:f}=o,D=Math.abs;class x extends l{init(e,t){let s=this;delete t.data,super.init.apply(s,arguments);let i=p(this.chart.constructor,"afterLinkSeries",function(){if(s.options){let t=s.options.params,i=s.linkedParent,o=e.get(t.volumeSeriesID);s.addCustomEvents(i,o)}i()},{order:1});return s}addCustomEvents(e,t){let s=this,i=()=>{s.chart.redraw(),s.setData([]),s.zoneStarts=[],s.zoneLinesSVG&&(s.zoneLinesSVG=s.zoneLinesSVG.destroy())};return s.dataEventsToUnbind.push(p(e,"remove",function(){i()})),t&&s.dataEventsToUnbind.push(p(t,"remove",function(){i()})),s}animate(e){let t=this,s=t.chart.inverted,i=t.group,o={};if(!e&&i){let e=s?t.yAxis.top:t.xAxis.left;s?(i["forceAnimate:translateY"]=!0,o.translateY=e):(i["forceAnimate:translateX"]=!0,o.translateX=e),i.animate(o,y(a(t.options.animation),{step:function(e,s){t.group.attr({scaleX:Math.max(.001,s.pos)})}}))}}drawPoints(){this.options.volumeDivision.enabled&&(this.posNegVolume(!0,!0),n.drawPoints.apply(this,arguments),this.posNegVolume(!1,!1)),n.drawPoints.apply(this,arguments)}posNegVolume(e,t){let s=t?["positive","negative"]:["negative","positive"],i=this.options.volumeDivision,o=this.points.length,a=[],r=[],n=0,l,p,u,h;for(e?(this.posWidths=a,this.negWidths=r):(a=this.posWidths,r=this.negWidths);n<o;n++)(h=this.points[n])[s[0]+"Graphic"]=h.graphic,h.graphic=h[s[1]+"Graphic"],e&&(l=h.shapeArgs.width,(u=(p=this.priceZones[n]).wholeVolumeData)?(a.push(l/u*p.positiveVolumeData),r.push(l/u*p.negativeVolumeData)):(a.push(0),r.push(0))),h.color=t?i.styles.positiveColor:i.styles.negativeColor,h.shapeArgs.width=t?this.posWidths[n]:this.negWidths[n],h.shapeArgs.x=t?h.shapeArgs.x:this.posWidths[n]}translate(){let e=this,t=e.options,s=e.chart,i=e.yAxis,o=i.min,a=e.options.zoneLines,r=e.priceZones,l=0,p,h,c,g,y,m,f,x,S,v;n.translate.apply(e);let C=e.points;C.length&&(f=t.pointPadding<.5?t.pointPadding:.1,p=u(e.volumeDataArray),h=s.plotWidth/2,x=s.plotTop,c=D(i.toPixels(o)-i.toPixels(o+e.rangeStep)),y=D(i.toPixels(o)-i.toPixels(o+e.rangeStep)),f&&(g=D(c*(1-2*f)),l=D((c-g)/2),c=D(g)),C.forEach(function(t,s){S=t.barX=t.plotX=0,v=t.plotY=i.toPixels(r[s].start)-x-(i.reversed?c-y:c)-l,m=d(h*r[s].wholeVolumeData/p),t.pointWidth=m,t.shapeArgs=e.crispCol.apply(e,[S,v,m,c]),t.volumeNeg=r[s].negativeVolumeData,t.volumePos=r[s].positiveVolumeData,t.volumeAll=r[s].wholeVolumeData}),a.enabled&&e.drawZones(s,i,e.zoneStarts,a.styles))}getExtremes(){let e;let t=this.options.compare,s=this.options.cumulative;return this.options.compare?(this.options.compare=void 0,e=super.getExtremes(),this.options.compare=t):this.options.cumulative?(this.options.cumulative=!1,e=super.getExtremes(),this.options.cumulative=s):e=super.getExtremes(),e}getValues(e,t){let s=e.processedXData,i=e.processedYData,o=this.chart,a=t.ranges,r=[],n=[],l=[],p=o.get(t.volumeSeriesID);if(!e.chart){g("Base series not found! In case it has been removed, add a new one.",!0,o);return}if(!p||!p.processedXData.length){let e=p&&!p.processedXData.length?" does not contain any data.":" not found! Check `volumeSeriesID`.";g("Series "+t.volumeSeriesID+e,!0,o);return}let u=m(i[0]);if(u&&4!==i[0].length){g("Type of "+e.name+" series is different than line, OHLC or candlestick.",!0,o);return}return(this.priceZones=this.specifyZones(u,s,i,a,p)).forEach(function(e,t){r.push([e.x,e.end]),n.push(r[t][0]),l.push(r[t][1])}),{values:r,xData:n,yData:l}}specifyZones(e,t,s,i,o){let a=!!e&&function(e){let t=e.length,s=e[0][3],i=s,o=1,a;for(;o<t;o++)(a=e[o][3])<s&&(s=a),a>i&&(i=a);return{min:s,max:i}}(s),r=this.zoneStarts=[],n=[],l=a?a.min:h(s),p=a?a.max:u(s),g=0,y=1,m=this.linkedParent;if(!this.options.compareToMain&&m.dataModify&&(l=m.dataModify.modifyValue(l),p=m.dataModify.modifyValue(p)),!c(l)||!c(p))return this.points.length&&(this.setData([]),this.zoneStarts=[],this.zoneLinesSVG&&(this.zoneLinesSVG=this.zoneLinesSVG.destroy())),[];let f=this.rangeStep=d(p-l)/i;for(r.push(l);g<i-1;g++)r.push(d(r[g]+f));r.push(p);let D=r.length;for(;y<D;y++)n.push({index:y-1,x:t[0],start:r[y-1],end:r[y]});return this.volumePerZone(e,n,o,t,s)}volumePerZone(e,t,s,i,o){let a,r,n,l,p;let u=this,h=s.processedXData,d=s.processedYData,c=t.length-1,g=o.length,y=d.length;return D(g-y)&&(i[0]!==h[0]&&d.unshift(0),i[g-1]!==h[y-1]&&d.push(0)),u.volumeDataArray=[],t.forEach(function(t){for(p=0,t.wholeVolumeData=0,t.positiveVolumeData=0,t.negativeVolumeData=0;p<g;p++){r=!1,n=!1,l=e?o[p][3]:o[p],a=p?e?o[p-1][3]:o[p-1]:l;let s=u.linkedParent;!u.options.compareToMain&&s.dataModify&&(l=s.dataModify.modifyValue(l),a=s.dataModify.modifyValue(a)),l<=t.start&&0===t.index&&(r=!0),l>=t.end&&t.index===c&&(n=!0),(l>t.start||r)&&(l<t.end||n)&&(t.wholeVolumeData+=d[p],a>l?t.negativeVolumeData+=d[p]:t.positiveVolumeData+=d[p])}u.volumeDataArray.push(t.wholeVolumeData)}),t}drawZones(e,t,s,i){let o=e.renderer,a=e.plotWidth,r=e.plotTop,n=this.zoneLinesSVG,l=[],p;s.forEach(function(s){p=t.toPixels(s)-r,l=l.concat(e.renderer.crispLine([["M",0,p],["L",a,p]],i.lineWidth))}),n?n.animate({d:l}):n=this.zoneLinesSVG=o.path(l).attr({"stroke-width":i.lineWidth,stroke:i.color,dashstyle:i.dashStyle,zIndex:this.group.zIndex+.1}).add(this.group)}}return x.defaultOptions=f(l.defaultOptions,{params:{index:void 0,period:void 0,ranges:12,volumeSeriesID:"volume"},zoneLines:{enabled:!0,styles:{color:"#0A9AC9",dashStyle:"LongDash",lineWidth:1}},volumeDivision:{enabled:!0,styles:{positiveColor:"rgba(144, 237, 125, 0.8)",negativeColor:"rgba(244, 91, 91, 0.8)"}},animationLimit:1e3,enableMouseTracking:!1,pointPadding:0,zIndex:-1,crisp:!0,dataGrouping:{enabled:!1},dataLabels:{allowOverlap:!0,enabled:!0,format:"P: {point.volumePos:.2f} | N: {point.volumeNeg:.2f}",padding:0,style:{fontSize:"0.5em"},verticalAlign:"top"}}),y(x.prototype,{nameBase:"Volume by Price",nameComponents:["ranges"],calculateOn:{chart:"render",xAxis:"afterSetExtremes"},pointClass:e,markerAttribs:r,drawGraph:r,getColumnMetrics:n.getColumnMetrics,crispCol:n.crispCol}),i.registerSeriesType("vbp",x),x}),s(t,"Stock/Indicators/VWAP/VWAPIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{error:i,isArray:o,merge:a}=t;class r extends s{getValues(e,t){let s=e.chart,a=e.xData,r=e.yData,n=t.period,l=!0,p;if(!(p=s.get(t.volumeSeriesID))){i("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,s);return}return o(r[0])||(l=!1),this.calculateVWAPValues(l,a,r,p,n)}calculateVWAPValues(e,t,s,i,o){let a,r,n,l,p,u;let h=i.yData,d=i.xData.length,c=t.length,g=[],y=[],m=[],f=[],D=[];for(p=0,a=c<=d?c:d,u=0;p<a;p++)r=(e?(s[p][1]+s[p][2]+s[p][3])/3:s[p])*h[p],n=u?g[p-1]+r:r,l=u?y[p-1]+h[p]:h[p],g.push(n),y.push(l),D.push([t[p],n/l]),m.push(D[p][0]),f.push(D[p][1]),++u===o&&(u=0);return{values:D,xData:m,yData:f}}}return r.defaultOptions=a(s.defaultOptions,{params:{index:void 0,period:30,volumeSeriesID:"volume"}}),e.registerSeriesType("vwap",r),r}),s(t,"Stock/Indicators/WilliamsR/WilliamsRIndicator.js",[t["Stock/Indicators/ArrayUtilities.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{extend:o,isArray:a,merge:r}=s;class n extends i{getValues(t,s){let i,o,r,n,l,p;let u=s.period,h=t.xData,d=t.yData,c=d?d.length:0,g=[],y=[],m=[];if(!(h.length<u)&&a(d[0])&&4===d[0].length){for(p=u-1;p<c;p++)i=d.slice(p-u+1,p+1),l=(o=e.getArrayExtremes(i,2,1))[0],r=-(((n=o[1])-d[p][3])/(n-l)*100),h[p]&&(g.push([h[p],r]),y.push(h[p]),m.push(r));return{values:g,xData:y,yData:m}}}}return n.defaultOptions=r(i.defaultOptions,{params:{index:void 0,period:14}}),o(n.prototype,{nameBase:"Williams %R"}),t.registerSeriesType("williamsr",n),n}),s(t,"Stock/Indicators/WMA/WMAIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,merge:o}=t;function a(e,t,s,i,o){let a=t[i],r=o<0?s[i]:s[i][o];e.push([a,r])}function r(e,t,s,i){let o=e.length,a=e.reduce(function(e,t,s){return[null,e[1]+t[1]*(s+1)]})[1]/((o+1)/2*o),r=t[i-1];return e.shift(),[r,a]}class n extends s{getValues(e,t){let s=t.period,o=e.xData,n=e.yData,l=n?n.length:0,p=o[0],u=[],h=[],d=[],c=1,g=-1,y,m,f=n[0];if(o.length<s)return;i(n[0])&&(g=t.index,f=n[0][g]);let D=[[p,f]];for(;c!==s;)a(D,o,n,c,g),c++;for(y=c;y<l;y++)u.push(m=r(D,o,n,y)),h.push(m[0]),d.push(m[1]),a(D,o,n,y,g);return u.push(m=r(D,o,n,y)),h.push(m[0]),d.push(m[1]),{values:u,xData:h,yData:d}}}return n.defaultOptions=o(s.defaultOptions,{params:{index:3,period:9}}),e.registerSeriesType("wma",n),n}),s(t,"Stock/Indicators/Zigzag/ZigzagIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{merge:i,extend:o}=t;class a extends s{getValues(e,t){let s=t.lowIndex,i=t.highIndex,o=t.deviation/100,a={low:1+o,high:1-o},r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d,c,g,y,m=!1,f=!1;if(!r||r.length<=1||l&&(void 0===n[0][s]||void 0===n[0][i]))return;let D=n[0][s],x=n[0][i];for(d=1;d<l;d++)n[d][s]<=x*a.high?(p.push([r[0],x]),g=[r[d],n[d][s]],y=!0,m=!0):n[d][i]>=D*a.low&&(p.push([r[0],D]),g=[r[d],n[d][i]],y=!1,m=!0),m&&(u.push(p[0][0]),h.push(p[0][1]),c=d++,d=l);for(d=c;d<l;d++)y?(n[d][s]<=g[1]&&(g=[r[d],n[d][s]]),n[d][i]>=g[1]*a.low&&(f=i)):(n[d][i]>=g[1]&&(g=[r[d],n[d][i]]),n[d][s]<=g[1]*a.high&&(f=s)),!1!==f&&(p.push(g),u.push(g[0]),h.push(g[1]),g=[r[d],n[d][f]],y=!y,f=!1);let S=p.length;return 0!==S&&p[S-1][0]<r[l-1]&&(p.push(g),u.push(g[0]),h.push(g[1])),{values:p,xData:u,yData:h}}}return a.defaultOptions=i(s.defaultOptions,{params:{index:void 0,period:void 0,lowIndex:2,highIndex:1,deviation:1}}),o(a.prototype,{nameComponents:["deviation"],nameSuffixes:["%"],nameBase:"Zig Zag"}),e.registerSeriesType("zigzag",a),a}),s(t,"Stock/Indicators/LinearRegression/LinearRegressionIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{isArray:i,extend:o,merge:a}=t;class r extends s{getRegressionLineParameters(e,t){let s=this.options.params.index,o=function(e,t){return i(e)?e[t]:e},a=e.reduce(function(e,t){return t+e},0),r=t.reduce(function(e,t){return o(t,s)+e},0),n=a/e.length,l=r/t.length,p,u,h=0,d=0;for(u=0;u<e.length;u++)h+=(p=e[u]-n)*(o(t[u],s)-l),d+=Math.pow(p,2);let c=d?h/d:0;return{slope:c,intercept:l-c*n}}getEndPointY(e,t){return e.slope*t+e.intercept}transformXData(e,t){let s=e[0];return e.map(function(e){return(e-s)/t})}findClosestDistance(e){let t,s,i;for(i=1;i<e.length-1;i++)(t=e[i]-e[i-1])>0&&(void 0===s||t<s)&&(s=t);return s}getValues(e,t){let s,i,o,a,r,n,l,p,u;let h=e.xData,d=e.yData,c=t.period,g={xData:[],yData:[],values:[]},y=this.options.params.xAxisUnit||this.findClosestDistance(h);for(i=c-1;i<=h.length-1;i++)o=i-c+1,a=i+1,r=h[i],l=h.slice(o,a),p=d.slice(o,a),u=this.transformXData(l,y),s=this.getRegressionLineParameters(u,p),n=this.getEndPointY(s,u[u.length-1]),g.values.push({regressionLineParameters:s,x:r,y:n}),g.xData.push(r),g.yData.push(n);return g}}return r.defaultOptions=a(s.defaultOptions,{params:{xAxisUnit:null},tooltip:{valueDecimals:4}}),o(r.prototype,{nameBase:"Linear Regression Indicator"}),e.registerSeriesType("linearRegression",r),r}),s(t,"Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopesIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{getEndPointY(e){return e.slope}}return a.defaultOptions=o(s.defaultOptions),i(a.prototype,{nameBase:"Linear Regression Slope Indicator"}),e.registerSeriesType("linearRegressionSlope",a),a}),s(t,"Stock/Indicators/LinearRegressionIntercept/LinearRegressionInterceptIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{getEndPointY(e){return e.intercept}}return a.defaultOptions=o(s.defaultOptions),i(a.prototype,{nameBase:"Linear Regression Intercept Indicator"}),e.registerSeriesType("linearRegressionIntercept",a),a}),s(t,"Stock/Indicators/LinearRegressionAngle/LinearRegressionAngleIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{linearRegression:s}=e.seriesTypes,{extend:i,merge:o}=t;class a extends s{slopeToAngle(e){return 180/Math.PI*Math.atan(e)}getEndPointY(e){return this.slopeToAngle(e.slope)}}return a.defaultOptions=o(s.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span>{series.name}: <b>{point.y}\xb0</b><br/>'}}),i(a.prototype,{nameBase:"Linear Regression Angle Indicator"}),e.registerSeriesType("linearRegressionAngle",a),a}),s(t,"Stock/Indicators/ABands/ABandsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,s){let{sma:i}=t.seriesTypes,{correctFloat:o,extend:a,merge:r}=s;class n extends i{getValues(e,t){let s,i,a,r,n,l,p,u,h,d,c;let g=t.period,y=t.factor,m=t.index,f=e.xData,D=e.yData,x=D?D.length:0,S=[],v=[],C=[],A=[],I=[];if(!(x<g)){for(c=0;c<=x;c++){if(c<x){var T,P;T=D[c][2],n=o((P=D[c][1])-T)/(o(P+T)/2)*1e3*y,S.push(D[c][1]*o(1+2*n)),v.push(D[c][2]*o(1-2*n))}c>=g&&(h=f.slice(c-g,c),d=D.slice(c-g,c),p=super.getValues.call(this,{xData:h,yData:S.slice(c-g,c)},{period:g}),u=super.getValues.call(this,{xData:h,yData:v.slice(c-g,c)},{period:g}),r=(l=super.getValues.call(this,{xData:h,yData:d},{period:g,index:m})).xData[0],i=p.yData[0],a=u.yData[0],s=l.yData[0],C.push([r,i,s,a]),A.push(r),I.push([i,s,a]))}return{values:C,xData:A,yData:I}}}}return n.defaultOptions=r(i.defaultOptions,{params:{period:20,factor:.001,index:3},lineWidth:1,topLine:{styles:{lineWidth:1}},bottomLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),a(n.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameBase:"Acceleration Bands",nameComponents:["period","factor"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(n),t.registerSeriesType("abands",n),n}),s(t,"Stock/Indicators/TrendLine/TrendLineIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{extend:i,merge:o,isArray:a}=t;class r extends s{constructor(){super(...arguments),this.updateAllPoints=!0}getValues(e,t){let s=e.xData,i=e.yData,o=[],r=[],n=[],l=[],p=t.index,u=0,h=0,d=0,c=0,g=0;for(let e=0;e<s.length;e++)(0===e||s[e]!==s[e-1])&&g++,o.push(g);for(let e=0;e<o.length;e++)d+=o[e],c+=a(i[e])?i[e][p]:i[e];let y=d/o.length,m=c/i.length;for(let e=0;e<o.length;e++){let t=a(i[e])?i[e][p]:i[e];u+=(o[e]-y)*(t-m),h+=Math.pow(o[e]-y,2)}for(let e=0;e<o.length;e++){if(s[e]===n[n.length-1])continue;let t=s[e],i=m+u/h*(o[e]-y);r.push([t,i]),n.push(t),l.push(i)}return{xData:n,yData:l,values:r}}}return r.defaultOptions=o(s.defaultOptions,{params:{period:void 0,index:3}}),i(r.prototype,{nameBase:"Trendline",nameComponents:void 0}),e.registerSeriesType("trendline",r),r}),s(t,"Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){let{sma:s}=e.seriesTypes,{correctFloat:i,defined:o,extend:a,isArray:r,merge:n}=t;class l extends s{init(){let t=arguments,i=t[1].params,o=i&&i.average?i.average:void 0;this.averageIndicator=e.seriesTypes[o]||s,this.averageIndicator.prototype.init.apply(this,t)}calculateDisparityIndex(e,t){return i(e-t)/t*100}getValues(e,t){let s=t.index,i=e.xData,a=e.yData,n=a?a.length:0,l=[],p=[],u=[],h=this.averageIndicator,d=r(a[0]),c=h.prototype.getValues(e,t),g=c.yData,y=i.indexOf(c.xData[0]);if(g&&0!==g.length&&o(s)&&!(a.length<=y)){for(let e=y;e<n;e++){let t=this.calculateDisparityIndex(d?a[e][s]:a[e],g[e-y]);l.push([i[e],t]),p.push(i[e]),u.push(t)}return{values:l,xData:p,yData:u}}}}return l.defaultOptions=n(s.defaultOptions,{params:{average:"sma",index:3},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),a(l.prototype,{nameBase:"Disparity Index",nameComponents:["period","average"]}),e.registerSeriesType("disparityindex",l),l}),s(t,"masters/indicators/indicators-all.src.js",[t["Core/Globals.js"]],function(e){return e})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highstock JS v11.4.4 (2024-07-02)
2
+ * @license Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * All technical indicators for Highcharts Stock
5
5
  *
@@ -12,7 +12,7 @@
12
12
  factory['default'] = factory;
13
13
  module.exports = factory;
14
14
  } else if (typeof define === 'function' && define.amd) {
15
- define('highcharts/indicators/indicators-all', ['highcharts', 'modules/stock'], function (Highcharts) {
15
+ define('highcharts/indicators/indicators-all', ['highcharts', 'highcharts/modules/stock'], function (Highcharts) {
16
16
  factory(Highcharts);
17
17
  factory.Highcharts = Highcharts;
18
18
  return factory;
@@ -1,9 +1,9 @@
1
1
  !/**
2
- * Highstock JS v11.4.4 (2024-07-02)
2
+ * Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
6
6
  * (c) 2010-2024 Pawel Fus, Sebastian Bochan
7
7
  *
8
8
  * License: www.highcharts.com/license
9
- */function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/indicators/indicators",["highcharts","modules/stock"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function a(e,a,i,s){e.hasOwnProperty(a)||(e[a]=s.apply(null,i),"function"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:a,module:e[a]}})))}a(e,"Stock/Indicators/SMA/SMAIndicator.js",[e["Core/Chart/Chart.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e,a){let{line:i}=e.seriesTypes,{addEvent:s,fireEvent:n,error:o,extend:r,isArray:l,merge:p,pick:h,splat:u}=a;class c extends i{destroy(){this.dataEventsToUnbind.forEach(function(t){t()}),super.destroy.apply(this,arguments)}getName(){let t=[],e=this.name;return e||((this.nameComponents||[]).forEach(function(e,a){t.push(this.options.params[e]+h(this.nameSuffixes[a],""))},this),e=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+t.join(", ")+")":"")),e}getValues(t,e){let a=e.period,i=t.xData,s=t.yData,n=s.length,o=[],r=[],p=[],h,u=-1,c=0,d,f=0;if(!(i.length<a)){for(l(s[0])&&(u=e.index?e.index:0);c<a-1;)f+=u<0?s[c]:s[c][u],c++;for(h=c;h<n;h++)f+=u<0?s[h]:s[h][u],d=[i[h],f/a],o.push(d),r.push(d[0]),p.push(d[1]),f-=u<0?s[h-c]:s[h-c][u];return{values:o,xData:r,yData:p}}}init(e,a){let i=this;super.init.call(i,e,a);let n=s(t,"afterLinkSeries",function({isUpdating:t}){if(t)return;let a=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return o("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,e);if(!a&&(i.dataEventsToUnbind.push(s(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push(s(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.processedYData||i.recalculateValues();else if(!a){let t=s(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),t()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(n)}recalculateValues(){let t=[],e=this.points||[],a=(this.xData||[]).length,i=!0,s,o,r,l,p,h,c=this.linkedParent.options&&this.linkedParent.yData&&this.linkedParent.yData.length&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};if(a&&!this.hasGroupedData&&this.visible&&this.points){if(this.cropped){for(this.xAxis&&(l=this.xAxis.min,p=this.xAxis.max),r=this.cropData(c.xData,c.yData,l,p),h=0;h<r.xData.length;h++)t.push([r.xData[h]].concat(u(r.yData[h])));s=c.xData.indexOf(this.xData[0]),o=c.xData.indexOf(this.xData[this.xData.length-1]),-1===s&&o===c.xData.length-2&&t[0][0]===e[0].x&&t.shift(),this.updateData(t)}else(this.updateAllPoints||c.xData.length!==a-1&&c.xData.length!==a+1)&&(i=!1,this.updateData(c.values))}i&&(this.xData=c.xData,this.yData=c.yData,this.options.data=c.values),this.calculateOn.xAxis&&this.processedXData&&(delete this.processedXData,this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,n(this,"updatedData")}processData(){let t=this.options.compareToMain,e=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&e&&e.dataModify&&e.dataModify.compareValue&&t&&(this.dataModify.compareValue=e.dataModify.compareValue)}}return c.defaultOptions=p(i.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),r(c.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),e.registerSeriesType("sma",c),c}),a(e,"Stock/Indicators/EMA/EMAIndicator.js",[e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e){let{sma:a}=t.seriesTypes,{correctFloat:i,isArray:s,merge:n}=e;class o extends a{accumulatePeriodPoints(t,e,a){let i=0,s=0;for(;s<t;)i+=e<0?a[s]:a[s][e],s++;return i}calculateEma(t,e,a,s,n,o,r){let l=t[a-1],p=o<0?e[a-1]:e[a-1][o];return[l,void 0===n?r:i(p*s+n*(1-s))]}getValues(t,e){let a=e.period,i=t.xData,n=t.yData,o=n?n.length:0,r=2/(a+1),l=[],p=[],h=[],u,c,d,f=-1,m=0;if(!(o<a)){for(s(n[0])&&(f=e.index?e.index:0),m=this.accumulatePeriodPoints(a,f,n)/a,d=a;d<o+1;d++)c=this.calculateEma(i,n,d,r,u,f,m),l.push(c),p.push(c[0]),h.push(c[1]),u=c[1];return{values:l,xData:p,yData:h}}}}return o.defaultOptions=n(a.defaultOptions,{params:{index:3,period:9}}),t.registerSeriesType("ema",o),o}),a(e,"Stock/Indicators/MultipleLinesComposition.js",[e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e){var a;let{sma:{prototype:i}}=t.seriesTypes,{defined:s,error:n,merge:o}=e;return function(t){let e=["bottomLine"],a=["top","bottom"],r=["top"];function l(t){return"plot"+t.charAt(0).toUpperCase()+t.slice(1)}function p(t,e){let a=[];return(t.pointArrayMap||[]).forEach(t=>{t!==e&&a.push(l(t))}),a}function h(){let t=this,e=t.pointValKey,a=t.linesApiNames,r=t.areaLinesNames,h=t.points,u=t.options,c=t.graph,d={options:{gapSize:u.gapSize}},f=[],m=p(t,e),x=h.length,y;if(m.forEach((t,e)=>{for(f[e]=[];x--;)y=h[x],f[e].push({x:y.x,plotX:y.plotX,plotY:y[t],isNull:!s(y[t])});x=h.length}),t.userOptions.fillColor&&r.length){let e=f[m.indexOf(l(r[0]))],a=1===r.length?h:f[m.indexOf(l(r[1]))],s=t.color;t.points=a,t.nextPoints=e,t.color=t.userOptions.fillColor,t.options=o(h,d),t.graph=t.area,t.fillGraph=!0,i.drawGraph.call(t),t.area=t.graph,delete t.nextPoints,delete t.fillGraph,t.color=s}a.forEach((e,a)=>{f[a]?(t.points=f[a],u[e]?t.options=o(u[e].styles,d):n('Error: "There is no '+e+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),t.graph=t["graph"+e],i.drawGraph.call(t),t["graph"+e]=t.graph):n('Error: "'+e+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),t.points=h,t.options=u,t.graph=c,i.drawGraph.call(t)}function u(t){let e,a=[],s=[];if(t=t||this.points,this.fillGraph&&this.nextPoints){if((e=i.getGraphPath.call(this,this.nextPoints))&&e.length){e[0][0]="L",a=i.getGraphPath.call(this,t),s=e.slice(0,a.length);for(let t=s.length-1;t>=0;t--)a.push(s[t])}}else a=i.getGraphPath.apply(this,arguments);return a}function c(t){let e=[];return(this.pointArrayMap||[]).forEach(a=>{e.push(t[a])}),e}function d(){let t=this.pointArrayMap,e=[],a;e=p(this),i.translate.apply(this,arguments),this.points.forEach(i=>{t.forEach((t,s)=>{a=i[t],this.dataModify&&(a=this.dataModify.modifyValue(a)),null!==a&&(i[e[s]]=this.yAxis.toPixels(a,!0))})})}t.compose=function(t){let i=t.prototype;return i.linesApiNames=i.linesApiNames||e.slice(),i.pointArrayMap=i.pointArrayMap||a.slice(),i.pointValKey=i.pointValKey||"top",i.areaLinesNames=i.areaLinesNames||r.slice(),i.drawGraph=h,i.getGraphPath=u,i.toYData=c,i.translate=d,t}}(a||(a={})),a}),a(e,"masters/indicators/indicators.src.js",[e["Core/Globals.js"],e["Stock/Indicators/MultipleLinesComposition.js"]],function(t,e){return t.MultipleLinesComposition=t.MultipleLinesComposition||e,t})});
9
+ */function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/indicators/indicators",["highcharts","highcharts/modules/stock"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function a(e,a,i,s){e.hasOwnProperty(a)||(e[a]=s.apply(null,i),"function"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:a,module:e[a]}})))}a(e,"Stock/Indicators/SMA/SMAIndicator.js",[e["Core/Chart/Chart.js"],e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e,a){let{line:i}=e.seriesTypes,{addEvent:s,fireEvent:n,error:o,extend:r,isArray:l,merge:p,pick:h,splat:u}=a;class c extends i{destroy(){this.dataEventsToUnbind.forEach(function(t){t()}),super.destroy.apply(this,arguments)}getName(){let t=[],e=this.name;return e||((this.nameComponents||[]).forEach(function(e,a){t.push(this.options.params[e]+h(this.nameSuffixes[a],""))},this),e=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+t.join(", ")+")":"")),e}getValues(t,e){let a=e.period,i=t.xData,s=t.yData,n=s.length,o=[],r=[],p=[],h,u=-1,c=0,d,f=0;if(!(i.length<a)){for(l(s[0])&&(u=e.index?e.index:0);c<a-1;)f+=u<0?s[c]:s[c][u],c++;for(h=c;h<n;h++)f+=u<0?s[h]:s[h][u],d=[i[h],f/a],o.push(d),r.push(d[0]),p.push(d[1]),f-=u<0?s[h-c]:s[h-c][u];return{values:o,xData:r,yData:p}}}init(e,a){let i=this;super.init.call(i,e,a);let n=s(t,"afterLinkSeries",function({isUpdating:t}){if(t)return;let a=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return o("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,e);if(!a&&(i.dataEventsToUnbind.push(s(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push(s(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.processedYData||i.recalculateValues();else if(!a){let t=s(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),t()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(n)}recalculateValues(){let t=[],e=this.points||[],a=(this.xData||[]).length,i=!0,s,o,r,l,p,h,c=this.linkedParent.options&&this.linkedParent.yData&&this.linkedParent.yData.length&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};if(a&&!this.hasGroupedData&&this.visible&&this.points){if(this.cropped){for(this.xAxis&&(l=this.xAxis.min,p=this.xAxis.max),r=this.cropData(c.xData,c.yData,l,p),h=0;h<r.xData.length;h++)t.push([r.xData[h]].concat(u(r.yData[h])));s=c.xData.indexOf(this.xData[0]),o=c.xData.indexOf(this.xData[this.xData.length-1]),-1===s&&o===c.xData.length-2&&t[0][0]===e[0].x&&t.shift(),this.updateData(t)}else(this.updateAllPoints||c.xData.length!==a-1&&c.xData.length!==a+1)&&(i=!1,this.updateData(c.values))}i&&(this.xData=c.xData,this.yData=c.yData,this.options.data=c.values),this.calculateOn.xAxis&&this.processedXData&&(delete this.processedXData,this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,n(this,"updatedData")}processData(){let t=this.options.compareToMain,e=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&e&&e.dataModify&&e.dataModify.compareValue&&t&&(this.dataModify.compareValue=e.dataModify.compareValue)}}return c.defaultOptions=p(i.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),r(c.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),e.registerSeriesType("sma",c),c}),a(e,"Stock/Indicators/EMA/EMAIndicator.js",[e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e){let{sma:a}=t.seriesTypes,{correctFloat:i,isArray:s,merge:n}=e;class o extends a{accumulatePeriodPoints(t,e,a){let i=0,s=0;for(;s<t;)i+=e<0?a[s]:a[s][e],s++;return i}calculateEma(t,e,a,s,n,o,r){let l=t[a-1],p=o<0?e[a-1]:e[a-1][o];return[l,void 0===n?r:i(p*s+n*(1-s))]}getValues(t,e){let a=e.period,i=t.xData,n=t.yData,o=n?n.length:0,r=2/(a+1),l=[],p=[],h=[],u,c,d,f=-1,m=0;if(!(o<a)){for(s(n[0])&&(f=e.index?e.index:0),m=this.accumulatePeriodPoints(a,f,n)/a,d=a;d<o+1;d++)c=this.calculateEma(i,n,d,r,u,f,m),l.push(c),p.push(c[0]),h.push(c[1]),u=c[1];return{values:l,xData:p,yData:h}}}}return o.defaultOptions=n(a.defaultOptions,{params:{index:3,period:9}}),t.registerSeriesType("ema",o),o}),a(e,"Stock/Indicators/MultipleLinesComposition.js",[e["Core/Series/SeriesRegistry.js"],e["Core/Utilities.js"]],function(t,e){var a;let{sma:{prototype:i}}=t.seriesTypes,{defined:s,error:n,merge:o}=e;return function(t){let e=["bottomLine"],a=["top","bottom"],r=["top"];function l(t){return"plot"+t.charAt(0).toUpperCase()+t.slice(1)}function p(t,e){let a=[];return(t.pointArrayMap||[]).forEach(t=>{t!==e&&a.push(l(t))}),a}function h(){let t=this,e=t.pointValKey,a=t.linesApiNames,r=t.areaLinesNames,h=t.points,u=t.options,c=t.graph,d={options:{gapSize:u.gapSize}},f=[],m=p(t,e),x=h.length,y;if(m.forEach((t,e)=>{for(f[e]=[];x--;)y=h[x],f[e].push({x:y.x,plotX:y.plotX,plotY:y[t],isNull:!s(y[t])});x=h.length}),t.userOptions.fillColor&&r.length){let e=f[m.indexOf(l(r[0]))],a=1===r.length?h:f[m.indexOf(l(r[1]))],s=t.color;t.points=a,t.nextPoints=e,t.color=t.userOptions.fillColor,t.options=o(h,d),t.graph=t.area,t.fillGraph=!0,i.drawGraph.call(t),t.area=t.graph,delete t.nextPoints,delete t.fillGraph,t.color=s}a.forEach((e,a)=>{f[a]?(t.points=f[a],u[e]?t.options=o(u[e].styles,d):n('Error: "There is no '+e+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),t.graph=t["graph"+e],i.drawGraph.call(t),t["graph"+e]=t.graph):n('Error: "'+e+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),t.points=h,t.options=u,t.graph=c,i.drawGraph.call(t)}function u(t){let e,a=[],s=[];if(t=t||this.points,this.fillGraph&&this.nextPoints){if((e=i.getGraphPath.call(this,this.nextPoints))&&e.length){e[0][0]="L",a=i.getGraphPath.call(this,t),s=e.slice(0,a.length);for(let t=s.length-1;t>=0;t--)a.push(s[t])}}else a=i.getGraphPath.apply(this,arguments);return a}function c(t){let e=[];return(this.pointArrayMap||[]).forEach(a=>{e.push(t[a])}),e}function d(){let t=this.pointArrayMap,e=[],a;e=p(this),i.translate.apply(this,arguments),this.points.forEach(i=>{t.forEach((t,s)=>{a=i[t],this.dataModify&&(a=this.dataModify.modifyValue(a)),null!==a&&(i[e[s]]=this.yAxis.toPixels(a,!0))})})}t.compose=function(t){let i=t.prototype;return i.linesApiNames=i.linesApiNames||e.slice(),i.pointArrayMap=i.pointArrayMap||a.slice(),i.pointValKey=i.pointValKey||"top",i.areaLinesNames=i.areaLinesNames||r.slice(),i.drawGraph=h,i.getGraphPath=u,i.toYData=c,i.translate=d,t}}(a||(a={})),a}),a(e,"masters/indicators/indicators.src.js",[e["Core/Globals.js"],e["Stock/Indicators/MultipleLinesComposition.js"]],function(t,e){return t.MultipleLinesComposition=t.MultipleLinesComposition||e,t})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highstock JS v11.4.4 (2024-07-02)
2
+ * @license Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
@@ -12,7 +12,7 @@
12
12
  factory['default'] = factory;
13
13
  module.exports = factory;
14
14
  } else if (typeof define === 'function' && define.amd) {
15
- define('highcharts/indicators/indicators', ['highcharts', 'modules/stock'], function (Highcharts) {
15
+ define('highcharts/indicators/indicators', ['highcharts', 'highcharts/modules/stock'], function (Highcharts) {
16
16
  factory(Highcharts);
17
17
  factory.Highcharts = Highcharts;
18
18
  return factory;
@@ -1,9 +1,9 @@
1
1
  !/**
2
- * Highstock JS v11.4.4 (2024-07-02)
2
+ * Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
6
6
  * (c) 2010-2024 Daniel Studencki
7
7
  *
8
8
  * License: www.highcharts.com/license
9
- */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/keltner-channels",["highcharts","modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,o,n){t.hasOwnProperty(i)||(t[i]=n.apply(null,o),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var i;let{sma:{prototype:o}}=e.seriesTypes,{defined:n,error:s,merge:r}=t;return function(e){let t=["bottomLine"],i=["top","bottom"],a=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let i=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&i.push(l(e))}),i}function h(){let e=this,t=e.pointValKey,i=e.linesApiNames,a=e.areaLinesNames,h=e.points,c=e.options,d=e.graph,u={options:{gapSize:c.gapSize}},m=[],f=p(e,t),y=h.length,g;if(f.forEach((e,t)=>{for(m[t]=[];y--;)g=h[y],m[t].push({x:g.x,plotX:g.plotX,plotY:g[e],isNull:!n(g[e])});y=h.length}),e.userOptions.fillColor&&a.length){let t=m[f.indexOf(l(a[0]))],i=1===a.length?h:m[f.indexOf(l(a[1]))],n=e.color;e.points=i,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=r(h,u),e.graph=e.area,e.fillGraph=!0,o.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=n}i.forEach((t,i)=>{m[i]?(e.points=m[i],c[t]?e.options=r(c[t].styles,u):s('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],o.drawGraph.call(e),e["graph"+t]=e.graph):s('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=h,e.options=c,e.graph=d,o.drawGraph.call(e)}function c(e){let t,i=[],n=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=o.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",i=o.getGraphPath.call(this,e),n=t.slice(0,i.length);for(let e=n.length-1;e>=0;e--)i.push(n[e])}}else i=o.getGraphPath.apply(this,arguments);return i}function d(e){let t=[];return(this.pointArrayMap||[]).forEach(i=>{t.push(e[i])}),t}function u(){let e=this.pointArrayMap,t=[],i;t=p(this),o.translate.apply(this,arguments),this.points.forEach(o=>{e.forEach((e,n)=>{i=o[e],this.dataModify&&(i=this.dataModify.modifyValue(i)),null!==i&&(o[t[n]]=this.yAxis.toPixels(i,!0))})})}e.compose=function(e){let o=e.prototype;return o.linesApiNames=o.linesApiNames||t.slice(),o.pointArrayMap=o.pointArrayMap||i.slice(),o.pointValKey=o.pointValKey||"top",o.areaLinesNames=o.areaLinesNames||a.slice(),o.drawGraph=h,o.getGraphPath=c,o.toYData=d,o.translate=u,e}}(i||(i={})),i}),i(t,"Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,i){let{sma:o}=t.seriesTypes,{correctFloat:n,extend:s,merge:r}=i;class a extends o{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,i){let o,s,r,a,l,p,h;let c=i.period,d=i.periodATR,u=i.multiplierATR,m=i.index,f=e.yData,y=f?f.length:0,g=[],C=t.seriesTypes.ema.prototype.getValues(e,{period:c,index:m}),A=t.seriesTypes.atr.prototype.getValues(e,{period:d}),x=[],b=[];if(!(y<c)){for(h=c;h<=y;h++)l=C.values[h-c],p=A.values[h-d],a=l[0],s=n(l[1]+u*p[1]),r=n(l[1]-u*p[1]),o=l[1],g.push([a,s,o,r]),x.push(a),b.push([s,o,r]);return{values:g,xData:x,yData:b}}}}return a.defaultOptions=r(o.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),s(a.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(a),t.registerSeriesType("keltnerchannels",a),a}),i(t,"masters/indicators/keltner-channels.src.js",[t["Core/Globals.js"]],function(e){return e})});
9
+ */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/keltner-channels",["highcharts","highcharts/modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,o,s){t.hasOwnProperty(i)||(t[i]=s.apply(null,o),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var i;let{sma:{prototype:o}}=e.seriesTypes,{defined:s,error:n,merge:r}=t;return function(e){let t=["bottomLine"],i=["top","bottom"],a=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let i=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&i.push(l(e))}),i}function h(){let e=this,t=e.pointValKey,i=e.linesApiNames,a=e.areaLinesNames,h=e.points,c=e.options,d=e.graph,u={options:{gapSize:c.gapSize}},m=[],f=p(e,t),y=h.length,g;if(f.forEach((e,t)=>{for(m[t]=[];y--;)g=h[y],m[t].push({x:g.x,plotX:g.plotX,plotY:g[e],isNull:!s(g[e])});y=h.length}),e.userOptions.fillColor&&a.length){let t=m[f.indexOf(l(a[0]))],i=1===a.length?h:m[f.indexOf(l(a[1]))],s=e.color;e.points=i,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=r(h,u),e.graph=e.area,e.fillGraph=!0,o.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=s}i.forEach((t,i)=>{m[i]?(e.points=m[i],c[t]?e.options=r(c[t].styles,u):n('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],o.drawGraph.call(e),e["graph"+t]=e.graph):n('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=h,e.options=c,e.graph=d,o.drawGraph.call(e)}function c(e){let t,i=[],s=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=o.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",i=o.getGraphPath.call(this,e),s=t.slice(0,i.length);for(let e=s.length-1;e>=0;e--)i.push(s[e])}}else i=o.getGraphPath.apply(this,arguments);return i}function d(e){let t=[];return(this.pointArrayMap||[]).forEach(i=>{t.push(e[i])}),t}function u(){let e=this.pointArrayMap,t=[],i;t=p(this),o.translate.apply(this,arguments),this.points.forEach(o=>{e.forEach((e,s)=>{i=o[e],this.dataModify&&(i=this.dataModify.modifyValue(i)),null!==i&&(o[t[s]]=this.yAxis.toPixels(i,!0))})})}e.compose=function(e){let o=e.prototype;return o.linesApiNames=o.linesApiNames||t.slice(),o.pointArrayMap=o.pointArrayMap||i.slice(),o.pointValKey=o.pointValKey||"top",o.areaLinesNames=o.areaLinesNames||a.slice(),o.drawGraph=h,o.getGraphPath=c,o.toYData=d,o.translate=u,e}}(i||(i={})),i}),i(t,"Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,i){let{sma:o}=t.seriesTypes,{correctFloat:s,extend:n,merge:r}=i;class a extends o{init(){t.seriesTypes.sma.prototype.init.apply(this,arguments),this.options=r({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,i){let o,n,r,a,l,p,h;let c=i.period,d=i.periodATR,u=i.multiplierATR,m=i.index,f=e.yData,y=f?f.length:0,g=[],C=t.seriesTypes.ema.prototype.getValues(e,{period:c,index:m}),A=t.seriesTypes.atr.prototype.getValues(e,{period:d}),x=[],b=[];if(!(y<c)){for(h=c;h<=y;h++)l=C.values[h-c],p=A.values[h-d],a=l[0],n=s(l[1]+u*p[1]),r=s(l[1]-u*p[1]),o=l[1],g.push([a,n,o,r]),x.push(a),b.push([n,o,r]);return{values:g,xData:x,yData:b}}}}return a.defaultOptions=r(o.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),n(a.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),e.compose(a),t.registerSeriesType("keltnerchannels",a),a}),i(t,"masters/indicators/keltner-channels.src.js",[t["Core/Globals.js"]],function(e){return e})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highstock JS v11.4.4 (2024-07-02)
2
+ * @license Highstock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
@@ -12,7 +12,7 @@
12
12
  factory['default'] = factory;
13
13
  module.exports = factory;
14
14
  } else if (typeof define === 'function' && define.amd) {
15
- define('highcharts/indicators/keltner-channels', ['highcharts', 'modules/stock'], function (Highcharts) {
15
+ define('highcharts/indicators/keltner-channels', ['highcharts', 'highcharts/modules/stock'], function (Highcharts) {
16
16
  factory(Highcharts);
17
17
  factory.Highcharts = Highcharts;
18
18
  return factory;
@@ -1,9 +1,9 @@
1
1
  !/**
2
- * Highcharts Stock JS v11.4.4 (2024-07-02)
2
+ * Highcharts Stock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
6
6
  * (c) 2010-2024 Karol Kolodziej
7
7
  *
8
8
  * License: www.highcharts.com/license
9
- */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/klinger",["highcharts","modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,o,s){t.hasOwnProperty(i)||(t[i]=s.apply(null,o),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var i;let{sma:{prototype:o}}=e.seriesTypes,{defined:s,error:r,merge:a}=t;return function(e){let t=["bottomLine"],i=["top","bottom"],n=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let i=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&i.push(l(e))}),i}function h(){let e=this,t=e.pointValKey,i=e.linesApiNames,n=e.areaLinesNames,h=e.points,u=e.options,c=e.graph,g={options:{gapSize:u.gapSize}},d=[],f=p(e,t),m=h.length,y;if(f.forEach((e,t)=>{for(d[t]=[];m--;)y=h[m],d[t].push({x:y.x,plotX:y.plotX,plotY:y[e],isNull:!s(y[e])});m=h.length}),e.userOptions.fillColor&&n.length){let t=d[f.indexOf(l(n[0]))],i=1===n.length?h:d[f.indexOf(l(n[1]))],s=e.color;e.points=i,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=a(h,g),e.graph=e.area,e.fillGraph=!0,o.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=s}i.forEach((t,i)=>{d[i]?(e.points=d[i],u[t]?e.options=a(u[t].styles,g):r('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],o.drawGraph.call(e),e["graph"+t]=e.graph):r('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=h,e.options=u,e.graph=c,o.drawGraph.call(e)}function u(e){let t,i=[],s=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=o.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",i=o.getGraphPath.call(this,e),s=t.slice(0,i.length);for(let e=s.length-1;e>=0;e--)i.push(s[e])}}else i=o.getGraphPath.apply(this,arguments);return i}function c(e){let t=[];return(this.pointArrayMap||[]).forEach(i=>{t.push(e[i])}),t}function g(){let e=this.pointArrayMap,t=[],i;t=p(this),o.translate.apply(this,arguments),this.points.forEach(o=>{e.forEach((e,s)=>{i=o[e],this.dataModify&&(i=this.dataModify.modifyValue(i)),null!==i&&(o[t[s]]=this.yAxis.toPixels(i,!0))})})}e.compose=function(e){let o=e.prototype;return o.linesApiNames=o.linesApiNames||t.slice(),o.pointArrayMap=o.pointArrayMap||i.slice(),o.pointValKey=o.pointValKey||"top",o.areaLinesNames=o.areaLinesNames||n.slice(),o.drawGraph=h,o.getGraphPath=u,o.toYData=c,o.translate=g,e}}(i||(i={})),i}),i(t,"Stock/Indicators/Klinger/KlingerIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,i){let{ema:o,sma:s}=t.seriesTypes,{correctFloat:r,error:a,extend:n,isArray:l,merge:p}=i;class h extends s{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,i=this.options,o=this.linkedParent,s=l(e)&&4===e.length,r=this.volumeSeries||(this.volumeSeries=t.get(i.params.volumeSeriesID));return r||a("Series "+i.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,o.chart),!!([o,r].every(function(e){return e&&e.xData&&e.xData.length>=i.params.slowAvgPeriod})&&s)}getCM(e,t,i,o,s){return r(t+(i===o?e:s))}getDM(e,t){return r(e-t)}getVolumeForce(e){let t=[],i=0,o,s=1,r=0,a=e[0][1]-e[0][2],n=0,l;for(;s<e.length;s++)l=this.calculateTrend(e,s),o=this.getDM(e[s][1],e[s][2]),i=this.getCM(r,o,l,n,a),t.push([this.volumeSeries.yData[s]*l*Math.abs(2*(o/i-1))*100]),n=l,r=i,a=o;return t}getEMA(e,t,i,s,r,a,n){return o.prototype.calculateEma(n||[],e,void 0===a?1:a,s,t,void 0===r?-1:r,i)}getSMA(e,t,i){return o.prototype.accumulatePeriodPoints(e,t,i)/e}getValues(e,t){let i=[],o=e.xData,s=e.yData,a=[],n=[],l=[],p,h=0,u=0,c,g,d,f=null;if(!this.isValidData(s[0]))return;let m=this.getVolumeForce(s),y=this.getSMA(t.fastAvgPeriod,0,m),A=this.getSMA(t.slowAvgPeriod,0,m),v=2/(t.fastAvgPeriod+1),P=2/(t.slowAvgPeriod+1);for(;h<s.length;h++)h>=t.fastAvgPeriod&&(g=u=this.getEMA(m,g,y,v,0,h,o)[1]),h>=t.slowAvgPeriod&&(d=c=this.getEMA(m,d,A,P,0,h,o)[1],l.push(p=r(u-c)),l.length>=t.signalPeriod&&(f=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),i.push([o[h],p,f]),a.push(o[h]),n.push([p,f]));return{values:i,xData:a,yData:n}}}return h.defaultOptions=p(s.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),n(h.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),e.compose(h),t.registerSeriesType("klinger",h),h}),i(t,"masters/indicators/klinger.src.js",[t["Core/Globals.js"]],function(e){return e})});
9
+ */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/indicators/klinger",["highcharts","highcharts/modules/stock"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,s,o){t.hasOwnProperty(i)||(t[i]=o.apply(null,s),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Stock/Indicators/MultipleLinesComposition.js",[t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t){var i;let{sma:{prototype:s}}=e.seriesTypes,{defined:o,error:r,merge:a}=t;return function(e){let t=["bottomLine"],i=["top","bottom"],n=["top"];function l(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function p(e,t){let i=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&i.push(l(e))}),i}function h(){let e=this,t=e.pointValKey,i=e.linesApiNames,n=e.areaLinesNames,h=e.points,u=e.options,c=e.graph,g={options:{gapSize:u.gapSize}},d=[],f=p(e,t),m=h.length,y;if(f.forEach((e,t)=>{for(d[t]=[];m--;)y=h[m],d[t].push({x:y.x,plotX:y.plotX,plotY:y[e],isNull:!o(y[e])});m=h.length}),e.userOptions.fillColor&&n.length){let t=d[f.indexOf(l(n[0]))],i=1===n.length?h:d[f.indexOf(l(n[1]))],o=e.color;e.points=i,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=a(h,g),e.graph=e.area,e.fillGraph=!0,s.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=o}i.forEach((t,i)=>{d[i]?(e.points=d[i],u[t]?e.options=a(u[t].styles,g):r('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],s.drawGraph.call(e),e["graph"+t]=e.graph):r('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=h,e.options=u,e.graph=c,s.drawGraph.call(e)}function u(e){let t,i=[],o=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=s.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",i=s.getGraphPath.call(this,e),o=t.slice(0,i.length);for(let e=o.length-1;e>=0;e--)i.push(o[e])}}else i=s.getGraphPath.apply(this,arguments);return i}function c(e){let t=[];return(this.pointArrayMap||[]).forEach(i=>{t.push(e[i])}),t}function g(){let e=this.pointArrayMap,t=[],i;t=p(this),s.translate.apply(this,arguments),this.points.forEach(s=>{e.forEach((e,o)=>{i=s[e],this.dataModify&&(i=this.dataModify.modifyValue(i)),null!==i&&(s[t[o]]=this.yAxis.toPixels(i,!0))})})}e.compose=function(e){let s=e.prototype;return s.linesApiNames=s.linesApiNames||t.slice(),s.pointArrayMap=s.pointArrayMap||i.slice(),s.pointValKey=s.pointValKey||"top",s.areaLinesNames=s.areaLinesNames||n.slice(),s.drawGraph=h,s.getGraphPath=u,s.toYData=c,s.translate=g,e}}(i||(i={})),i}),i(t,"Stock/Indicators/Klinger/KlingerIndicator.js",[t["Stock/Indicators/MultipleLinesComposition.js"],t["Core/Series/SeriesRegistry.js"],t["Core/Utilities.js"]],function(e,t,i){let{ema:s,sma:o}=t.seriesTypes,{correctFloat:r,error:a,extend:n,isArray:l,merge:p}=i;class h extends o{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,i=this.options,s=this.linkedParent,o=l(e)&&4===e.length,r=this.volumeSeries||(this.volumeSeries=t.get(i.params.volumeSeriesID));return r||a("Series "+i.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,s.chart),!!([s,r].every(function(e){return e&&e.xData&&e.xData.length>=i.params.slowAvgPeriod})&&o)}getCM(e,t,i,s,o){return r(t+(i===s?e:o))}getDM(e,t){return r(e-t)}getVolumeForce(e){let t=[],i=0,s,o=1,r=0,a=e[0][1]-e[0][2],n=0,l;for(;o<e.length;o++)l=this.calculateTrend(e,o),s=this.getDM(e[o][1],e[o][2]),i=this.getCM(r,s,l,n,a),t.push([this.volumeSeries.yData[o]*l*Math.abs(2*(s/i-1))*100]),n=l,r=i,a=s;return t}getEMA(e,t,i,o,r,a,n){return s.prototype.calculateEma(n||[],e,void 0===a?1:a,o,t,void 0===r?-1:r,i)}getSMA(e,t,i){return s.prototype.accumulatePeriodPoints(e,t,i)/e}getValues(e,t){let i=[],s=e.xData,o=e.yData,a=[],n=[],l=[],p,h=0,u=0,c,g,d,f=null;if(!this.isValidData(o[0]))return;let m=this.getVolumeForce(o),y=this.getSMA(t.fastAvgPeriod,0,m),A=this.getSMA(t.slowAvgPeriod,0,m),v=2/(t.fastAvgPeriod+1),P=2/(t.slowAvgPeriod+1);for(;h<o.length;h++)h>=t.fastAvgPeriod&&(g=u=this.getEMA(m,g,y,v,0,h,s)[1]),h>=t.slowAvgPeriod&&(d=c=this.getEMA(m,d,A,P,0,h,s)[1],l.push(p=r(u-c)),l.length>=t.signalPeriod&&(f=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),i.push([s[h],p,f]),a.push(s[h]),n.push([p,f]));return{values:i,xData:a,yData:n}}}return h.defaultOptions=p(o.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),n(h.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),e.compose(h),t.registerSeriesType("klinger",h),h}),i(t,"masters/indicators/klinger.src.js",[t["Core/Globals.js"]],function(e){return e})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts Stock JS v11.4.4 (2024-07-02)
2
+ * @license Highcharts Stock JS v11.4.6 (2024-07-08)
3
3
  *
4
4
  * Indicator series type for Highcharts Stock
5
5
  *
@@ -12,7 +12,7 @@
12
12
  factory['default'] = factory;
13
13
  module.exports = factory;
14
14
  } else if (typeof define === 'function' && define.amd) {
15
- define('highcharts/indicators/klinger', ['highcharts', 'modules/stock'], function (Highcharts) {
15
+ define('highcharts/indicators/klinger', ['highcharts', 'highcharts/modules/stock'], function (Highcharts) {
16
16
  factory(Highcharts);
17
17
  factory.Highcharts = Highcharts;
18
18
  return factory;