@tradecanvas/commons 1.25.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -199,11 +199,11 @@ function u(e) {
199
199
  }
200
200
  //#endregion
201
201
  //#region src/types/news.ts
202
- var d = 300, ee = 1e3, f = (e, t) => {
202
+ var d = 300, f = 1e3, p = (e, t) => {
203
203
  if (typeof e != "string") return;
204
204
  let n = e.trim();
205
205
  return n ? n.slice(0, t) : void 0;
206
- }, te = (e) => {
206
+ }, ee = (e) => {
207
207
  if (typeof e == "string") try {
208
208
  let t = new URL(e);
209
209
  return t.protocol === "https:" || t.protocol === "http:" ? t.href : void 0;
@@ -211,61 +211,61 @@ var d = 300, ee = 1e3, f = (e, t) => {
211
211
  return;
212
212
  }
213
213
  };
214
- function ne(e, t = 20) {
214
+ function te(e, t = 20) {
215
215
  if (!Array.isArray(e)) return [];
216
216
  let n = [];
217
217
  for (let t of e) {
218
218
  if (!t || typeof t != "object") continue;
219
- let e = t, r = f(e.title, d);
219
+ let e = t, r = p(e.title, d);
220
220
  if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
221
221
  let i = {
222
222
  title: r,
223
223
  time: e.time
224
- }, a = te(e.url);
224
+ }, a = ee(e.url);
225
225
  a && (i.url = a);
226
- let o = f(e.source, d);
226
+ let o = p(e.source, d);
227
227
  o && (i.source = o);
228
- let s = f(e.summary, ee);
228
+ let s = p(e.summary, f);
229
229
  s && (i.summary = s);
230
- let c = f(e.id, d);
230
+ let c = p(e.id, d);
231
231
  c && (i.id = c), n.push(i);
232
232
  }
233
233
  return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
234
234
  }
235
235
  //#endregion
236
236
  //#region src/utils/math.ts
237
- function re(e, t, n) {
237
+ function ne(e, t, n) {
238
238
  return Math.max(t, Math.min(n, e));
239
239
  }
240
- function ie(e, t, n) {
240
+ function re(e, t, n) {
241
241
  return e + (t - e) * n;
242
242
  }
243
- function ae(e, t, n) {
243
+ function ie(e, t, n) {
244
244
  return e === t ? 0 : (n - e) / (t - e);
245
245
  }
246
- function oe(e, t) {
246
+ function ae(e, t) {
247
247
  return Math.round(e / t) * t;
248
248
  }
249
- function se(e, t) {
249
+ function m(e, t) {
250
250
  let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
251
251
  return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
252
252
  }
253
- function ce(e, t, n) {
254
- return se(se(t - e, !1) / (n - 1), !0);
253
+ function oe(e, t, n) {
254
+ return m(m(t - e, !1) / (n - 1), !0);
255
255
  }
256
256
  //#endregion
257
257
  //#region src/utils/data.ts
258
- var le = 1e11;
259
- function ue(e) {
258
+ var se = 1e11;
259
+ function ce(e) {
260
260
  let t = e.length > 0 ? e[e.length - 1].time : NaN;
261
261
  return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
262
262
  }
263
- function de(e, t) {
263
+ function le(e, t) {
264
264
  return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
265
265
  }
266
- function fe(e) {
266
+ function ue(e) {
267
267
  return {
268
- time: de(e.time ?? e.t ?? 0),
268
+ time: le(e.time ?? e.t ?? 0),
269
269
  open: e.open ?? e.o ?? 0,
270
270
  high: e.high ?? e.h ?? 0,
271
271
  low: e.low ?? e.l ?? 0,
@@ -273,11 +273,11 @@ function fe(e) {
273
273
  volume: e.volume ?? e.v ?? 0
274
274
  };
275
275
  }
276
- function pe(e, t, n) {
276
+ function de(e, t, n) {
277
277
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
278
278
  return e.slice(r, i);
279
279
  }
280
- function me(e, t) {
280
+ function fe(e, t) {
281
281
  let n = 0, r = e.length - 1;
282
282
  for (; n <= r;) {
283
283
  let i = n + r >>> 1;
@@ -287,24 +287,34 @@ function me(e, t) {
287
287
  }
288
288
  return n;
289
289
  }
290
- function he(e, t, n, r = .05) {
290
+ function pe(e, t, n, r = !1) {
291
+ let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
292
+ if (Number.isFinite(i)) {
293
+ let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
294
+ return {
295
+ min: e / a,
296
+ max: t * a
297
+ };
298
+ }
299
+ let a = t - e || 1;
300
+ return {
301
+ min: e - a * n,
302
+ max: t + a * n
303
+ };
304
+ }
305
+ function me(e, t, n, r = .05, i = !1) {
291
306
  if (e.length === 0) return {
292
307
  min: 0,
293
308
  max: 1
294
309
  };
295
- let i = Math.max(0, t), a = Math.min(e.length - 1, n), o = Infinity, s = -Infinity;
296
- for (let t = i; t <= a; t++) e[t].low < o && (o = e[t].low), e[t].high > s && (s = e[t].high);
297
- if (o === Infinity) return {
310
+ let a = Math.max(0, t), o = Math.min(e.length - 1, n), s = Infinity, c = -Infinity;
311
+ for (let t = a; t <= o; t++) e[t].low < s && (s = e[t].low), e[t].high > c && (c = e[t].high);
312
+ return s === Infinity ? {
298
313
  min: 0,
299
314
  max: 1
300
- };
301
- let c = s - o || 1;
302
- return {
303
- min: o - c * r,
304
- max: s + c * r
305
- };
315
+ } : pe(s, c, r, i);
306
316
  }
307
- function ge(e, t) {
317
+ function he(e, t) {
308
318
  return {
309
319
  ...e,
310
320
  high: Math.max(e.high, t.price),
@@ -316,17 +326,17 @@ function ge(e, t) {
316
326
  }
317
327
  //#endregion
318
328
  //#region src/utils/color.ts
319
- function _e(e, t = 1) {
329
+ function ge(e, t = 1) {
320
330
  let n = e.slice(1);
321
331
  return (n.length === 3 || n.length === 4) && (n = [...n.slice(0, 3)].map((e) => e + e).join("")), `rgba(${parseInt(n.slice(0, 2), 16)}, ${parseInt(n.slice(2, 4), 16)}, ${parseInt(n.slice(4, 6), 16)}, ${t})`;
322
332
  }
323
- function ve(e, t) {
333
+ function _e(e, t) {
324
334
  let n = e.trim();
325
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return _e(n, t);
335
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ge(n, t);
326
336
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
327
337
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
328
338
  }
329
- function ye(e, t, n) {
339
+ function ve(e, t, n) {
330
340
  let r = (e) => (e = e.replace("#", ""), e.length === 3 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), {
331
341
  r: parseInt(e.slice(0, 2), 16),
332
342
  g: parseInt(e.slice(2, 4), 16),
@@ -336,7 +346,7 @@ function ye(e, t, n) {
336
346
  }
337
347
  //#endregion
338
348
  //#region src/utils/timezone.ts
339
- var p = 6e4, m = 1440 * p, h = 15 * p, be = 8192, g = 7 * m, xe = 4096, Se = new Set([
349
+ var h = 6e4, g = 1440 * h, _ = 15 * h, ye = 8192, be = 7 * g, xe = 4096, Se = new Set([
340
350
  "UTC",
341
351
  "Etc/UTC",
342
352
  "GMT",
@@ -347,7 +357,7 @@ var p = 6e4, m = 1440 * p, h = 15 * p, be = 8192, g = 7 * m, xe = 4096, Se = new
347
357
  "Etc/Universal",
348
358
  "Zulu",
349
359
  "Etc/Zulu"
350
- ]), Ce = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), we = /* @__PURE__ */ new Map();
360
+ ]), Ce = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), we = /* @__PURE__ */ new Map();
351
361
  function Te(e) {
352
362
  let t = Ce.get(e);
353
363
  return t || (t = new Intl.DateTimeFormat("en-US", {
@@ -369,24 +379,24 @@ function Ee(e) {
369
379
  return !1;
370
380
  }
371
381
  }
372
- function v(e, t) {
382
+ function y(e, t) {
373
383
  if (!Number.isFinite(t) || Se.has(e)) return 0;
374
384
  let n = we.get(e);
375
385
  n || (n = /* @__PURE__ */ new Map(), we.set(e, n));
376
- let r = Math.floor(t / g), i = n.get(r);
377
- return i || (i = De(e, r * g), n.size >= xe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
386
+ let r = Math.floor(t / be), i = n.get(r);
387
+ return i || (i = De(e, r * be), n.size >= xe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
378
388
  }
379
389
  function De(e, t) {
380
- let n = Oe(e, t), r = t + g - h, i = Oe(e, r);
390
+ let n = b(e, t), r = t + be - _, i = b(e, r);
381
391
  if (i === n) return {
382
392
  before: n,
383
393
  change: Infinity,
384
394
  after: i
385
395
  };
386
396
  let a = t;
387
- for (; r - a > h;) {
388
- let t = a + Math.floor((r - a) / h / 2) * h;
389
- Oe(e, t) === n ? a = t : r = t;
397
+ for (; r - a > _;) {
398
+ let t = a + Math.floor((r - a) / _ / 2) * _;
399
+ b(e, t) === n ? a = t : r = t;
390
400
  }
391
401
  return {
392
402
  before: n,
@@ -394,10 +404,10 @@ function De(e, t) {
394
404
  after: i
395
405
  };
396
406
  }
397
- function Oe(e, t) {
398
- let n = Math.floor(t / h), r = `${e}|${n}`, i = _.get(r);
407
+ function b(e, t) {
408
+ let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
399
409
  if (i !== void 0) return i;
400
- let a = n * h, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
410
+ let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
401
411
  for (let t of Te(e).formatToParts(new Date(a))) {
402
412
  let e = Number(t.value);
403
413
  switch (t.type) {
@@ -421,21 +431,21 @@ function Oe(e, t) {
421
431
  break;
422
432
  }
423
433
  }
424
- let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / p);
425
- return _.size >= be && _.clear(), _.set(r, ee), ee;
426
- }
427
- function y(e, t) {
428
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : v(e, t);
434
+ let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
435
+ return v.size >= ye && v.clear(), v.set(r, f), f;
429
436
  }
430
- function ke(e, t) {
431
- let n = e - y(t, e - m) * p;
432
- if (n + y(t, n) * p === e) return n;
433
- let r = e - y(t, e + m) * p;
434
- return r + y(t, r) * p === e ? r : n;
437
+ function x(e, t) {
438
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
435
439
  }
436
- var Ae = /* @__PURE__ */ new Map();
437
- function je(e, t, n) {
438
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Ae.get(r);
440
+ function Oe(e, t) {
441
+ let n = e - x(t, e - g) * h;
442
+ if (n + x(t, n) * h === e) return n;
443
+ let r = e - x(t, e + g) * h;
444
+ return r + x(t, r) * h === e ? r : n;
445
+ }
446
+ var ke = /* @__PURE__ */ new Map();
447
+ function Ae(e, t, n) {
448
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = ke.get(r);
439
449
  if (i) return i;
440
450
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
441
451
  try {
@@ -449,12 +459,12 @@ function je(e, t, n) {
449
459
  timeZone: a
450
460
  });
451
461
  }
452
- let s = typeof n == "number" ? n * p : 0;
453
- return i = (e) => o.format(new Date(e + s)), Ae.set(r, i), i;
462
+ let s = typeof n == "number" ? n * h : 0;
463
+ return i = (e) => o.format(new Date(e + s)), ke.set(r, i), i;
454
464
  }
455
465
  //#endregion
456
466
  //#region src/utils/time.ts
457
- var Me = {
467
+ var je = {
458
468
  "1s": 1e3,
459
469
  "5s": 5e3,
460
470
  "15s": 15e3,
@@ -481,7 +491,7 @@ var Me = {
481
491
  "3M": 7776e6,
482
492
  "6M": 15552e6,
483
493
  "12M": 31536e6
484
- }, b = {
494
+ }, Me = {
485
495
  s: 1e3,
486
496
  m: 6e4,
487
497
  h: 36e5,
@@ -489,7 +499,7 @@ var Me = {
489
499
  w: 6048e5,
490
500
  M: 2592e6
491
501
  }, Ne = /^([1-9]\d*)([smhdwM])$/;
492
- function x(e) {
502
+ function S(e) {
493
503
  let t = Ne.exec(e);
494
504
  if (!t) return null;
495
505
  let n = Number(t[1]);
@@ -506,16 +516,16 @@ function Fe(e) {
506
516
  return Number.isSafeInteger(n) && n <= Pe ? n : null;
507
517
  }
508
518
  function Ie(e) {
509
- return x(e) !== null;
519
+ return S(e) !== null;
510
520
  }
511
- function S(e) {
512
- let t = Me[e];
521
+ function C(e) {
522
+ let t = je[e];
513
523
  if (t !== void 0) return t;
514
- let n = x(e);
515
- return n ? n.count * b[n.unit] : NaN;
524
+ let n = S(e);
525
+ return n ? n.count * Me[n.unit] : NaN;
516
526
  }
517
527
  function Le(e, t) {
518
- let n = new Date(e), r = S(t);
528
+ let n = new Date(e), r = C(t);
519
529
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
520
530
  month: "short",
521
531
  day: "numeric"
@@ -529,7 +539,7 @@ function Le(e, t) {
529
539
  });
530
540
  }
531
541
  function Re(e, t) {
532
- let n = S(t);
542
+ let n = C(t);
533
543
  return Math.floor(e / n) * n;
534
544
  }
535
545
  function ze(e, t) {
@@ -543,7 +553,7 @@ function ze(e, t) {
543
553
  minutes: t.getMinutes()
544
554
  };
545
555
  }
546
- let n = new Date(e + y(t, e) * 6e4);
556
+ let n = new Date(e + x(t, e) * 6e4);
547
557
  return {
548
558
  year: n.getUTCFullYear(),
549
559
  month: n.getUTCMonth() + 1,
@@ -559,7 +569,7 @@ var Ve = 20 * 36e5;
559
569
  function He(e) {
560
570
  let t = Math.min(e.length, 64);
561
571
  if (t < 2) return;
562
- let n = ue(e), r = Infinity;
572
+ let n = ce(e), r = Infinity;
563
573
  for (let i = 1; i < t; i++) {
564
574
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
565
575
  t > 0 && t < r && (r = t);
@@ -567,22 +577,22 @@ function He(e) {
567
577
  return r === Infinity ? void 0 : r >= Ve;
568
578
  }
569
579
  function Ue(e, t = Date.now()) {
570
- let n = y(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
580
+ let n = x(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
571
581
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
572
582
  }
573
583
  var We = Date.UTC(1970, 0, 5);
574
584
  function Ge(e, t, n = 1) {
575
- let { count: r, unit: i } = x(t) ?? {
585
+ let { count: r, unit: i } = S(t) ?? {
576
586
  count: 1,
577
587
  unit: "m"
578
588
  };
579
589
  if (i === "s" || i === "m" || i === "h" || i === "d") {
580
- let t = r * b[i];
590
+ let t = r * Me[i];
581
591
  return Math.floor(e / t) * t;
582
592
  }
583
593
  let a = new Date(e);
584
594
  if (i === "w") {
585
- let e = b.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
595
+ let e = Me.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
586
596
  if (r <= 1) return i;
587
597
  let o = Math.floor((i - We) / (7 * e));
588
598
  return We + Math.floor(o / r) * r * 7 * e;
@@ -592,50 +602,50 @@ function Ge(e, t, n = 1) {
592
602
  }
593
603
  //#endregion
594
604
  //#region src/utils/precision.ts
595
- var Ke = 64, C = /* @__PURE__ */ new Map();
605
+ var Ke = 64, w = /* @__PURE__ */ new Map();
596
606
  function qe(e, t) {
597
- let n = `${e}|${t}`, r = C.get(n);
598
- return r || (C.size >= Ke && C.clear(), r = new Intl.NumberFormat(e, {
607
+ let n = `${e}|${t}`, r = w.get(n);
608
+ return r || (w.size >= Ke && w.clear(), r = new Intl.NumberFormat(e, {
599
609
  minimumFractionDigits: t,
600
610
  maximumFractionDigits: t
601
- }), C.set(n, r)), r;
611
+ }), w.set(n, r)), r;
602
612
  }
603
- function w(e, t = 2, n = "en-US") {
613
+ function Je(e, t = 2, n = "en-US") {
604
614
  return qe(n, t).format(e);
605
615
  }
606
- function Je(e, t) {
616
+ function Ye(e, t) {
607
617
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
608
- let n = ce(e, t, 8);
618
+ let n = oe(e, t, 8);
609
619
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
610
620
  }
611
- function Ye(e, t, n, r = 2, i = "en-US") {
621
+ function Xe(e, t, n, r = 2, i = "en-US") {
612
622
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
613
623
  if (t === "percentage") {
614
624
  let t = (e / n - 1) * 100;
615
625
  return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
616
626
  }
617
- return w(e / n * 100, 2, i);
627
+ return Je(e / n * 100, 2, i);
618
628
  }
619
- return w(e, r, i);
629
+ return Je(e, r, i);
620
630
  }
621
- function Xe(e, t, n = 1) {
631
+ function Ze(e, t, n = 1) {
622
632
  let r = Number.isInteger(n) && n > 1 ? n : 1;
623
633
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
624
634
  let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
625
635
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
626
636
  }
627
- function Ze(e) {
637
+ function Qe(e) {
628
638
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
629
639
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
630
640
  return 1 / (e.denominator * t);
631
641
  }
632
- function Qe(e) {
633
- return e ? typeof e == "function" ? e : Ze(e) === null ? null : (t) => Xe(t, e.denominator, e.subDenominator) : null;
634
- }
635
642
  function $e(e) {
636
- return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
643
+ return e ? typeof e == "function" ? e : Qe(e) === null ? null : (t) => Ze(t, e.denominator, e.subDenominator) : null;
637
644
  }
638
645
  function et(e) {
646
+ return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
647
+ }
648
+ function tt(e) {
639
649
  let t = 0;
640
650
  for (let n of e) {
641
651
  let e = n.toString(), r = e.indexOf(".");
@@ -645,7 +655,7 @@ function et(e) {
645
655
  }
646
656
  //#endregion
647
657
  //#region src/utils/priceSource.ts
648
- var tt = [
658
+ var nt = [
649
659
  "close",
650
660
  "open",
651
661
  "high",
@@ -655,10 +665,10 @@ var tt = [
655
665
  "ohlc4",
656
666
  "hlcc4"
657
667
  ];
658
- function nt(e) {
659
- return typeof e == "string" && tt.includes(e);
668
+ function rt(e) {
669
+ return typeof e == "string" && nt.includes(e);
660
670
  }
661
- function rt(e, t) {
671
+ function it(e, t) {
662
672
  switch (t) {
663
673
  case "open": return e.open;
664
674
  case "high": return e.high;
@@ -670,13 +680,13 @@ function rt(e, t) {
670
680
  default: return e.close;
671
681
  }
672
682
  }
673
- var it = /^ind:([^:]+):(.+)$/;
674
- function at(e, t) {
683
+ var at = /^ind:([^:]+):(.+)$/;
684
+ function ot(e, t) {
675
685
  return `ind:${e}:${t}`;
676
686
  }
677
- function ot(e) {
687
+ function st(e) {
678
688
  if (typeof e != "string") return null;
679
- let t = it.exec(e);
689
+ let t = at.exec(e);
680
690
  return t ? {
681
691
  instanceId: t[1],
682
692
  key: t[2]
@@ -684,8 +694,8 @@ function ot(e) {
684
694
  }
685
695
  //#endregion
686
696
  //#region src/utils/resample.ts
687
- var st = 864e5;
688
- function ct(e, t, n = 1) {
697
+ var ct = 864e5;
698
+ function lt(e, t, n = 1) {
689
699
  let r = [], i = null;
690
700
  for (let a of e) {
691
701
  let e = Ge(a.time, t, n);
@@ -701,36 +711,36 @@ function ct(e, t, n = 1) {
701
711
  return r;
702
712
  }
703
713
  var T = (e) => e === "s" || e === "m" || e === "h" || e === "d";
704
- function lt(e, t) {
705
- let n = x(e), r = x(t);
714
+ function ut(e, t) {
715
+ let n = S(e), r = S(t);
706
716
  if (!n || !r) return !1;
707
- let i = S(e);
708
- return n.unit === "d" && n.count > 1 ? !1 : T(r.unit) ? T(n.unit) && S(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : T(n.unit) && st % i === 0;
717
+ let i = C(e);
718
+ return n.unit === "d" && n.count > 1 ? !1 : T(r.unit) ? T(n.unit) && C(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : T(n.unit) && ct % i === 0;
709
719
  }
710
- function ut(e, t) {
720
+ function dt(e, t) {
711
721
  let n = null, r = 0;
712
722
  for (let i of t) {
713
- if (!lt(i, e)) continue;
714
- let t = S(i);
723
+ if (!ut(i, e)) continue;
724
+ let t = C(i);
715
725
  t > r && (n = i, r = t);
716
726
  }
717
727
  return n;
718
728
  }
719
729
  //#endregion
720
730
  //#region src/utils/symbols.ts
721
- function dt(e, t) {
731
+ function ft(e, t) {
722
732
  if (!e) return 0;
723
733
  if (e === t) return 1e3;
724
734
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
725
735
  let n = e.indexOf(t);
726
736
  return n >= 0 ? 300 - Math.min(100, n) : 0;
727
737
  }
728
- function ft(e, t, n = 50, r) {
738
+ function pt(e, t, n = 50, r) {
729
739
  let i = t.trim().toUpperCase();
730
740
  if (!i) return e.slice(0, n);
731
741
  let a = [];
732
742
  for (let t of e) {
733
- let e = Math.max(dt(t.symbol.toUpperCase(), i), dt((t.description ?? "").toUpperCase(), i) * .8);
743
+ let e = Math.max(ft(t.symbol.toUpperCase(), i), ft((t.description ?? "").toUpperCase(), i) * .8);
734
744
  e > 0 && a.push({
735
745
  info: t,
736
746
  score: e + (r?.(t) ?? 0)
@@ -738,7 +748,7 @@ function ft(e, t, n = 50, r) {
738
748
  }
739
749
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
740
750
  }
741
- function pt(e) {
751
+ function mt(e) {
742
752
  let t = typeof e == "number" ? e : Number(e);
743
753
  if (!Number.isFinite(t) || t <= 0) return 0;
744
754
  for (let e = 0; e <= 12; e++) {
@@ -755,8 +765,8 @@ function E(e) {
755
765
  }
756
766
  //#endregion
757
767
  //#region src/utils/marketStatus.ts
758
- var D = 864e5, O = 6e4, mt = 8;
759
- function ht(e, t) {
768
+ var D = 864e5, O = 6e4, ht = 8;
769
+ function gt(e, t) {
760
770
  let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
761
771
  let t = E(e.start), n = E(e.end);
762
772
  return t === null || n === null || t === n ? [] : [{
@@ -769,8 +779,8 @@ function ht(e, t) {
769
779
  state: "always",
770
780
  next: null
771
781
  };
772
- let i = v(n, t) * O, a = Math.floor((t + i) / D) * D, o = (e) => e - v(n, e - v(n, e - i) * O) * O, s = [];
773
- for (let e = -1; e <= mt; e++) {
782
+ let i = y(n, t) * O, a = Math.floor((t + i) / D) * D, o = (e) => e - y(n, e - y(n, e - i) * O) * O, s = [];
783
+ for (let e = -1; e <= ht; e++) {
774
784
  let t = a + e * D, n = (Math.floor(t / D) + 4) % 7;
775
785
  for (let e of r) {
776
786
  if (e.days && !e.days.includes(n)) continue;
@@ -797,15 +807,15 @@ function ht(e, t) {
797
807
  }
798
808
  //#endregion
799
809
  //#region src/utils/drawingOptions.ts
800
- var gt = 48, _t = 2e3, vt = 1e4;
801
- function yt(e) {
810
+ var _t = 48, vt = 2e3, yt = 1e4;
811
+ function bt(e) {
802
812
  if (!Array.isArray(e)) return;
803
813
  let t = [];
804
814
  for (let n of e) {
805
- if (t.length >= gt) break;
815
+ if (t.length >= _t) break;
806
816
  if (typeof n != "object" || !n) continue;
807
817
  let { value: e, visible: r, color: i } = n;
808
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > vt || r !== void 0 && typeof r != "boolean") continue;
818
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > yt || r !== void 0 && typeof r != "boolean") continue;
809
819
  let a = {
810
820
  value: e,
811
821
  visible: r ?? !0
@@ -814,68 +824,68 @@ function yt(e) {
814
824
  }
815
825
  return t;
816
826
  }
817
- function bt(e, t) {
827
+ function xt(e, t) {
818
828
  switch (e.kind) {
819
829
  case "boolean": return typeof t == "boolean" ? t : void 0;
820
830
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
821
831
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
822
- case "levels": return yt(t);
823
- case "text": return typeof t == "string" ? t.slice(0, _t) : void 0;
832
+ case "levels": return bt(t);
833
+ case "text": return typeof t == "string" ? t.slice(0, vt) : void 0;
824
834
  }
825
835
  }
826
- function xt(e, t) {
836
+ function St(e, t) {
827
837
  if (!e || typeof t != "object" || !t) return {};
828
838
  let n = {};
829
839
  for (let [r, i] of Object.entries(t)) {
830
840
  let t = e[r];
831
841
  if (!t) continue;
832
- let a = bt(t, i);
842
+ let a = xt(t, i);
833
843
  a !== void 0 && (n[r] = a);
834
844
  }
835
845
  return n;
836
846
  }
837
- function St(e) {
847
+ function Ct(e) {
838
848
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
839
849
  }
840
- function Ct(e, t, n) {
850
+ function wt(e, t, n) {
841
851
  let r = e?.[n];
842
- return r ? St((t && n in t ? bt(r, t[n]) : void 0) ?? r.default) : t?.[n];
852
+ return r ? Ct((t && n in t ? xt(r, t[n]) : void 0) ?? r.default) : t?.[n];
843
853
  }
844
- function wt(e, t) {
854
+ function Tt(e, t) {
845
855
  let n = {};
846
- for (let r of Object.keys(e ?? {})) n[r] = Ct(e, t, r);
856
+ for (let r of Object.keys(e ?? {})) n[r] = wt(e, t, r);
847
857
  return n;
848
858
  }
849
859
  //#endregion
850
860
  //#region src/utils/drawingStyle.ts
851
- var Tt = [
861
+ var Et = [
852
862
  "solid",
853
863
  "dashed",
854
864
  "dotted"
855
- ], Et = 64, Dt = 2e3, Ot = 20, kt = 200;
865
+ ], Dt = 64, Ot = 2e3, kt = 20, At = 200;
856
866
  function k(e, t, n) {
857
867
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
858
868
  }
859
- function At(e) {
860
- return typeof e == "string" && e.length > 0 && e.length <= Et ? e : void 0;
861
- }
862
869
  function jt(e) {
870
+ return typeof e == "string" && e.length > 0 && e.length <= Dt ? e : void 0;
871
+ }
872
+ function Mt(e) {
863
873
  if (typeof e != "object" || !e) return {};
864
- let t = e, n = {}, r = At(t.color);
874
+ let t = e, n = {}, r = jt(t.color);
865
875
  r !== void 0 && (n.color = r);
866
- let i = k(t.lineWidth, .5, Ot);
867
- i !== void 0 && (n.lineWidth = i), Tt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
868
- let a = At(t.fillColor);
876
+ let i = k(t.lineWidth, .5, kt);
877
+ i !== void 0 && (n.lineWidth = i), Et.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
878
+ let a = jt(t.fillColor);
869
879
  a !== void 0 && (n.fillColor = a);
870
880
  let o = k(t.fillOpacity, 0, 1);
871
881
  o !== void 0 && (n.fillOpacity = o);
872
- let s = k(t.fontSize, 6, kt);
873
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Dt)), n;
882
+ let s = k(t.fontSize, 6, At);
883
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Ot)), n;
874
884
  }
875
885
  //#endregion
876
886
  //#region src/utils/chartTypeOptions.ts
877
887
  var A = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, j = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, M = (e) => typeof e == "object" && !!e && !Array.isArray(e);
878
- function Mt(e) {
888
+ function Nt(e) {
879
889
  if (!M(e)) return {};
880
890
  let t = {};
881
891
  if (M(e.renko)) {
@@ -911,8 +921,8 @@ function Mt(e) {
911
921
  }
912
922
  //#endregion
913
923
  //#region src/constants/themes.ts
914
- var Nt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Pt = {
915
- family: Nt,
924
+ var Pt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Ft = {
925
+ family: Pt,
916
926
  sizeSmall: 10,
917
927
  sizeMedium: 12,
918
928
  sizeLarge: 14
@@ -927,11 +937,11 @@ var Nt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
927
937
  rose: "#e25592",
928
938
  neutral: "#7d8696",
929
939
  ink: "#0c1016"
930
- }, Ft = .22;
940
+ }, It = .22;
931
941
  function P(e) {
932
- return ve(e, Ft);
942
+ return _e(e, It);
933
943
  }
934
- var F = "#2eb88a", I = "#e85a67", It = [
944
+ var F = "#2eb88a", I = "#e85a67", Lt = [
935
945
  N.blue,
936
946
  N.ochre,
937
947
  N.violet,
@@ -956,7 +966,7 @@ var F = "#2eb88a", I = "#e85a67", It = [
956
966
  axisLine: "#1f2630",
957
967
  axisLabel: "#9aa3b2",
958
968
  axisLabelBackground: "#1f2630",
959
- font: Pt
969
+ font: Ft
960
970
  }, R = {
961
971
  name: "light",
962
972
  background: "#ffffff",
@@ -976,7 +986,7 @@ var F = "#2eb88a", I = "#e85a67", It = [
976
986
  axisLine: "#dde1e7",
977
987
  axisLabel: "#5b6472",
978
988
  axisLabelBackground: "#eef0f3",
979
- font: Pt
989
+ font: Ft
980
990
  }, z = {
981
991
  name: "terminal",
982
992
  background: "#0E0E0E",
@@ -1002,7 +1012,7 @@ var F = "#2eb88a", I = "#e85a67", It = [
1002
1012
  sizeMedium: 12,
1003
1013
  sizeLarge: 14
1004
1014
  }
1005
- }, Lt = new Set([
1015
+ }, Rt = new Set([
1006
1016
  L.volumeUp,
1007
1017
  L.volumeDown,
1008
1018
  R.volumeUp,
@@ -1012,7 +1022,7 @@ var F = "#2eb88a", I = "#e85a67", It = [
1012
1022
  ]);
1013
1023
  function B(e) {
1014
1024
  let t = (e, t) => {
1015
- if (!Lt.has(e)) return e;
1025
+ if (!Rt.has(e)) return e;
1016
1026
  let n = P(t);
1017
1027
  return n === t ? e : n;
1018
1028
  };
@@ -1023,42 +1033,42 @@ function B(e) {
1023
1033
  }
1024
1034
  //#endregion
1025
1035
  //#region src/utils/chartStyle.ts
1026
- var Rt = [
1036
+ var zt = [
1027
1037
  "solid",
1028
1038
  "dashed",
1029
1039
  "dotted"
1030
- ], zt = 20, Bt = 64, Vt = 2, Ht = [
1040
+ ], Bt = 20, Vt = 64, Ht = 2, Ut = [
1031
1041
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1032
1042
  /^[a-z]{3,30}$/i,
1033
1043
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1034
1044
  ];
1035
1045
  function V(e) {
1036
- return typeof e == "string" && e.length <= Bt && Ht.some((t) => t.test(e.trim()));
1046
+ return typeof e == "string" && e.length <= Vt && Ut.some((t) => t.test(e.trim()));
1037
1047
  }
1038
- function Ut(e, t) {
1048
+ function Wt(e, t) {
1039
1049
  switch (e) {
1040
1050
  case "color": return V(t);
1041
- case "lineStyle": return Rt.includes(t);
1042
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= zt;
1051
+ case "lineStyle": return zt.includes(t);
1052
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Bt;
1043
1053
  case "boolean": return typeof t == "boolean";
1044
1054
  }
1045
1055
  }
1046
- function Wt(e) {
1056
+ function Gt(e) {
1047
1057
  return Object.prototype.hasOwnProperty.call(t, e);
1048
1058
  }
1049
- function Gt(e) {
1059
+ function Kt(e) {
1050
1060
  let n = {}, r = [];
1051
1061
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1052
1062
  overrides: {},
1053
1063
  rejected: r
1054
1064
  };
1055
- for (let [i, a] of Object.entries(e)) Wt(i) ? a === null ? n[i] = null : Ut(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1065
+ for (let [i, a] of Object.entries(e)) Gt(i) ? a === null ? n[i] = null : Wt(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1056
1066
  return {
1057
1067
  overrides: n,
1058
1068
  rejected: r
1059
1069
  };
1060
1070
  }
1061
- function Kt(e) {
1071
+ function qt(e) {
1062
1072
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1063
1073
  let { background: t, separator: n } = e, r = {
1064
1074
  ...V(t) ? { background: t } : {},
@@ -1066,24 +1076,24 @@ function Kt(e) {
1066
1076
  };
1067
1077
  return Object.keys(r).length > 0 ? r : null;
1068
1078
  }
1069
- var qt = /^[A-Za-z0-9_]{1,32}$/;
1070
- function Jt(e) {
1079
+ var Jt = /^[A-Za-z0-9_]{1,32}$/;
1080
+ function Yt(e) {
1071
1081
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1072
1082
  let t = {};
1073
1083
  for (let [n, r] of Object.entries(e)) {
1074
- if (!qt.test(n) || typeof r != "object" || !r) continue;
1084
+ if (!Jt.test(n) || typeof r != "object" || !r) continue;
1075
1085
  let { lineStyle: e, visible: i } = r, a = {
1076
- ...Rt.includes(e) ? { lineStyle: e } : {},
1086
+ ...zt.includes(e) ? { lineStyle: e } : {},
1077
1087
  ...typeof i == "boolean" ? { visible: i } : {}
1078
1088
  };
1079
1089
  Object.keys(a).length > 0 && (t[n] = a);
1080
1090
  }
1081
1091
  return Object.keys(t).length > 0 ? t : void 0;
1082
1092
  }
1083
- function Yt(e, t, n = 1) {
1093
+ function Xt(e, t, n = 1) {
1084
1094
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1085
1095
  }
1086
- function Xt(e, t, n) {
1096
+ function Zt(e, t, n) {
1087
1097
  let r = (e) => t(`series.${n}.${e}`), i = r("upColor") ?? t("series.candlestick.upColor"), a = r("downColor") ?? t("series.candlestick.downColor"), o = i ?? e.candleUp, s = a ?? e.candleDown;
1088
1098
  return {
1089
1099
  up: o,
@@ -1091,7 +1101,7 @@ function Xt(e, t, n) {
1091
1101
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1092
1102
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1093
1103
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1094
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Vt,
1104
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Ht,
1095
1105
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1096
1106
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1097
1107
  };
@@ -1104,8 +1114,8 @@ function H(e, t, n) {
1104
1114
  width: e(`${t}.width`) ?? n.width
1105
1115
  };
1106
1116
  }
1107
- function Zt(e, t, n) {
1108
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Xt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1117
+ function Qt(e, t, n) {
1118
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Zt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1109
1119
  panes: {
1110
1120
  background: l("panes.background", c),
1111
1121
  separator: l("panes.separatorColor", i.axisLine),
@@ -1204,7 +1214,7 @@ function Zt(e, t, n) {
1204
1214
  style: d
1205
1215
  };
1206
1216
  }
1207
- var Qt = {
1217
+ var $t = {
1208
1218
  "background.color": (e) => e.background,
1209
1219
  "panes.background": (e, t) => t.panes.background,
1210
1220
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1241,16 +1251,16 @@ var Qt = {
1241
1251
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1242
1252
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1243
1253
  "drawings.handleColor": (e, t) => t.drawings.handle
1244
- }, $t = {
1254
+ }, en = {
1245
1255
  visible: "visible",
1246
1256
  color: "color",
1247
1257
  style: "style",
1248
1258
  width: "width"
1249
1259
  };
1250
- function en(e, t, n, r = "candlestick") {
1260
+ function tn(e, t, n, r = "candlestick") {
1251
1261
  let i = n.split(".");
1252
1262
  if (i[0] === "series") {
1253
- let n = Xt(e, (e) => t[e], i[1]);
1263
+ let n = Zt(e, (e) => t[e], i[1]);
1254
1264
  switch (i[2]) {
1255
1265
  case "upColor": return n.up;
1256
1266
  case "downColor": return n.down;
@@ -1263,12 +1273,12 @@ function en(e, t, n, r = "candlestick") {
1263
1273
  case "bottomColor": return n.bottom;
1264
1274
  }
1265
1275
  }
1266
- let a = Zt(e, r, t), o = a.style;
1267
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][$t[i[2]]] : Qt[n]?.(a, o) ?? null;
1276
+ let a = Qt(e, r, t), o = a.style;
1277
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][en[i[2]]] : $t[n]?.(a, o) ?? null;
1268
1278
  }
1269
1279
  //#endregion
1270
1280
  //#region src/constants/defaults.ts
1271
- var tn = {
1281
+ var nn = {
1272
1282
  autoScale: !0,
1273
1283
  rightMargin: 5,
1274
1284
  minBarSpacing: 2,
@@ -1279,7 +1289,7 @@ var tn = {
1279
1289
  vLineStyle: "solid"
1280
1290
  },
1281
1291
  crosshair: { mode: "magnet" }
1282
- }, nn = [
1292
+ }, rn = [
1283
1293
  "1s",
1284
1294
  "1m",
1285
1295
  "3m",
@@ -1296,7 +1306,7 @@ var tn = {
1296
1306
  "3d",
1297
1307
  "1w",
1298
1308
  "1M"
1299
- ], rn = [
1309
+ ], an = [
1300
1310
  "1m",
1301
1311
  "5m",
1302
1312
  "15m",
@@ -1310,7 +1320,7 @@ var tn = {
1310
1320
  "3M",
1311
1321
  "6M",
1312
1322
  "12M"
1313
- ], an = [
1323
+ ], on = [
1314
1324
  "1m",
1315
1325
  "5m",
1316
1326
  "15m",
@@ -1320,7 +1330,7 @@ var tn = {
1320
1330
  "1d",
1321
1331
  "1w",
1322
1332
  "1M"
1323
- ], on = [
1333
+ ], sn = [
1324
1334
  "1m",
1325
1335
  "5m",
1326
1336
  "15m",
@@ -1328,7 +1338,7 @@ var tn = {
1328
1338
  "4h",
1329
1339
  "1d",
1330
1340
  "1w"
1331
- ], sn = 8, cn = 2, ln = 70, un = 30, dn = 60, fn = 120, U = {
1341
+ ], cn = 8, ln = 2, un = 70, dn = 30, fn = 60, pn = 120, U = {
1332
1342
  candlestick: "Candlestick",
1333
1343
  line: "Line",
1334
1344
  area: "Area",
@@ -1431,7 +1441,7 @@ var tn = {
1431
1441
  error: "Error",
1432
1442
  numberDecimalSeparator: ".",
1433
1443
  numberGroupSeparator: ","
1434
- }, pn = {
1444
+ }, mn = {
1435
1445
  candlestick: "Nến",
1436
1446
  line: "Đường",
1437
1447
  area: "Vùng",
@@ -1534,20 +1544,20 @@ var tn = {
1534
1544
  error: "Lỗi",
1535
1545
  numberDecimalSeparator: ",",
1536
1546
  numberGroupSeparator: "."
1537
- }, W = new Map([["en", U], ["vi", pn]]), G = "en", mn = U;
1538
- function hn(e) {
1539
- G = e, mn = W.get(e) ?? U;
1547
+ }, W = new Map([["en", U], ["vi", mn]]), G = "en", hn = U;
1548
+ function gn(e) {
1549
+ G = e, hn = W.get(e) ?? U;
1540
1550
  }
1541
- function gn() {
1551
+ function _n() {
1542
1552
  return G;
1543
1553
  }
1544
- function _n(e) {
1545
- return mn[e] ?? U[e] ?? e;
1554
+ function vn(e) {
1555
+ return hn[e] ?? U[e] ?? e;
1546
1556
  }
1547
- function vn(e, t) {
1557
+ function yn(e, t) {
1548
1558
  W.set(e, t);
1549
1559
  }
1550
- function yn(e) {
1560
+ function bn(e) {
1551
1561
  return W.get(e ?? G) ?? U;
1552
1562
  }
1553
1563
  function K(e, t = 2, n) {
@@ -1555,10 +1565,10 @@ function K(e, t = 2, n) {
1555
1565
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1556
1566
  return c && (u = "-" + u), s ? u + i + s : u;
1557
1567
  }
1558
- function bn(e) {
1568
+ function xn(e) {
1559
1569
  return K(e, 0, "vi");
1560
1570
  }
1561
- function xn(e, t) {
1571
+ function Sn(e, t) {
1562
1572
  return e >= 1e9 ? K(e / 1e9, 2, t ?? G) + "B" : e >= 1e6 ? K(e / 1e6, 2, t ?? G) + "M" : e >= 1e3 ? K(e / 1e3, 2, t ?? G) + "K" : K(e, 0, t ?? G);
1563
1573
  }
1564
1574
  //#endregion
@@ -1570,7 +1580,7 @@ var q = {
1570
1580
  ceiling: "#D946EF",
1571
1581
  floor: "#06B6D4",
1572
1582
  reference: "#EAB308"
1573
- }, J = "Asia/Ho_Chi_Minh", Sn = [
1583
+ }, J = "Asia/Ho_Chi_Minh", Cn = [
1574
1584
  {
1575
1585
  name: "ATO",
1576
1586
  startTime: "09:00",
@@ -1601,7 +1611,7 @@ var q = {
1601
1611
  endTime: "14:45",
1602
1612
  type: "preClose"
1603
1613
  }
1604
- ], Cn = [
1614
+ ], wn = [
1605
1615
  {
1606
1616
  name: "Phiên 1",
1607
1617
  startTime: "09:15",
@@ -1632,7 +1642,7 @@ var q = {
1632
1642
  endTime: "15:00",
1633
1643
  type: "postClose"
1634
1644
  }
1635
- ], wn = [
1645
+ ], Tn = [
1636
1646
  {
1637
1647
  name: "Phiên 1",
1638
1648
  startTime: "09:15",
@@ -1651,7 +1661,7 @@ var q = {
1651
1661
  endTime: "14:30",
1652
1662
  type: "continuous"
1653
1663
  }
1654
- ], Tn = [
1664
+ ], En = [
1655
1665
  {
1656
1666
  name: "ATO",
1657
1667
  startTime: "08:45",
@@ -1682,7 +1692,7 @@ var q = {
1682
1692
  endTime: "14:45",
1683
1693
  type: "preClose"
1684
1694
  }
1685
- ], En = {
1695
+ ], Dn = {
1686
1696
  type: "stock",
1687
1697
  exchange: "HOSE",
1688
1698
  currency: "VND",
@@ -1709,12 +1719,12 @@ var q = {
1709
1719
  ceilingPercent: 7,
1710
1720
  floorPercent: 7
1711
1721
  },
1712
- sessions: Sn,
1722
+ sessions: Cn,
1713
1723
  colorScheme: q
1714
- }, Dn = {
1715
- ...En,
1716
- priceSteps: void 0
1717
1724
  }, On = {
1725
+ ...Dn,
1726
+ priceSteps: void 0
1727
+ }, kn = {
1718
1728
  type: "stock",
1719
1729
  exchange: "HNX",
1720
1730
  currency: "VND",
@@ -1727,9 +1737,9 @@ var q = {
1727
1737
  ceilingPercent: 10,
1728
1738
  floorPercent: 10
1729
1739
  },
1730
- sessions: Cn,
1740
+ sessions: wn,
1731
1741
  colorScheme: q
1732
- }, kn = {
1742
+ }, An = {
1733
1743
  type: "stock",
1734
1744
  exchange: "UPCOM",
1735
1745
  currency: "VND",
@@ -1742,9 +1752,9 @@ var q = {
1742
1752
  ceilingPercent: 15,
1743
1753
  floorPercent: 15
1744
1754
  },
1745
- sessions: wn,
1755
+ sessions: Tn,
1746
1756
  colorScheme: q
1747
- }, An = {
1757
+ }, jn = {
1748
1758
  type: "futures",
1749
1759
  exchange: "HNX",
1750
1760
  currency: "VND",
@@ -1758,14 +1768,14 @@ var q = {
1758
1768
  ceilingPercent: 7,
1759
1769
  floorPercent: 7
1760
1770
  },
1761
- sessions: Tn,
1771
+ sessions: En,
1762
1772
  colorScheme: q
1763
- }, jn = {
1773
+ }, Mn = {
1764
1774
  type: "crypto",
1765
1775
  currency: "USDT",
1766
1776
  pricePrecision: 2,
1767
1777
  priceLimits: { enabled: !1 }
1768
- }, Mn = {
1778
+ }, Nn = {
1769
1779
  type: "stock",
1770
1780
  exchange: "NYSE",
1771
1781
  currency: "USD",
@@ -1794,7 +1804,7 @@ var q = {
1794
1804
  }
1795
1805
  ]
1796
1806
  };
1797
- function Nn(e) {
1807
+ function Pn(e) {
1798
1808
  return {
1799
1809
  ...e,
1800
1810
  candleUp: q.up,
@@ -1806,25 +1816,25 @@ function Nn(e) {
1806
1816
  };
1807
1817
  }
1808
1818
  var Y = 1e-9;
1809
- function Pn(e, t) {
1819
+ function Fn(e, t) {
1810
1820
  let n = t.priceStep;
1811
1821
  for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
1812
1822
  return n !== void 0 && n > 0 ? n : void 0;
1813
1823
  }
1814
- function Fn(e, t) {
1824
+ function In(e, t) {
1815
1825
  let n = t.priceStep;
1816
1826
  for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
1817
1827
  return n !== void 0 && n > 0 ? n : void 0;
1818
1828
  }
1819
1829
  function X(e, t, n = "nearest") {
1820
- let r = Pn(e, t);
1830
+ let r = Fn(e, t);
1821
1831
  if (r === void 0 || !Number.isFinite(e)) return e;
1822
1832
  let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
1823
- return Number((a * r).toFixed(pt(r)));
1833
+ return Number((a * r).toFixed(mt(r)));
1824
1834
  }
1825
- function In(e, t) {
1835
+ function Ln(e, t) {
1826
1836
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
1827
- let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = Pn(i, t);
1837
+ let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = Fn(i, t);
1828
1838
  if (s === void 0) return {
1829
1839
  ceiling: a,
1830
1840
  floor: o,
@@ -1837,14 +1847,14 @@ function In(e, t) {
1837
1847
  reference: i
1838
1848
  };
1839
1849
  let l = X(a, t, "down"), u = X(o, t, "up");
1840
- return l <= i && (l = c), u >= i && (u = X(i - (Fn(i, t) ?? s), t)), u <= 0 && (u = i), {
1850
+ return l <= i && (l = c), u >= i && (u = X(i - (In(i, t) ?? s), t)), u <= 0 && (u = i), {
1841
1851
  ceiling: l,
1842
1852
  floor: u,
1843
1853
  reference: i
1844
1854
  };
1845
1855
  }
1846
1856
  var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
1847
- function Ln(e, t) {
1857
+ function Rn(e, t) {
1848
1858
  let n = Math.round(Math.log10(t));
1849
1859
  return {
1850
1860
  ...e,
@@ -1860,11 +1870,11 @@ function Ln(e, t) {
1860
1870
  }
1861
1871
  };
1862
1872
  }
1863
- var Rn = 6e4, zn = 864e5;
1864
- function Bn(e, t) {
1873
+ var zn = 6e4, Bn = 864e5;
1874
+ function Vn(e, t) {
1865
1875
  let n, r;
1866
1876
  if (t) {
1867
- let i = new Date(e + v(t, e) * Rn);
1877
+ let i = new Date(e + y(t, e) * zn);
1868
1878
  n = i.getUTCHours(), r = i.getUTCMinutes();
1869
1879
  } else {
1870
1880
  let t = new Date(e);
@@ -1872,37 +1882,580 @@ function Bn(e, t) {
1872
1882
  }
1873
1883
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
1874
1884
  }
1875
- function Vn(e, t = Date.now(), n) {
1885
+ function Hn(e, t = Date.now(), n) {
1876
1886
  if (n !== void 0 && !Ee(n)) return null;
1877
- let r = Bn(t, n);
1887
+ let r = Vn(t, n);
1878
1888
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1879
1889
  return null;
1880
1890
  }
1881
1891
  var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
1882
1892
  let t = new Date(e);
1883
1893
  return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
1884
- }, Hn = 4, Un = 7 * 36e5;
1885
- function Wn(e, t, n) {
1886
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Hn - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
1894
+ }, Un = 4, Wn = 7 * 36e5;
1895
+ function Gn(e, t, n) {
1896
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (Un - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
1887
1897
  let t = new Date(e).getUTCDay();
1888
1898
  return t === 0 || t === 6 || (n?.($(e)) ?? !1);
1889
1899
  };
1890
- for (; o(a);) a -= zn;
1900
+ for (; o(a);) a -= Bn;
1891
1901
  return $(a);
1892
1902
  }
1893
- function Gn(e, t) {
1894
- let n = $(e + Un), r = (e, n) => ({
1903
+ function Kn(e, t) {
1904
+ let n = $(e + Wn), r = (e, n) => ({
1895
1905
  symbol: `VN30F${Q(e % 100)}${Q(n)}`,
1896
1906
  year: e,
1897
1907
  month: n,
1898
- lastTradingDay: Wn(e, n, t)
1899
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Un), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
1908
+ lastTradingDay: Gn(e, n, t)
1909
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Wn), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
1900
1910
  n > o.lastTradingDay && (o = i(o));
1901
1911
  let s = [o, i(o)], c = i(s[1]);
1902
1912
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
1903
1913
  return s;
1904
1914
  }
1905
1915
  //#endregion
1906
- export { t as CHART_STYLE_KEYS, z as DARK_TERMINAL, L as DARK_THEME, cn as DEFAULT_BAR_SPACING, sn as DEFAULT_BAR_WIDTH, tn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Nt as DEFAULT_FONT_FAMILY, fn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, on as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Cn as HNX_SESSIONS, Sn as HOSE_SESSIONS, R as LIGHT_THEME, e as LayerType, jn as MARKET_CRYPTO, On as MARKET_HNX, En as MARKET_HOSE, Dn as MARKET_HOSE_ETF, Mn as MARKET_NYSE, kn as MARKET_UPCOM, An as MARKET_VN30F, dn as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, ln as PRICE_AXIS_WIDTH, tt as PRICE_SOURCES, N as TC_PALETTE, It as TC_SERIES_COLORS, nn as TIMEFRAMES_CRYPTO, an as TIMEFRAMES_FOREX, rn as TIMEFRAMES_STOCK, un as TIME_AXIS_HEIGHT, wn as UPCOM_SESSIONS, Tn as VN30F_SESSIONS, q as VN_COLORS, Ft as VOLUME_ALPHA, Re as alignToTimeframe, Je as autoPricePrecision, ue as barTimeUnit, He as barsAreDaily, en as chartStyleValue, re as clamp, In as computePriceLimits, he as computePriceRange, ce as computeTickStep, Nn as createVNTheme, et as detectPrecision, Ct as drawingOption, U as en, me as findBarIndex, Xe as formatFraction, K as formatNumber, w as formatPrice, Ye as formatPriceScaleLabel, Le as formatTimestamp, bn as formatVND, $e as formatVolume, xn as formatVolumeLoc, Ze as fractionTick, Vn as getCurrentSession, gn as getLocale, yn as getLocaleStrings, _e as hexToRgba, at as indicatorSource, ae as inverseLerp, Be as isDateOnly, nt as isPriceSource, Ie as isTimeFrame, Ee as isValidTimeZone, ie as lerp, ye as lerpColor, Yt as lineDash, ht as marketStatus, ge as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, y as offsetAt, ot as parseIndicatorSource, x as parseTimeframe, ut as pickBaseTimeframe, Qe as priceFormatterFor, Pn as priceStepAt, ft as rankSymbols, Gt as readChartStyleOverrides, Mt as readChartTypeOptions, Jt as readIndicatorPlotStyles, ne as readNews, Kt as readPaneStyle, l as readQuote, vn as registerLocale, ct as resampleBars, Zt as resolveChartTheme, wt as resolveDrawingOptions, B as resolveVolumeColors, X as roundToPriceStep, oe as roundToStep, xt as sanitizeDrawingOptions, jt as sanitizeDrawingStyle, Ln as scaleMarketPrices, E as sessionMinute, hn as setLocale, pe as sliceVisibleData, rt as sourcePrice, pt as stepDecimals, _n as t, Fe as tickBarCount, ze as timeParts, Ge as timeframeBucketStart, S as timeframeToMs, Ue as tzLabel, pn as vi, Gn as vn30fContracts, Wn as vn30fLastTradingDay, P as volumeColor, ke as wallToUtc, ve as withAlpha, v as zoneOffsetMinutes, je as zonedDateFormatter };
1916
+ //#region src/icons/iconSet.ts
1917
+ var qn = {
1918
+ cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
1919
+ trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
1920
+ trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
1921
+ minus: { d: "M5 12H19" },
1922
+ plus: { d: "M12 5V19M5 12H19" },
1923
+ penLine: { d: "M14.5 5.5L18.5 9.5M4 20L5 15.5L15.8 4.7a2 2 0 0 1 2.83 0l.67.67a2 2 0 0 1 0 2.83L8.5 19z" },
1924
+ zigzag: { d: "M3 17L8 9L13 15L21 6" },
1925
+ hash: { d: "M5 9H19M5 15H19M10 4L8.5 20M15.5 4L14 20" },
1926
+ square: { d: "M6.5 4.5h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2h-11a2 2 0 0 1-2-2v-11a2 2 0 0 1 2-2z" },
1927
+ gitBranch: { d: "M6 3V15M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9" },
1928
+ ruler: { d: "M3.5 16.5L16.5 3.5L20.5 7.5L7.5 20.5zM6.5 13.5L8 15M9.5 10.5L11.5 12.5M12.5 7.5L14 9" },
1929
+ type: { d: "M6 6V4.5H18V6M12 4.5V19.5M9.5 19.5H14.5" },
1930
+ magnet: { d: "M6 4V11a6 6 0 0 0 12 0V4M6 4h3.5v7a2.5 2.5 0 0 0 5 0V4H18M6 8h3.5M14.5 8H18" },
1931
+ magnetStrong: {
1932
+ d: "M6 4V11a6 6 0 0 0 12 0V4M6 4h3.5v7a2.5 2.5 0 0 0 5 0V4H18",
1933
+ fills: ["M6 4h3.5v4H6z", "M14.5 4H18v4h-3.5z"]
1934
+ },
1935
+ eraser: { d: "M8.5 19.5L3.9 14.9a1.5 1.5 0 0 1 0-2.1l8.5-8.5a1.5 1.5 0 0 1 2.1 0l5.2 5.2a1.5 1.5 0 0 1 0 2.1L12 19.5zM8 9l7 7M12 19.5H20" },
1936
+ zoomIn: { d: "M16.5 10.5a6 6 0 1 1-12 0 6 6 0 0 1 12 0zM15 15L20.5 20.5M10.5 7.5V13.5M7.5 10.5H13.5" },
1937
+ undo: { d: "M9 14L4 9L9 4M4 9H14.5a5.5 5.5 0 0 1 0 11H11" },
1938
+ redo: { d: "M15 14L20 9L15 4M20 9H9.5a5.5 5.5 0 0 0 0 11H13" },
1939
+ trash: { d: "M4 7H20M9.5 7V4.5h5V7M6.5 7l.8 12.2A1.5 1.5 0 0 0 8.8 20.6h6.4a1.5 1.5 0 0 0 1.5-1.4L17.5 7M10 11v6M14 11v6" },
1940
+ camera: { d: "M4.5 7.5h3L9 5h6l1.5 2.5h3A1.5 1.5 0 0 1 21 9v9.5a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 18.5V9a1.5 1.5 0 0 1 1.5-1.5zM15.5 13.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0z" },
1941
+ settings: { d: "M4 7H14M18 7H20M4 17H8M12 17H20M18 7a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM12 17a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" },
1942
+ moon: { d: "M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z" },
1943
+ sun: { d: "M16 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM12 2.5v2M12 19.5v2M4.6 4.6l1.4 1.4M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4L6 18M18 6l1.4-1.4" },
1944
+ chevronDown: { d: "M6 9L12 15L18 9" },
1945
+ chevronUp: { d: "M6 15L12 9L18 15" },
1946
+ barChart: { d: "M5 20V13M12 20V5M19 20V10" },
1947
+ x: { d: "M6 6L18 18M18 6L6 18" },
1948
+ play: { d: "M7 4.5v15L19.5 12z" },
1949
+ pause: { d: "M8 5V19M16 5V19" },
1950
+ stop: { d: "M7.5 6h9A1.5 1.5 0 0 1 18 7.5v9a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 6 16.5v-9A1.5 1.5 0 0 1 7.5 6z" },
1951
+ receipt: { d: "M6 3.5h12v17l-2-1.25-2 1.25-2-1.25-2 1.25-2-1.25-2 1.25zM9 8h6M9 12h6M9 16h3" },
1952
+ bell: { d: "M6 16.5V11a6 6 0 0 1 12 0v5.5l1.5 2H4.5zM10 20.5a2.2 2.2 0 0 0 4 0" },
1953
+ layers: { d: "M12 3.5L21 8.5L12 13.5L3 8.5zM3 12.5L12 17.5L21 12.5M3 16.5L12 21.5L21 16.5" },
1954
+ eye: { d: "M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12zM15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" },
1955
+ eyeOff: { d: "M4 4L20 20M9.9 5.8A9.6 9.6 0 0 1 12 5.5c6 0 9.5 6.5 9.5 6.5a16 16 0 0 1-2.3 3.1M6.6 7.1C3.9 8.9 2.5 12 2.5 12S6 18.5 12 18.5a9.3 9.3 0 0 0 4.7-1.3M10 10.1a3 3 0 0 0 4 4" },
1956
+ lock: { d: "M7 10.5h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2zM8 10.5V7.5a4 4 0 0 1 8 0v3" },
1957
+ unlock: { d: "M7 10.5h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2zM8 10.5V7.5a4 4 0 0 1 7.7-1.5" },
1958
+ palette: {
1959
+ d: "M12 3.5a8.5 8.5 0 0 0 0 17c1.1 0 1.6-.8 1.6-1.6 0-.5-.2-.9-.5-1.2a1.6 1.6 0 0 1 1.2-2.7h1.9a4.3 4.3 0 0 0 4.3-4.3C20.5 6.9 16.7 3.5 12 3.5z",
1960
+ dots: [
1961
+ [
1962
+ 7.5,
1963
+ 11.5,
1964
+ 1.25
1965
+ ],
1966
+ [
1967
+ 9.5,
1968
+ 7.75,
1969
+ 1.25
1970
+ ],
1971
+ [
1972
+ 14,
1973
+ 7.25,
1974
+ 1.25
1975
+ ]
1976
+ ]
1977
+ },
1978
+ check: { d: "M5 12.5L10 17.5L19 7" },
1979
+ maximize: { d: "M8 4H5a1 1 0 0 0-1 1v3M16 4h3a1 1 0 0 1 1 1v3M20 16v3a1 1 0 0 1-1 1h-3M8 20H5a1 1 0 0 1-1-1v-3" },
1980
+ minimize: { d: "M4 8h3a1 1 0 0 0 1-1V4M16 4v3a1 1 0 0 0 1 1h3M20 16h-3a1 1 0 0 0-1 1v3M8 20v-3a1 1 0 0 0-1-1H4" },
1981
+ repeat: { d: "M17 3.5L20.5 7L17 10.5M3.5 11.5V10a3 3 0 0 1 3-3h14M7 20.5L3.5 17L7 13.5M20.5 12.5V14a3 3 0 0 1-3 3h-14" },
1982
+ info: {
1983
+ d: "M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zM12 11V16.5",
1984
+ dots: [[
1985
+ 12,
1986
+ 7.75,
1987
+ 1.25
1988
+ ]]
1989
+ },
1990
+ chevronLeft: { d: "M15 5L8 12L15 19" },
1991
+ chevronRight: { d: "M9 5L16 12L9 19" },
1992
+ reset: { d: "M4.5 12a7.5 7.5 0 1 0 2.2-5.3M4.5 4v4.5H9" },
1993
+ calendar: { d: "M5.5 5h13a2 2 0 0 1 2 2v11.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2zM3.5 10H20.5M8 3V7M16 3V7" },
1994
+ star: { d: "M12 3.5L14.6 9L20.5 9.6L16 13.6L17.3 19.5L12 16.5L6.7 19.5L8 13.6L3.5 9.6L9.4 9z" },
1995
+ pin: { d: "M8 3.5h8M9.5 3.5v5.5L5.5 14h13l-4-5v-5.5M12 14v6.5" },
1996
+ search: { d: "M16.5 10.5a6 6 0 1 1-12 0 6 6 0 0 1 12 0zM15 15L20.5 20.5" },
1997
+ enter: { d: "M19 5v6.5a3 3 0 0 1-3 3H5.5M9.5 10L5 14.5L9.5 19" },
1998
+ stepBack: { d: "M6 5v14M18.5 5.5v13L8.5 12z" },
1999
+ stepForward: { d: "M18 5v14M5.5 5.5v13l10-6.5z" },
2000
+ ladder: { d: "M4 6H11M13 6H17M6 10H11M13 10H20M8 14H11M13 14H15M5 18H11M13 18H19" },
2001
+ save: { d: "M5.5 3.5h10.5l4.5 4.5v10.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2v-13a2 2 0 0 1 2-2zM8 3.5v5h7v-5M7.5 20.5v-6h9v6" },
2002
+ folder: { d: "M3.5 7a2 2 0 0 1 2-2h4l2 2.5h7a2 2 0 0 1 2 2V17a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2z" },
2003
+ link: { d: "M10 14a4 4 0 0 0 5.66 0l3-3a4 4 0 0 0-5.66-5.66l-1.2 1.2M14 10a4 4 0 0 0-5.66 0l-3 3a4 4 0 0 0 5.66 5.66l1.2-1.2" },
2004
+ arrowUp: { d: "M12 19V5M6 11L12 5L18 11" },
2005
+ arrowDown: { d: "M12 5V19M6 13L12 19L18 13" },
2006
+ more: { dots: [
2007
+ [
2008
+ 6,
2009
+ 12,
2010
+ 1.6
2011
+ ],
2012
+ [
2013
+ 12,
2014
+ 12,
2015
+ 1.6
2016
+ ],
2017
+ [
2018
+ 18,
2019
+ 12,
2020
+ 1.6
2021
+ ]
2022
+ ] },
2023
+ layoutGrid: { d: "M5 4.5h4.5a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM14.5 4.5H19a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM5 14h4.5a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5v-4.5A.5.5 0 0 1 5 14zM14.5 14H19a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5v-4.5a.5.5 0 0 1 .5-.5z" }
2024
+ }, Jn = {
2025
+ trendLine: {
2026
+ d: "M5 18L19 6",
2027
+ dots: [[5, 18], [19, 6]]
2028
+ },
2029
+ ray: {
2030
+ d: "M5 17L21 5M17.5 4.81L21 5L20.2 8.41",
2031
+ dots: [[5, 17], [11, 12.5]]
2032
+ },
2033
+ extendedLine: {
2034
+ d: "M3 18.5L21 5M17.5 4.81L21 5L20.2 8.41M6.5 18.69L3 18.5L3.8 15.09",
2035
+ dots: [[9, 14], [15, 9.5]]
2036
+ },
2037
+ infoLine: {
2038
+ d: "M5 20L19 10M4.5 3.5h9a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1zM6.5 6.5h5",
2039
+ dots: [[5, 20], [19, 10]]
2040
+ },
2041
+ trendAngle: {
2042
+ d: "M5 18L19 7M5 18H20M11 18A6 6 0 0 0 9.71 14.29",
2043
+ dots: [[5, 18], [19, 7]]
2044
+ },
2045
+ horizontalLine: {
2046
+ d: "M3 12H21",
2047
+ dots: [[12, 12]]
2048
+ },
2049
+ horizontalRay: {
2050
+ d: "M7 12H21M18.5 9.5L21 12L18.5 14.5",
2051
+ dots: [[7, 12]]
2052
+ },
2053
+ verticalLine: {
2054
+ d: "M12 3V21",
2055
+ dots: [[12, 12]]
2056
+ },
2057
+ crossLine: {
2058
+ d: "M3 12H21M12 3V21",
2059
+ dots: [[12, 12]]
2060
+ },
2061
+ parallelChannel: {
2062
+ d: "M3 15L15 5M9 19L21 9",
2063
+ dots: [
2064
+ [3, 15],
2065
+ [15, 5],
2066
+ [9, 19]
2067
+ ]
2068
+ },
2069
+ regressionChannel: {
2070
+ d: "M3 12L21 4M3 20L21 12",
2071
+ dash: "M3 16L21 8",
2072
+ dots: [[3, 16], [21, 8]]
2073
+ },
2074
+ fibRetracement: {
2075
+ d: "M3 4H21M3 9H21M3 13H21M3 20H21",
2076
+ dots: [[5, 20], [19, 4]]
2077
+ },
2078
+ fibExtension: {
2079
+ d: "M3 20L8 10L12 16M14 4H21M14 8H21M14 12H21",
2080
+ dots: [
2081
+ [3, 20],
2082
+ [8, 10],
2083
+ [12, 16]
2084
+ ]
2085
+ },
2086
+ fibChannel: {
2087
+ d: "M3 9L21 3M3 13L21 7M3 16L21 10M3 21L21 15",
2088
+ dots: [
2089
+ [3, 21],
2090
+ [21, 15],
2091
+ [3, 9]
2092
+ ]
2093
+ },
2094
+ fibTimeZones: {
2095
+ d: "M3 4V20M6 4V20M9.5 4V20M14 4V20M20.5 4V20",
2096
+ dots: [[3, 20], [6, 20]]
2097
+ },
2098
+ fibSpeedResistanceFan: {
2099
+ d: "M4 20L20 4M4 20L20 11M4 20L20 16M4 20L11 4",
2100
+ dash: "M4 4H20V20",
2101
+ dots: [[4, 20], [20, 4]]
2102
+ },
2103
+ rectangle: {
2104
+ d: "M5.5 6h13A1.5 1.5 0 0 1 20 7.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 16.5v-9A1.5 1.5 0 0 1 5.5 6z",
2105
+ dots: [[4, 6], [20, 18]]
2106
+ },
2107
+ circle: {
2108
+ d: "M19.5 12a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0z",
2109
+ dots: [[12, 12], [19.5, 12]]
2110
+ },
2111
+ ellipse: {
2112
+ d: "M20.5 12c0 3-3.8 5.5-8.5 5.5S3.5 15 3.5 12 7.3 6.5 12 6.5s8.5 2.5 8.5 5.5z",
2113
+ dots: [[3.5, 12], [20.5, 12]]
2114
+ },
2115
+ triangle: {
2116
+ d: "M12 4.5L20 19H4z",
2117
+ dots: [
2118
+ [12, 4.5],
2119
+ [20, 19],
2120
+ [4, 19]
2121
+ ]
2122
+ },
2123
+ pitchfork: {
2124
+ d: "M4 20L16.75 3M7 9L11.5 3M13 15L21 4.33M7 9L13 15",
2125
+ dots: [
2126
+ [4, 20],
2127
+ [7, 9],
2128
+ [13, 15]
2129
+ ]
2130
+ },
2131
+ schiffPitchfork: {
2132
+ d: "M4 14.5L21 7.42M7 9L21 3.17M13 15L21 11.67M7 9L13 15",
2133
+ dash: "M4 20V14.5",
2134
+ dots: [
2135
+ [4, 14.5],
2136
+ [7, 9],
2137
+ [13, 15]
2138
+ ]
2139
+ },
2140
+ modifiedSchiffPitchfork: {
2141
+ d: "M5.5 14.5L21 5.89M7 9L17.8 3M13 15L21 10.56M7 9L13 15",
2142
+ dash: "M4 20L5.5 14.5",
2143
+ dots: [
2144
+ [5.5, 14.5],
2145
+ [7, 9],
2146
+ [13, 15]
2147
+ ]
2148
+ },
2149
+ gannFan: {
2150
+ d: "M4 20L20 4M4 20L20 12M4 20L12 4M4 20L20 16.5M4 20L7.5 4",
2151
+ dots: [[4, 20], [20, 4]]
2152
+ },
2153
+ gannBox: {
2154
+ d: "M4 4H20V20H4zM4 20L20 4M4 4L20 20M12 4V20",
2155
+ dots: [[4, 20], [20, 4]]
2156
+ },
2157
+ cyclicLines: {
2158
+ d: "M4 4V20M9 4V20M14 4V20M19 4V20",
2159
+ dots: [[4, 20], [9, 20]]
2160
+ },
2161
+ xabcdPattern: {
2162
+ d: "M3 18L7 6L11 13L15 8L21 19",
2163
+ dash: "M3 18L11 13L21 19",
2164
+ dots: [
2165
+ [3, 18],
2166
+ [7, 6],
2167
+ [11, 13],
2168
+ [15, 8],
2169
+ [21, 19]
2170
+ ]
2171
+ },
2172
+ abcdPattern: {
2173
+ d: "M4 19L9 8L13 14L20 4",
2174
+ dots: [
2175
+ [4, 19],
2176
+ [9, 8],
2177
+ [13, 14],
2178
+ [20, 4]
2179
+ ]
2180
+ },
2181
+ headAndShoulders: {
2182
+ d: "M3 19L6 11L8.5 15L12 5L15.5 15L18 11L21 19",
2183
+ dash: "M4.5 15H19.5",
2184
+ dots: [
2185
+ [6, 11],
2186
+ [12, 5],
2187
+ [18, 11]
2188
+ ]
2189
+ },
2190
+ elliottWave: {
2191
+ d: "M3 19L6 13L8.5 16L14 6L16 10L21 4",
2192
+ dots: [[3, 19], [21, 4]]
2193
+ },
2194
+ priceRange: { d: "M5 4H19M5 20H19M12 6.5V17.5M9 9.5L12 6.5L15 9.5M9 14.5L12 17.5L15 14.5" },
2195
+ dateRange: { d: "M4 5V19M20 5V19M6.5 12H17.5M9.5 9L6.5 12L9.5 15M14.5 9L17.5 12L14.5 15" },
2196
+ dateAndPriceRange: {
2197
+ d: "M6 18V4M3 7L6 4L9 7M6 18H20M17 15L20 18L17 21",
2198
+ dash: "M6 4H20V18"
2199
+ },
2200
+ measure: { d: "M3.5 16.5L16.5 3.5L20.5 7.5L7.5 20.5zM6.5 13.5L8 15M9.5 10.5L11.5 12.5M12.5 7.5L14 9" },
2201
+ text: { d: "M6 6V4.5H18V6M12 4.5V19.5M9.5 19.5H14.5" },
2202
+ priceLabel: { d: "M9 5H19a1.5 1.5 0 0 1 1.5 1.5v11A1.5 1.5 0 0 1 19 19H9L3.5 12zM11 12H17" },
2203
+ arrow: { d: "M5 19L19 5M10 5H19V14" },
2204
+ riskReward: {
2205
+ d: "M5 12V4H19V12M3 12H21",
2206
+ dash: "M5 12V18H19V12",
2207
+ dots: [[5, 12]]
2208
+ },
2209
+ anchoredVWAP: {
2210
+ d: "M4 18C9 17 12 10 20 7M4 20.5V18",
2211
+ dots: [[4, 18]]
2212
+ },
2213
+ volumeProfileRange: {
2214
+ d: "M6 7H12M6 10.5H17M6 14H15M6 17.5H10",
2215
+ dash: "M3.5 4V20M20.5 4V20",
2216
+ dots: [[3.5, 20], [20.5, 20]]
2217
+ },
2218
+ note: { d: "M5.5 4.5h13v9l-5 5h-8zM13.5 18.5v-5h5M8.5 8.5h7M8.5 11.5h4" },
2219
+ callout: {
2220
+ d: "M10.5 4h9a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM12 12L5 19M12.5 8h5",
2221
+ dots: [[5, 19]]
2222
+ },
2223
+ flag: {
2224
+ d: "M6 21V4M6 4.5h11l-2.5 3.75L17 12H6",
2225
+ soft: "M6 4.5h11l-2.5 3.75L17 12H6z",
2226
+ dots: [[6, 21]]
2227
+ },
2228
+ arrowMark: { d: "M12 4L18 11H14.5V20H9.5V11H6z" },
2229
+ icon: { d: "M12 3.5l2.6 5.3 5.9.85-4.25 4.15 1 5.85L12 16.9l-5.25 2.75 1-5.85L3.5 9.65l5.9-.85z" },
2230
+ brush: { d: "M3.5 17c2.5 0 3-5 6-5s2.5 5 5.5 5 3.5-6 5.5-9" },
2231
+ highlighter: { d: "M14.5 4.5l5 5L11 18H6v-5zM12 7l5 5M4 21h8" },
2232
+ path: {
2233
+ d: "M4 18L9 10L14 14L20 6M16.2 6.6L20 6L19.6 9.8",
2234
+ dots: [
2235
+ [4, 18],
2236
+ [9, 10],
2237
+ [14, 14]
2238
+ ]
2239
+ },
2240
+ polyline: {
2241
+ d: "M5 17L8 6L16 4L20 14L12 20z",
2242
+ soft: "M5 17L8 6L16 4L20 14L12 20z",
2243
+ dots: [
2244
+ [5, 17],
2245
+ [8, 6],
2246
+ [16, 4],
2247
+ [20, 14],
2248
+ [12, 20]
2249
+ ]
2250
+ },
2251
+ curve: {
2252
+ d: "M4 18C8 4 16 4 20 18",
2253
+ dots: [
2254
+ [4, 18],
2255
+ [20, 18],
2256
+ [12, 7.5]
2257
+ ]
2258
+ },
2259
+ arc: {
2260
+ d: "M4 17a8 8 0 0 1 16 0",
2261
+ dots: [
2262
+ [4, 17],
2263
+ [20, 17],
2264
+ [12, 9]
2265
+ ]
2266
+ },
2267
+ fibCircles: {
2268
+ d: "M14 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0zM20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0z",
2269
+ dots: [[12, 12], [20, 12]]
2270
+ },
2271
+ fibSpiral: {
2272
+ d: "M12 12a1.5 1.5 0 0 1 1.5 1.5 3 3 0 0 1-3 3A4.5 4.5 0 0 1 6 12a6 6 0 0 1 6-6 8 8 0 0 1 8 8",
2273
+ dots: [[12, 12]]
2274
+ },
2275
+ fibArcs: {
2276
+ d: "M10 20a6 6 0 0 0-6-6M14 20a10 10 0 0 0-10-10M18 20a14 14 0 0 0-14-14",
2277
+ dash: "M4 20L18 6",
2278
+ dots: [[4, 20], [18, 6]]
2279
+ },
2280
+ fibWedge: {
2281
+ d: "M4 19L20 7M4 19L20 16M10.4 14.2A8 8 0 0 1 11.86 17.53M14.4 11.2A13 13 0 0 1 16.78 16.6",
2282
+ dots: [
2283
+ [4, 19],
2284
+ [20, 7],
2285
+ [20, 16]
2286
+ ]
2287
+ },
2288
+ pitchfan: {
2289
+ d: "M4 20L14 4M4 20L20 14M4 20L17 9",
2290
+ dash: "M14 4L20 14",
2291
+ dots: [
2292
+ [4, 20],
2293
+ [14, 4],
2294
+ [20, 14]
2295
+ ]
2296
+ },
2297
+ gannSquare: {
2298
+ d: "M4 4H20V20H4zM4 20L20 4M4 12H20M12 4V20M4 12a8 8 0 0 1 8 8",
2299
+ dots: [[4, 20], [20, 4]]
2300
+ },
2301
+ elliottImpulse: {
2302
+ d: "M3 19L7 12L10 15L15 5L17.5 9L21 3",
2303
+ dots: [[3, 19], [21, 3]]
2304
+ },
2305
+ elliottCorrection: {
2306
+ d: "M4 5L10 17L14 11L20 20",
2307
+ dots: [[4, 5], [20, 20]]
2308
+ },
2309
+ elliottTriangle: {
2310
+ d: "M3 6L7 17L11 9L15 15L18 11L21 13",
2311
+ dots: [[3, 6], [21, 13]]
2312
+ },
2313
+ elliottDoubleCombo: {
2314
+ d: "M4 5L9 14L13 9L20 19",
2315
+ dots: [
2316
+ [4, 5],
2317
+ [9, 14],
2318
+ [13, 9],
2319
+ [20, 19]
2320
+ ]
2321
+ },
2322
+ elliottTripleCombo: {
2323
+ d: "M3 5L7 13L10 9L14 16L17 12L21 20",
2324
+ dots: [[3, 5], [21, 20]]
2325
+ },
2326
+ threeDrives: {
2327
+ d: "M3 20L7 12L9.5 15L14 7L16.5 10L21 3",
2328
+ dash: "M7 12L14 7L21 3",
2329
+ dots: [
2330
+ [7, 12],
2331
+ [14, 7],
2332
+ [21, 3]
2333
+ ]
2334
+ },
2335
+ cypherPattern: {
2336
+ d: "M3 19L7 9L10 14L15 5L20 16",
2337
+ dash: "M3 19L10 14L20 16",
2338
+ dots: [
2339
+ [3, 19],
2340
+ [7, 9],
2341
+ [10, 14],
2342
+ [15, 5],
2343
+ [20, 16]
2344
+ ]
2345
+ },
2346
+ timeCycles: {
2347
+ d: "M3 18a4.5 4.5 0 0 1 9 0a4.5 4.5 0 0 1 9 0",
2348
+ dots: [[3, 18], [12, 18]]
2349
+ },
2350
+ sineLine: {
2351
+ d: "M3 12C5 5 7.5 5 9 12S13 19 15 12 19.5 5 21 12",
2352
+ dots: [[6, 6.75], [12, 17.25]]
2353
+ },
2354
+ forecast: {
2355
+ d: "M4 18L15.2 7.8M19.5 6a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z",
2356
+ dots: [[4, 18]]
2357
+ },
2358
+ projection: {
2359
+ d: "M12 19L18 11M15.2 11.3L18 11L17.8 13.8",
2360
+ dash: "M3 17L9 9",
2361
+ dots: [
2362
+ [3, 17],
2363
+ [9, 9],
2364
+ [12, 19]
2365
+ ]
2366
+ },
2367
+ barsPattern: {
2368
+ d: "M5 6V14M9 9V18M15 4V12M19 7V16",
2369
+ fills: [
2370
+ "M4 8h2v4H4z",
2371
+ "M8 11h2v5H8z",
2372
+ "M14 6h2v4h-2z",
2373
+ "M18 9h2v5h-2z"
2374
+ ],
2375
+ dash: "M12 3V21"
2376
+ }
2377
+ }, Yn = {
2378
+ candlestick: {
2379
+ d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2380
+ fills: ["M6.5 7h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z", "M14.5 8.5h3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"]
2381
+ },
2382
+ hollowCandle: { d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19M6.5 7h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zM14.5 8.5h3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z" },
2383
+ heikinAshi: {
2384
+ d: "M5.5 9.5V12M5.5 18V20M12 5.5V8M12 14V16M18.5 3V4.5M18.5 10.5V12.5",
2385
+ fills: [
2386
+ "M4 12h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5v-5A.5.5 0 0 1 4 12z",
2387
+ "M10.5 8h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5z",
2388
+ "M17 4.5h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5z"
2389
+ ]
2390
+ },
2391
+ bar: { d: "M8 4V20M5 8H8M8 16H11M16 6V18M13 15H16M16 9H19" },
2392
+ volumeCandles: {
2393
+ d: "M6.5 5V8M6.5 16V19M15.5 3.5V6M15.5 16V20",
2394
+ fills: ["M5.5 8h2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5z", "M11.5 6h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5z"]
2395
+ },
2396
+ equivolume: { d: "M4.5 10h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM10 6h5a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zM18.5 4h1a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z" },
2397
+ line: { d: "M3 17L8 11L12 14L21 5" },
2398
+ area: {
2399
+ d: "M3 17L8 11L12 14L21 5",
2400
+ soft: "M3 17L8 11L12 14L21 5V20H3z"
2401
+ },
2402
+ baseline: {
2403
+ d: "M3 16L7 9L11 14L15 7L21 15",
2404
+ dash: "M3 12H21"
2405
+ },
2406
+ hlcArea: {
2407
+ d: "M3 9L8 6L13 9L21 4M3 15L8 13L13 16L21 11",
2408
+ dash: "M3 12L8 9.5L13 12.5L21 7.5",
2409
+ soft: "M3 9L8 6L13 9L21 4V11L13 16L8 13L3 15z"
2410
+ },
2411
+ stepLine: { d: "M3 18H8V12H12V15H16V7H21" },
2412
+ lineWithMarkers: {
2413
+ d: "M4 17L9 10L14 14L20 6",
2414
+ dots: [
2415
+ [4, 17],
2416
+ [9, 10],
2417
+ [14, 14],
2418
+ [20, 6]
2419
+ ]
2420
+ },
2421
+ hiLo: {
2422
+ d: "M6 7V17M12 4V14M18 9V20",
2423
+ fills: [
2424
+ "M5 7h2v10H5z",
2425
+ "M11 4h2v10h-2z",
2426
+ "M17 9h2v11h-2z"
2427
+ ]
2428
+ },
2429
+ renko: { d: "M3.5 15.5h4v4h-4zM7.5 11.5h4v4h-4zM11.5 7.5h4v4h-4zM15.5 11.5h4v4h-4z" },
2430
+ lineBreak: {
2431
+ d: "M4 14h4v5H4zM8 10h4v4H8zM16 9h4v8h-4z",
2432
+ fills: ["M12 5h4v5h-4z"]
2433
+ },
2434
+ kagi: { d: "M4 19V11H9V16H14V5H20V13" },
2435
+ pointAndFigure: { d: "M5.5 5.5l3 3M8.5 5.5l-3 3M5.5 10.5l3 3M8.5 10.5l-3 3M5.5 15.5l3 3M8.5 15.5l-3 3M14.5 9a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M14.5 14a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0" },
2436
+ rangeBars: {
2437
+ d: "M6.5 11V12M6.5 18V19M12 7V8M12 14V15M17.5 3.5V4.5M17.5 10.5V11.5",
2438
+ fills: [
2439
+ "M5 12h3v6H5z",
2440
+ "M10.5 8h3v6h-3z",
2441
+ "M16 4.5h3v6h-3z"
2442
+ ]
2443
+ }
2444
+ }, Xn = 1.75, Zn = .22, Qn = /* @__PURE__ */ new WeakMap();
2445
+ function $n(e) {
2446
+ let t = Qn.get(e);
2447
+ if (t) return t;
2448
+ let n = "";
2449
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Zn}" stroke="none"/>`);
2450
+ for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2451
+ e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2452
+ for (let [t, r, i = Xn] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2453
+ return Qn.set(e, n), n;
2454
+ }
2455
+ function er(e, t) {
2456
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${$n(e)}</svg>`;
2457
+ }
2458
+ //#endregion
2459
+ export { t as CHART_STYLE_KEYS, Yn as CHART_TYPE_ICONS, z as DARK_TERMINAL, L as DARK_THEME, ln as DEFAULT_BAR_SPACING, cn as DEFAULT_BAR_WIDTH, nn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Pt as DEFAULT_FONT_FAMILY, pn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, sn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Jn as DRAWING_TOOL_ICONS, wn as HNX_SESSIONS, Cn as HOSE_SESSIONS, Xn as ICON_DOT_RADIUS, Zn as ICON_SOFT_OPACITY, R as LIGHT_THEME, e as LayerType, Mn as MARKET_CRYPTO, kn as MARKET_HNX, Dn as MARKET_HOSE, On as MARKET_HOSE_ETF, Nn as MARKET_NYSE, An as MARKET_UPCOM, jn as MARKET_VN30F, fn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, un as PRICE_AXIS_WIDTH, nt as PRICE_SOURCES, N as TC_PALETTE, Lt as TC_SERIES_COLORS, rn as TIMEFRAMES_CRYPTO, on as TIMEFRAMES_FOREX, an as TIMEFRAMES_STOCK, dn as TIME_AXIS_HEIGHT, qn as UI_ICONS, Tn as UPCOM_SESSIONS, En as VN30F_SESSIONS, q as VN_COLORS, It as VOLUME_ALPHA, Re as alignToTimeframe, Ye as autoPricePrecision, ce as barTimeUnit, He as barsAreDaily, tn as chartStyleValue, ne as clamp, Ln as computePriceLimits, me as computePriceRange, oe as computeTickStep, Pn as createVNTheme, tt as detectPrecision, wt as drawingOption, U as en, fe as findBarIndex, Ze as formatFraction, K as formatNumber, Je as formatPrice, Xe as formatPriceScaleLabel, Le as formatTimestamp, xn as formatVND, et as formatVolume, Sn as formatVolumeLoc, Qe as fractionTick, Hn as getCurrentSession, _n as getLocale, bn as getLocaleStrings, ge as hexToRgba, er as iconSvg, ot as indicatorSource, ie as inverseLerp, Be as isDateOnly, rt as isPriceSource, Ie as isTimeFrame, Ee as isValidTimeZone, re as lerp, ve as lerpColor, Xt as lineDash, gt as marketStatus, he as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, x as offsetAt, pe as padPriceRange, st as parseIndicatorSource, S as parseTimeframe, dt as pickBaseTimeframe, $e as priceFormatterFor, Fn as priceStepAt, pt as rankSymbols, Kt as readChartStyleOverrides, Nt as readChartTypeOptions, Yt as readIndicatorPlotStyles, te as readNews, qt as readPaneStyle, l as readQuote, yn as registerLocale, lt as resampleBars, Qt as resolveChartTheme, Tt as resolveDrawingOptions, B as resolveVolumeColors, X as roundToPriceStep, ae as roundToStep, St as sanitizeDrawingOptions, Mt as sanitizeDrawingStyle, Rn as scaleMarketPrices, E as sessionMinute, gn as setLocale, de as sliceVisibleData, it as sourcePrice, mt as stepDecimals, vn as t, Fe as tickBarCount, ze as timeParts, Ge as timeframeBucketStart, C as timeframeToMs, Ue as tzLabel, mn as vi, Kn as vn30fContracts, Gn as vn30fLastTradingDay, P as volumeColor, Oe as wallToUtc, _e as withAlpha, y as zoneOffsetMinutes, Ae as zonedDateFormatter };
1907
2460
 
1908
2461
  //# sourceMappingURL=index.js.map