(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [57569, 78775], {
        715216: e => {
            e.exports = {
                "tv-spinner__container-rotate": "tv-spinner__container-rotate-aLqboHuu"
            }
        },
        685023: (e, t, n) => {
            "use strict";
            n.d(t, {
                DEFAULT_SIZE: () => i,
                spinnerSizeMap: () => r
            });
            const i = "large",
                r = {
                    mini: "xsmall",
                    xxsmall: "xxsmall",
                    xsmall: "xsmall",
                    small: "small",
                    medium: "medium",
                    large: "large"
                }
        },
        607436: (e, t, n) => {
            "use strict";
            n.d(t, {
                DEFAULT_SIZE: () => i.DEFAULT_SIZE,
                spinnerSizeMap: () => i.spinnerSizeMap
            });
            var i = n(685023)
        },
        941285: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                Spinner: () => a,
                renderSpinnerTemplate: () => o
            });
            n(715216);
            var i = n(715050),
                r = n(607436);

            function o(e = "") {
                return `<div class="tv-spinner ${e}" role="progressbar"></div>`
            }
            const s = (0, i.parseHtmlElement)(o());
            class a {
                constructor(e) {
                    this._shown = !1, this._el = s.cloneNode(!0), this.setSize(r.spinnerSizeMap[e || r.DEFAULT_SIZE])
                }
                spin(e) {
                    return this._el.classList.add("tv-spinner--shown"), void 0 === this._container && (this._container = e, void 0 !== e && e.appendChild(this._el)), this._shown = !0, this
                }
                stop(e) {
                    return e && void 0 !== this._container && this._container.removeChild(this._el), this._el && this._el.classList.remove("tv-spinner--shown"), this._shown = !1, this
                }
                setStyle(e) {
                    return Object.keys(e).forEach((t => {
                        const n = e[t];
                        void 0 !== n && this._el.style.setProperty(t, n)
                    })), this
                }
                style() {
                    return this._el.style
                }
                setSize(e) {
                    const t = void 0 !== e ? `tv-spinner--size_${e}` : "";
                    return this._el.className = `tv-spinner ${t} ${this._shown?"tv-spinner--shown":""}`, this
                }
                getEl() {
                    return this._el
                }
                destroy() {
                    this.stop(), delete this._el, delete this._container
                }
            }
        },
        192784: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                flushDelegate: () => i
            });
            const i = new(n(942634).Delegate)
        },
        62802: (e, t, n) => {
            "use strict";
            e = n.nmd(e), n(638456);
            var i = n(702598).fetch,
                r = n(873428).regExpEscape,
                o = n(226722).TVXWindowEvents,
                s = n(49437).TVLocalStorage,
                a = n(942634).Delegate,
                l = n(764829),
                u = n(125226).isFeatureEnabled,
                {
                    flushDelegate: c
                } = n(192784),
                d = n(338619).getLogger("Lib.TVSettings"),
                m = ["s.tradingview.com", "betacdn.tradingview.com"],
                v = (l.enabled("use_localstorage_for_settings"), window.TVSettings = function() {
                    var e = !1,
                        t = null,
                        n = !1;

                    function f() {
                        return !(t || window.is_authenticated)
                    }
                    try {
                        e = !TradingView.onWidget() && parent && parent !== window && !!parent.IS_DEMO_PAGE
                    } catch (e) {}
                    if (e) {
                        var g = {
                                "widgetbar.layout-settings": {
                                    widgets: {},
                                    settings: {
                                        minimized: !0
                                    }
                                },
                                notShowMainWizard: !0
                            },
                            y = function(e, t, n) {
                                var i = g[e];
                                return null == i ? t : i
                            },
                            h = function() {};
                        return {
                            loaded: !1,
                            loadedModel: !1,
                            getValue: y,
                            getJSON: y,
                            getBool: y,
                            getFloat: y,
                            getInt: y,
                            setValue: h,
                            setJSON: h,
                            remove: h,
                            keys: function() {
                                return Object.keys(g)
                            },
                            keysMask: function() {
                                return []
                            },
                            sync: h,
                            onSync: {
                                subscribe: function() {}
                            }
                        }
                    }
                    var S = 12e4;
                    "local" === window.environment && (S = 5e3);
                    var p, _, b, T = TradingView.onWidget() ? "tradingview-widget" : "tradingview",
                        M = T + ".",
                        E = {},
                        w = [],
                        L = [/^widgetbar\.widget\.watchlist.+/, /.+quicks$/, /^widgetbar\.layout-settings$/, /^ChartSideToolbarWidget\.visible$/, /^onwidget\.watchlist$/, /^chart\.favoriteDrawings$/, /^chart\.favoriteDrawingsPosition$/, /^chart\.favoriteLibraryIndicators$/, /^loadChartDialog.favorites$/, /^ChartFavoriteDrawingToolbarWidget\.visible/, /^trading\.chart\.proterty$/, /^trading_floating_toolbar\.position$/, /^trading\.orderWidgetMode\./, /^symbolWatermark$/, /^pinereference\.size$/, /^pinereference\.position$/, /^hint\.+/, /^ChartDrawingToolbarWidget\.visible/];

                    function $(e) {
                        return M + e
                    }

                    function N(e) {
                        return e.substring(M.length)
                    }

                    function F(e, t) {
                        var n = E[e];
                        return null == n ? t : n
                    }

                    function k(e, t, n) {
                        n = n || {};
                        var i = "" + t;
                        return E[e] !== i && (E[e] = i, O(e)), n.forceFlush && !_ && (_ = setTimeout((function() {
                            _ = void 0, D()
                        }), 10)), v
                    }

                    function A(e, t) {
                        return t = t || {}, null != E[e] && (delete E[e], O(e)), t.forceFlush && D(), v
                    }

                    function I() {
                        p = void 0, w.length && D()
                    }

                    function O(e) {
                        if (t) null == E[e] ? t.removeValue(e) : t.setValue(e, E[e]);
                        else if (f()) try {
                            null == E[e] ? s.removeItem($(e)) : s.setItem($(e), E[e])
                        } catch (e) {} else w.push(e), p || (p = setTimeout(I, S));
                        o.emit("settings", JSON.stringify({
                            key: e,
                            value: E[e]
                        }))
                    }

                    function D(e) {
                        if (!n && !b)
                            if (u("disable_save_settings")) d.logWarn("Settings flashing has been skipped because of disable_save_settings featuretoggle");
                            else if (!l.enabled("widget") && !f() && 0 !== w.length) {
                            var t = w;
                            w = [];
                            for (var r = {}, o = t.length; o--;) {
                                var s = t[o],
                                    a = E[s];
                                void 0 === a && (a = null), r[s] = a
                            }
                            var c = new FormData;
                            c.append("delta", JSON.stringify(r)), e && navigator.sendBeacon ? navigator.sendBeacon("/savesettings/", c) : i("/savesettings/", {
                                method: "POST",
                                credentials: "include",
                                body: c
                            }).then((function(n) {
                                if (n.ok || (w = w.concat(t)), [429, 503].includes(n.status)) {
                                    var i = 1e3 * +n.headers.get("retry-after") || 3e5;
                                    b = setTimeout((() => {
                                        b = void 0, D(e)
                                    }), i)
                                }
                            })).catch((function() {
                                w = w.concat(t)
                            }))
                        }
                    }

                    function C() {
                        return Object.keys(E)
                    }

                    function V(e) {
                        for (var t = 0; t < L.length; ++t)
                            if (L[t].exec(e)) return !0;
                        return !1
                    }

                    function x(e) {
                        return e.substring(0, M.length) === M
                    }

                    function P(e) {
                        E = {};
                        const t = 0 === Object.keys(e).length;
                        t || function(e) {
                                Object.keys(e).forEach((function(t) {
                                    E[t] = e[t] + ""
                                }))
                            }(e),
                            function(e) {
                                for (var t = s.length; t--;) {
                                    var n = s.key(t);
                                    n && x(n) && (e && k(N(n), s.getItem(n)), s.removeItem(n))
                                }
                            }(t)
                    }
                    o.on("settings", (function(e) {
                        var t = JSON.parse(e);
                        null == t.value ? delete E[t.key] : E[t.key] = t.value
                    }));
                    var R = new a;
                    return document.addEventListener("visibilitychange", (function() {
                        "hidden" !== document.visibilityState && !0 !== document.hidden || D()
                    })), window.addEventListener("pagehide", (function() {
                        D(!0)
                    })), window.addEventListener("beforeunload", (function() {
                        D(!0)
                    })), c.subscribe(null, (() => {
                        D()
                    })), {
                        loaded: !1,
                        loadedModel: !1,
                        getValue: F,
                        getJSON: function(e, t) {
                            var n = F(e, void 0);
                            if (null == n) return t;
                            try {
                                return JSON.parse(n)
                            } catch (n) {
                                return A(e), t
                            }
                        },
                        getBool: function(e, t) {
                            var n = F(e);
                            return null == n ? t : !(!n || "false" === n || 0 == +n)
                        },
                        getFloat: function(e, t, n) {
                            var i = F(e, void 0);
                            if (null == i) return t;
                            var r = parseFloat(i);
                            if (!isFinite(r)) throw new TypeError('"' + i + '" is not float (key: "' + e + '")');
                            return r
                        },
                        getInt: function(e, t, n) {
                            var i = F(e, void 0);
                            if (null == i) return t;
                            var r = parseInt(i, 10);
                            if (!isFinite(r)) throw new TypeError('"' + i + '" is not int (key: "' + e + '")');
                            return r
                        },
                        setValue: k,
                        setJSON: function(e, t, n) {
                            return k(e, JSON.stringify(t), n), v
                        },
                        remove: A,
                        keys: C,
                        keysMask: function(e, t) {
                            for (var n = C(), i = [], o = (e = new RegExp("^" + r(e).replace(/\\\*\\\*/gi, ".+").replace(/\\\*/gi, "[^.]+") + "$", "gi"), n.length - 1); o >= 0; o--) e.test(n[o]) && i.push(n[o]), e.lastIndex = 0;
                            return i
                        },
                        sync: function(e) {
                            null !== e ? (t ? P(t.initialSettings || {}) : f() ? (function() {
                                if (TradingView.onWidget() && m.includes(window.location.host))
                                    for (var e = "tradingview.", t = s.length; t--;) {
                                        var n = s.key(t);
                                        if (0 === n.indexOf(e)) {
                                            var i = n.replace(e, T + ".");
                                            s.setItem(i, s.getItem(n)), s.removeItem(n)
                                        }
                                    }
                            }(), function() {
                                E = {};
                                for (var e = !l.enabled("save_chart_properties_to_local_storage"), t = s.length; t--;) {
                                    var n = s.key(t);
                                    if (n && x(n)) {
                                        var i = n.substring(M.length);
                                        e && !V(i) || (E[i] = s.getItem(n))
                                    }
                                }
                            }()) : P(e || {}), R.fire()) : n = !0
                        },
                        onSync: R,
                        setSettingsAdapter: function(e) {
                            t = e
                        }
                    }
                }());
            setTimeout((function() {
                n.e(30362).then(n.bind(n, 276141)).then((e => {
                    e.clearOldSettings()
                }))
            }), 3e4), e && e.exports && (e.exports = v)
        },
        226722: (e, t, n) => {
            "use strict";
            n.d(t, {
                TVXWindowEvents: () => s
            });
            n(466281);
            var i = n(338619),
                r = n(49437);
            const o = (0, i.getLogger)("XWindowEvents");
            var s;
            ! function(e) {
                const t = "tvxwevents.",
                    n = {};
                let i;
                window.BroadcastChannel ? (i = new BroadcastChannel("tvxwevents"), i.addEventListener("message", (function(e) {
                    const {
                        data: {
                            event: t,
                            value: i
                        }
                    } = e;
                    n[t] && n[t].forEach((e => {
                        e(i)
                    }))
                })), function() {
                    const e = [],
                        n = performance.now();
                    for (let n = 0; n < r.TVLocalStorage.length; n++) {
                        const i = r.TVLocalStorage.key(n);
                        i.startsWith(t) && e.push(i)
                    }
                    const i = r.TVLocalStorage.length;
                    for (const t of e) r.TVLocalStorage.removeItem(t);
                    const s = performance.now() - n;
                    o.logNormal(`Total keys amount in local storage on operation start: ${i}`), o.logNormal(`Keys amount in local storage to be deleted: ${e.length}`), o.logNormal(`Keys to be deleted from local storage: ${JSON.stringify(e)}`), o.logNormal(`Removing keys from local storage took ${s} ms`)
                }()) : window.addEventListener("storage", (function(e) {
                    const {
                        newValue: i,
                        key: o
                    } = e;
                    if (null === i || !o || !o.startsWith(t)) return;
                    const s = o.substring(t.length);
                    n[s] && n[s].forEach((t => {
                        t(e.newValue)
                    }));
                    r.TVLocalStorage.removeItem(o)
                })), e.on = function(e, t) {
                    n[e] || (n[e] = []), n[e].push(t)
                }, e.off = function(e, t) {
                    if (!n[e]) return;
                    const i = n[e].indexOf(t); - 1 !== i && (1 === n[e].length ? delete n[e] : n[e].splice(i, 1))
                }, e.emit = function(e, n = Date.now()) {
                    try {
                        i ? i.postMessage({
                            event: e,
                            value: n
                        }) : r.TVLocalStorage.setItem(t + e, n.toString())
                    } catch (e) {
                        o.logError(e.message)
                    }
                }
            }(s || (s = {}))
        },
        788387: (e, t, n) => {
            "use strict";

            function i(e, t) {
                return !!(null == t ? void 0 : t.includes("cfd")) && ["commodity", "futures", "index", "stock", "fund"].includes(e)
            }

            function r(e, t) {
                return "stock" === e && void 0 !== t && !t.includes("cfd")
            }
            n.d(t, {
                isCFDSymbol: () => i,
                isStockSymbol: () => r
            })
        },
        246125: (e, t, n) => {
            "use strict";
            n.d(t, {
                availableDateFormats: () => h,
                dateFormatFunctions: () => g,
                defaultDateFormat: () => S,
                getDateFormatWithWeekday: () => y,
                months: () => s
            });
            var i = n(444372),
                r = n(39654),
                o = n(574313);
            const s = {
                    1: () => i.t(null, void 0, n(562310)),
                    2: () => i.t(null, void 0, n(302507)),
                    3: () => i.t(null, void 0, n(92767)),
                    4: () => i.t(null, void 0, n(227072)),
                    5: () => i.t(null, {
                        context: "short"
                    }, n(13132)),
                    6: () => i.t(null, void 0, n(800429)),
                    7: () => i.t(null, void 0, n(853786)),
                    8: () => i.t(null, void 0, n(546450)),
                    9: () => i.t(null, void 0, n(806816)),
                    10: () => i.t(null, void 0, n(912179)),
                    11: () => i.t(null, void 0, n(526899)),
                    12: () => i.t(null, void 0, n(532084))
                },
                a = (e, t) => (t ? e.getMonth() : e.getUTCMonth()) + 1,
                l = (e, t) => t ? e.getFullYear() : e.getUTCFullYear(),
                u = e => e.toLocaleDateString(window.language ? (0, r.getIsoLanguageCodeFromLanguage)(window.language) : void 0, {
                    weekday: "short",
                    timeZone: "UTC"
                }),
                c = (e, t) => (0, o.numberToStringWithLeadingZero)(((e, t) => t ? e.getDate() : e.getUTCDate())(e, t), 2),
                d = (e, t) => s[a(e, t)](),
                m = (e, t) => (0, o.numberToStringWithLeadingZero)(a(e, t), 2),
                v = (e, t) => (0, o.numberToStringWithLeadingZero)(l(e, t) % 100, 2),
                f = (e, t) => (0, o.numberToStringWithLeadingZero)(l(e, t), 4),
                g = {
                    "dd MMM 'yy": (e, t) => `${c(e,t)} ${d(e,t)} '${v(e,t)}`,
                    "MMM 'yy": (e, t) => `${d(e,t)} '${v(e,t)}`,
                    "MMM dd, yyyy": (e, t) => `${d(e,t)} ${c(e,t)}, ${f(e,t)}`,
                    "MMM yyyy": (e, t) => `${d(e,t)} ${f(e,t)}`,
                    "MMM dd": (e, t) => `${d(e,t)} ${c(e,t)}`,
                    "dd MMM": (e, t) => `${c(e,t)} ${d(e,t)}`,
                    "yyyy-MM-dd": (e, t) => `${f(e,t)}-${m(e,t)}-${c(e,t)}`,
                    "yy-MM-dd": (e, t) => `${v(e,t)}-${m(e,t)}-${c(e,t)}`,
                    "yy/MM/dd": (e, t) => `${v(e,t)}/${m(e,t)}/${c(e,t)}`,
                    "yyyy/MM/dd": (e, t) => `${f(e,t)}/${m(e,t)}/${c(e,t)}`,
                    "dd-MM-yyyy": (e, t) => `${c(e,t)}-${m(e,t)}-${f(e,t)}`,
                    "dd-MM-yy": (e, t) => `${c(e,t)}-${m(e,t)}-${v(e,t)}`,
                    "dd/MM/yy": (e, t) => `${c(e,t)}/${m(e,t)}/${v(e,t)}`,
                    "dd/MM/yyyy": (e, t) => `${c(e,t)}/${m(e,t)}/${f(e,t)}`,
                    "MM/dd/yy": (e, t) => `${m(e,t)}/${c(e,t)}/${v(e,t)}`,
                    "MM/dd/yyyy": (e, t) => `${m(e,t)}/${c(e,t)}/${f(e,t)}`
                };

            function y(e) {
                return "ja" === window.language ? (t, n) => `${g[e](t,n)} (${u(t)})` : (t, n) => `${u(t)} ${g[e](t,n)}`
            }
            const h = Object.keys(g),
                S = () => -1 !== ["ja", "ko", "zh", "zh_TW"].indexOf(window.language || "") ? "yyyy-MM-dd" : "dd MMM 'yy"
        },
        735211: (e, t, n) => {
            "use strict";
            n.d(t, {
                PriceFormatter: () => a
            });
            var i = n(801786),
                r = n(93500),
                o = n(124829),
                s = n(798791);
            class a {
                constructor(e = {}) {
                    this.type = "price";
                    const {
                        minMove2: t,
                        fractional: n,
                        variableMinTick: a,
                        ignoreMinMove: l,
                        ignoreLocaleNumberFormat: u
                    } = e, c = !e.minMove || l ? 1 : e.minMove, d = (0, o.isNumber)(e.priceScale) && (0, o.isInteger)(e.priceScale) ? e.priceScale : 100, m = (0, s.calculateDecimal)(d, c, n, t), v = { ...e,
                        minMove: c,
                        priceScale: d,
                        fractionalLength: m
                    };
                    if (d < 0) throw new TypeError("invalid base");
                    this._priceScale = d, this._minMove = c, this._minMove2 = t, this._fractional = n, this._variableMinTick = a, this._ignoreMinMove = l, this._fractionalLength = m, this._ignoreLocaleNumberFormat = u, this._implementation = n ? new r.FractionalPriceFormatterImpl(v) : new i.DecimalPriceFormatterImpl(v)
                }
                isFractional() {
                    return !!this._fractional
                }
                state() {
                    return {
                        minMove: this._minMove,
                        minMove2: this._minMove2,
                        priceScale: this._priceScale,
                        variableMinTick: this._variableMinTick,
                        ignoreMinMove: this._ignoreMinMove,
                        fractional: this._fractional
                    }
                }
                formatChange(e, t, n) {
                    return this._implementation.formatImpl(e - t, { ...n,
                        variableMinTickDataPrice: Math.min(Math.abs(e), Math.abs(t))
                    })
                }
                format(e, t) {
                    return this._implementation.formatImpl(e, t)
                }
                parse(e, t) {
                    return this._implementation.parse(e, t)
                }
                hasForexAdditionalPrecision() {
                    return this._implementation.hasForexAdditionalPrecision()
                }
                static serialize(e) {
                    return e.state()
                }
                static deserialize(e) {
                    return new a(e)
                }
            }
        },
        957365: (e, t, n) => {
            "use strict";
            n.d(t, {
                PLACE_HOLDER: () => s,
                VolumeFormatter: () => a
            });
            var i = n(444372),
                r = n(397566),
                o = n(124829);
            const s = "---";
            class a {
                constructor(e = {}) {
                    this.type = "volume";
                    const {
                        precision: t,
                        minPrecision: n,
                        dimensionPrecision: i,
                        dimensionMinPrecision: o,
                        ignoreLocaleNumberFormat: s,
                        removeSpaceBeforeDimension: a
                    } = e;
                    this._precision = null != t ? t : 0, this._formatter = new r.NumericFormatter({
                        ignoreLocaleNumberFormat: s,
                        precision: this._precision,
                        minPrecision: null != n ? n : 0
                    }), this._dimensionPrecision = null != i ? i : 3, this._dimensionFormatter = new r.NumericFormatter({
                        ignoreLocaleNumberFormat: s,
                        precision: this._dimensionPrecision,
                        minPrecision: null != o ? o : 0
                    }), this._fractionalValues = void 0 !== t && t > 0, this._spaceBeforeDimension = a ? "" : " ", this._options = e
                }
                state() {
                    const {
                        ignoreLocaleNumberFormat: e,
                        ...t
                    } = this._options;
                    return t
                }
                format(e, t) {
                    if (!(0, o.isNumber)(e)) return s;
                    if (Math.abs(e) >= 1e100) return i.t(null, void 0, n(696935));
                    const r = Math.abs(e);
                    let a = "";
                    (e = r < 1e3 ? +e.toFixed(this._precision) : r < 1e6 ? 1e3 * +(e / 1e3).toFixed(this._dimensionPrecision) : r < 1e9 ? 1e6 * +(e / 1e6).toFixed(this._dimensionPrecision) : r < 1e12 ? 1e9 * +(e / 1e9).toFixed(this._dimensionPrecision) : 1e12 * +(e / 1e12).toFixed(this._dimensionPrecision)) < 0 ? a = "−" : e > 0 && (null == t ? void 0 : t.signPositive) && (a = "+"), e = Math.abs(e);
                    const l = !!(null == t ? void 0 : t.ignoreLocaleNumberFormat);
                    let u, c;
                    return e < 1e3 ? u = this._formatNumber(e, l, this._formatter) : e < 1e6 ? (u = this._formatNumber(e / 1e3, l, this._dimensionFormatter), c = "K") : e < 1e9 ? (u = this._formatNumber(e / 1e6, l, this._dimensionFormatter), c = "M") : e < 1e12 ? (u = this._formatNumber(e / 1e9, l, this._dimensionFormatter), c = "B") : (u = this._formatNumber(e / 1e12, l, this._dimensionFormatter), c = "T"), c ? `${a}${u}${this._spaceBeforeDimension}${c}` : `${a}${u}`
                }
                parse(e, t) {
                    if ("---" === e) return {
                        error: "not a number",
                        res: !1,
                        value: NaN
                    };
                    const n = {
                            K: 1e3,
                            M: 1e6,
                            B: 1e9,
                            T: 1e12
                        },
                        i = (e = e.replace("−", "-")).slice(-1);
                    if (n.hasOwnProperty(i)) {
                        const r = this._formatter.parse(e.slice(0, -1).trim(), t),
                            s = r.res ? r.value : NaN;
                        return (0, o.isNumber)(s) ? {
                            res: !0,
                            value: s * n[i]
                        } : {
                            error: "not a number",
                            res: !1,
                            value: NaN
                        }
                    } {
                        const n = this._formatter.parse(e.trim(), t),
                            i = n.res ? n.value : NaN;
                        return (0, o.isNumber)(i) ? {
                            res: !0,
                            value: i
                        } : {
                            error: "not a number",
                            res: !1,
                            value: NaN
                        }
                    }
                }
                static serialize(e) {
                    return e.state()
                }
                static deserialize(e) {
                    return new a(e)
                }
                _formatNumber(e, t, n) {
                    if (this._fractionalValues && 0 !== e) {
                        const t = 14 - Math.ceil(Math.log10(e)),
                            n = Math.pow(10, t);
                        e = Math.round(e * n) / n
                    }
                    return n.format(e, {
                        ignoreLocaleNumberFormat: t
                    })
                }
            }
        },
        998418: (e, t, n) => {
            "use strict";
            n.d(t, {
                createPrimitiveProperty: () => r
            });
            var i = n(658843);

            function r(e) {
                return new i.Property(e)
            }
        },
        331613: (e, t, n) => {
            "use strict";
            n(998418)
        },
        509724: (e, t, n) => {
            "use strict";

            function i(e) {
                if (!e) return "";
                if (["AMEX"].includes(e)) return "Arca";
                if (["NYSE ARCA & MKT"].includes(e)) return "NYSE Arca";
                if (["Cboe BZX"].includes(e)) return "Cboe One";
                if (["FTSEST"].includes(e)) return "FTSE ST";
                const t = /^(CME|COMEX|CBOT|NYMEX)_MINI$/.exec(e);
                return null !== t ? t[1] : e
            }
            n.d(t, {
                redefineExchangeName: () => i
            })
        },
        540519: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                SERIES_STATUS_TEXT: () => _,
                STATUS_CALCULATION_ERROR: () => y,
                STATUS_DELAYED: () => d,
                STATUS_DELAYED_STREAMING: () => m,
                STATUS_EOD: () => u,
                STATUS_ERROR: () => g,
                STATUS_INVALID_SYMBOL: () => a,
                STATUS_LOADING: () => o,
                STATUS_NO_BARS: () => v,
                STATUS_OFFLINE: () => i,
                STATUS_PULSE: () => c,
                STATUS_READY: () => s,
                STATUS_REPLAY: () => f,
                STATUS_RESOLVING: () => r,
                STATUS_SNAPSHOT: () => l,
                STATUS_UNSUPPORTED_RESOLUTION: () => h,
                STYLE_AREA: () => E,
                STYLE_BARS: () => b,
                STYLE_BASELINE: () => A,
                STYLE_CANDLES: () => T,
                STYLE_COLUMNS: () => D,
                STYLE_HEIKEN_ASHI: () => F,
                STYLE_HILO: () => O,
                STYLE_HLC_AREA: () => x,
                STYLE_HOLLOW_CANDLES: () => k,
                STYLE_KAGI: () => L,
                STYLE_LINE: () => M,
                STYLE_LINE_WITH_MARKERS: () => C,
                STYLE_PB: () => N,
                STYLE_PNF: () => $,
                STYLE_RANGE: () => I,
                STYLE_RENKO: () => w,
                STYLE_SHORT_NAMES: () => P,
                STYLE_STEPLINE: () => V,
                SYMBOL_STRING_DATA: () => R,
                chartStylesWithAttachedStudies: () => U,
                seriesLoadingStatuses: () => p,
                seriesReadyStatuses: () => S
            });
            const i = 0,
                r = 1,
                o = 2,
                s = 3,
                a = 4,
                l = 5,
                u = 6,
                c = 7,
                d = 8,
                m = 9,
                v = 10,
                f = 11,
                g = 12,
                y = 13,
                h = 14,
                S = new Set([3, 6, 7, 8, 9, 11]),
                p = new Set([1, 2]),
                _ = {
                    [i]: "connecting",
                    [r]: "loading",
                    [o]: "loading",
                    [s]: "realtime",
                    [a]: "invalid",
                    [l]: "snapshot",
                    [u]: "endofday",
                    [c]: "endofday",
                    [d]: "delayed",
                    [m]: "delayed_streaming",
                    [v]: "forbidden",
                    [f]: "replay",
                    [g]: "error",
                    [y]: "calculation_error",
                    [h]: "unsupported_resolution"
                },
                b = 0,
                T = 1,
                M = 2,
                E = 3,
                w = 4,
                L = 5,
                $ = 6,
                N = 7,
                F = 8,
                k = 9,
                A = 10,
                I = 11,
                O = 12,
                D = 13,
                C = 14,
                V = 15,
                x = 16,
                P = {
                    0: "bar",
                    1: "candle",
                    9: "hollowCandle",
                    2: "line",
                    14: "lineWithMarkers",
                    15: "stepline",
                    3: "area",
                    16: "hlcArea",
                    4: "renko",
                    7: "pb",
                    5: "kagi",
                    6: "pnf",
                    8: "ha",
                    10: "baseline",
                    11: "range",
                    12: "hilo",
                    13: "column",
                    17: "volFootprint",
                    18: "tpo",
                    19: "volCandles",
                    20: "svp"
                },
                R = {
                    4: {
                        type: "BarSetRenko@tv-prostudies",
                        basicStudyVersion: 73
                    },
                    7: {
                        type: "BarSetPriceBreak@tv-prostudies",
                        basicStudyVersion: 34
                    },
                    5: {
                        type: "BarSetKagi@tv-prostudies",
                        basicStudyVersion: 73
                    },
                    6: {
                        type: "BarSetPnF@tv-prostudies",
                        basicStudyVersion: 73
                    },
                    8: {
                        type: "BarSetHeikenAshi@tv-basicstudies",
                        basicStudyVersion: 60
                    },
                    11: {
                        type: "BarSetRange@tv-basicstudies",
                        basicStudyVersion: 72
                    },
                    17: {
                        type: "Footprint@tv-volumebyprice",
                        basicStudyVersion: 104
                    },
                    18: {
                        type: "TPOPeriodic@tv-volumebyprice",
                        basicStudyVersion: 104
                    },
                    20: {
                        type: "VbPSessions@tv-volumebyprice",
                        basicStudyVersion: 126
                    }
                },
                U = [17, 18, 20]
        },
        975179: (e, t, n) => {
            "use strict";
            n.r(t), n.d(t, {
                actualSymbol: () => Se,
                chartStyleStudyId: () => Y,
                createSeriesFormatter: () => K,
                displayedSymbolExchange: () => he,
                displayedSymbolName: () => ye,
                extractLineToolSymbolFromSymbolInfo: () => de,
                extractSymbolNameFromSymbolInfo: () => ce,
                getChartStyleByResolution: () => W,
                getDefaultStyle: () => B,
                getLastUsedRawDataStyle: () => U,
                getLastUsedSingleValueBasedStyle: () => R,
                getLastUsedStyle: () => P,
                getSeriesDisplayErrorWV: () => Fe,
                getSeriesPriceFormattingState: () => J,
                getSourceForEconomySymbol: () => fe,
                getSymbolDelaySeconds: () => ke,
                getSymbolExchange: () => Le,
                getTranslatedChartStyleName: () => L,
                hasProjection: () => j,
                hasVolume: () => Ee,
                isCloseBasedSymbol: () => be,
                isConvertedToOtherCurrency: () => ee,
                isConvertedToOtherUnit: () => re,
                isEconomicSymbol: () => we,
                isFutureContinuousSymbolWithBackajustment: () => $e,
                isFuturesContractSymbol: () => Ne,
                isMeasureUnitSymbol: () => Te,
                isPriceSourceStyle: () => G,
                isRangeBasedStyle: () => N,
                isRangeStyle: () => k,
                isRawDataStyle: () => C,
                isRegularSessionId: () => _e,
                isRequiringRestartSeriesStyles: () => $,
                isSingleValueBasedStyle: () => D,
                isStyleSupportedForReplay: () => I,
                isTimeBasedStyle: () => A,
                isValidStyle: () => O,
                measureUnitId: () => Me,
                preparePriceAxisProperties: () => z,
                proSymbol: () => pe,
                setLastUsedRawDataStyle: () => x,
                setLastUsedStyle: () => V,
                styleChangeRequiresRestart: () => F,
                symbolBaseCurrency: () => Q,
                symbolCurrency: () => X,
                symbolCurrencyConvertible: () => Z,
                symbolCurrentContract: () => se,
                symbolHasEconomicEvents: () => ue,
                symbolHasPreOrPostMarket: () => ae,
                symbolHasSeveralSessions: () => le,
                symbolOriginalCurrency: () => q,
                symbolOriginalUnit: () => ie,
                symbolTitle: () => ge,
                symbolTitleSeparator: () => ve,
                symbolToSaveInState: () => me,
                symbolUnit: () => ne,
                symbolUnitConvertible: () => te,
                symbolUnitConvertibleGroupsIfExist: () => oe
            });
            var i = n(444372),
                r = n(62802),
                o = n(638456),
                s = n(519073),
                a = n(540519),
                l = n(378975),
                u = n(735211),
                c = n(764829),
                d = n(957365),
                m = n(142567),
                v = n(788387),
                f = n(643322),
                g = n(272933),
                y = n(509724);
            const h = c.enabled("pay_attention_to_ticker_not_symbol"),
                S = c.enabled("uppercase_instrument_names"),
                p = c.enabled("charting_library_single_symbol_request"),
                _ = c.enabled("use_ticker_on_symbol_info_update"),
                b = c.enabled("hide_object_tree_and_price_scale_exchange_label"),
                T = [4, 5, 6, 7, 8],
                M = [4, 5, 6, 7, 11],
                E = [0, 1, 9, 19, 2, 14, 15, 3, 16, 10, 8, 12, 13, 18, 17, 20],
                w = [2, 14, 15, 10, 3, 13, 18];

            function L(e) {
                return {
                    0: i.t(null, void 0, n(527377)),
                    1: i.t(null, void 0, n(745054)),
                    2: i.t(null, void 0, n(903554)),
                    14: i.t(null, void 0, n(409394)),
                    15: i.t(null, void 0, n(869217)),
                    3: i.t(null, void 0, n(534456)),
                    16: i.t(null, void 0, n(99906)),
                    9: i.t(null, void 0, n(913459)),
                    10: i.t(null, void 0, n(259213)),
                    12: i.t(null, void 0, n(498236)),
                    13: i.t(null, void 0, n(655761)),
                    4: i.t(null, void 0, n(188130)),
                    7: i.t(null, void 0, n(743588)),
                    5: i.t(null, void 0, n(383490)),
                    6: i.t(null, void 0, n(276519)),
                    11: i.t(null, void 0, n(855169)),
                    8: i.t(null, void 0, n(863876)),
                    17: i.t(null, void 0, n(292763)),
                    18: i.t(null, void 0, n(617809)),
                    19: i.t(null, void 0, n(193722)),
                    20: i.t(null, void 0, n(383298))
                }[e]
            }

            function $(e) {
                return -1 !== T.indexOf(e)
            }

            function N(e) {
                return -1 !== M.indexOf(e)
            }

            function F(e, t) {
                return !k(e) && !k(t) && !(e === t || !$(e) && !$(t))
            }

            function k(e) {
                return 11 === e
            }

            function A(e) {
                return -1 !== E.indexOf(e)
            }

            function I(e) {
                return 8 !== e && 17 !== e && 18 !== e && 20 !== e && A(e)
            }

            function O(e) {
                return N(e) || A(e)
            }

            function D(e) {
                switch (e) {
                    case 3:
                    case 10:
                    case 2:
                    case 14:
                    case 15:
                    case 13:
                        return !0;
                    default:
                        return !1
                }
            }

            function C(e) {
                return !a.SYMBOL_STRING_DATA[e]
            }

            function V(e, t) {
                O(e) && (11 !== e && r.setValue("chart.lastUsedStyle", e), C(e) && x(e), be(t) && D(e) && r.setValue("chart.lastUsedSingleValueBasedStyle", e))
            }

            function x(e) {
                r.setValue("chart.rawDataStyle", e)
            }

            function P() {
                const e = r.getInt("chart.lastUsedStyle");
                return void 0 === e ? 1 : e
            }

            function R() {
                const e = r.getInt("chart.lastUsedSingleValueBasedStyle");
                return void 0 === e ? 14 : e
            }

            function U() {
                return r.getInt("chart.rawDataStyle", 1)
            }

            function B(e) {
                return e ? 11 : 1
            }

            function W(e, t) {
                const n = k(t),
                    i = l.Interval.isRange(e);
                return !n && i ? B(!0) : n && !i ? B(!1) : t
            }

            function Y(e, t) {
                const n = a.SYMBOL_STRING_DATA[e];
                return void 0 === n ? null : t ? `${n.type}-${n.basicStudyVersion}` : n.type
            }

            function z(e) {
                const t = e.priceAxisProperties,
                    n = t.lockScale.value(),
                    i = 6 === e.style.value();
                (i || n) && (t.log.setValue(!1), t.percentage.setValue(!1)), t.logDisabled.setValue(!(!i && !n)), t.percentageDisabled.setValue(!(!i && !n))
            }
            const H = [4, 7, 5, 6];

            function j(e) {
                return -1 !== H.indexOf(e)
            }

            function G(e) {
                return w.includes(e)
            }

            function J(e, t = "default", n = !1) {
                let i, r, o, s = 100,
                    a = 1;
                if ("default" === t) null != e && (({
                    pricescale: s,
                    minmov: a,
                    minmove2: r,
                    fractional: i
                } = e), o = e.variable_tick_size || void 0);
                else {
                    let e = t.split(",");
                    3 !== e.length && (e = ["100", "1", "false"]), s = parseInt(e[0]), a = parseInt(e[1]), i = "true" === e[2]
                }
                return n && (a = 1), {
                    priceScale: s,
                    minMove: a,
                    fractional: i,
                    minMove2: r,
                    variableMinTick: o,
                    ignoreMinMove: n
                }
            }

            function K(e, t, n = !1) {
                const {
                    priceScale: i,
                    minMove: r,
                    fractional: o,
                    minMove2: s,
                    variableMinTick: a
                } = J(e, t, n);
                if (null != e) {
                    const l = e.format;
                    if ("default" === t && "volume" === l) return new d.VolumeFormatter({
                        precision: 2
                    });
                    if ("percent" === l) return new m.PercentageFormatter({
                        priceScale: i,
                        minMove: r,
                        fractional: o,
                        minMove2: s,
                        variableMinTick: a,
                        ignoreMinMove: n
                    })
                }
                return new u.PriceFormatter({
                    priceScale: i,
                    minMove: r,
                    fractional: o,
                    minMove2: s,
                    variableMinTick: a,
                    ignoreMinMove: n
                })
            }

            function Z(e) {
                return null !== e && "spread" !== e.type
            }

            function X(e, t, n) {
                if (null === e) return null;
                const i = !t || n ? e.currency_id : e.currency_code;
                return void 0 === i || "" === i || "pct" === i ? null : i
            }

            function q(e, t) {
                const n = t ? e.original_currency_code : e.original_currency_id;
                return "pct" === n ? null : null != n ? n : X(e, t)
            }

            function Q(e) {
                return e.base_currency_id || null
            }

            function ee(e) {
                if (null === e || !Z(e)) return !1;
                const t = q(e);
                return null !== t && t !== X(e)
            }

            function te(e, t) {
                return t && null !== e && "spread" !== e.type
            }

            function ne(e, t) {
                if (null === e || !t) return null;
                const n = e.unit_id;
                return void 0 === n || "" === n ? null : n
            }

            function ie(e, t) {
                return t ? e.original_unit_id || ne(e, t) : null
            }

            function re(e, t) {
                return !(null === e || !te(e, t)) && (void 0 !== e.original_unit_id && e.original_unit_id !== e.unit_id)
            }

            function oe(e, t) {
                return null !== e && te(e, t) ? e.unit_conversion_types || null : []
            }

            function se(e) {
                return "futures" === e.type && e.front_contract || null
            }

            function ae(e) {
                return null !== e && void 0 !== e.subsessions && e.subsessions.some((e => "premarket" === e.id || "postmarket" === e.id))
            }

            function le(e) {
                return null !== e && void 0 !== e.subsessions && e.subsessions.filter((e => !e.private)).length > 1
            }

            function ue(e) {
                return null !== e && ("forex" === e.type || (0, v.isCFDSymbol)(e.type, e.typespecs) || (0, s.hasCryptoTypespec)(e.typespecs || []))
            }

            function ce(e, t, n, i) {
                let r = e && (n && e.pro_name || e.full_name || e.name);
                return p && t ? r = t : (_ || !i && h) && e && e.ticker && (r = e.ticker), S && r && (r = r.toUpperCase()), r
            }

            function de(e, t) {
                return ce(e, null, !0, !0) || t
            }

            function me(e, t) {
                var n, i;
                return e && null !== (i = null !== (n = e.ticker) && void 0 !== n ? n : e.pro_name) && void 0 !== i ? i : t
            }
            const ve = "·";

            function fe(e, t) {
                var n, i;
                return we(e) && null !== (i = null === (n = e.source2) || void 0 === n ? void 0 : n.description) && void 0 !== i ? i : null
            }

            function ge(e, t, n = "exchange") {
                var i;
                const r = null !== (i = fe(e)) && void 0 !== i ? i : e[n];
                return t || b ? e.name : `${e.name} ${ve} ${r}`
            }

            function ye(e) {
                let t = e && (se(e) || e.name) || "";
                return t.length > 40 && (t = t.substring(0, 37) + "..."), t.trim()
            }

            function he(e) {
                const t = e ? e.exchange : "";
                return S ? t.toUpperCase() : t
            }

            function Se(e, t) {
                return null !== e ? e.full_name : t
            }

            function pe(e, t) {
                var n;
                return null !== (n = null == e ? void 0 : e.pro_name) && void 0 !== n ? n : t
            }

            function _e(e) {
                return "regular" === e || "us_regular" === e
            }

            function be(e) {
                return "c" === (null == e ? void 0 : e.visible_plots_set)
            }

            function Te(e) {
                return null !== e && ("unit" === e.measure && null !== Me(e))
            }

            function Me(e) {
                var t;
                return null !== (t = null == e ? void 0 : e.value_unit_id) && void 0 !== t ? t : null
            }

            function Ee(e) {
                return "ohlcv" === e.visible_plots_set
            }

            function we(e) {
                return null !== e && "economic" === e.type
            }

            function Le(e) {
                const t = fe(e);
                if (null !== t) return t;
                return (0, o.onWidget)() || "forex" === e.type ? e.exchange : (0, y.redefineExchangeName)(e.listed_exchange)
            }

            function $e(e) {
                var t;
                return null !== e && "futures" === e.type && Boolean(e.has_backadjustment && (null === (t = e.typespecs) || void 0 === t ? void 0 : t.includes("continuous")))
            }

            function Ne(e) {
                var t;
                return null !== e && "futures" === e.type && !Boolean(null === (t = e.typespecs) || void 0 === t ? void 0 : t.includes("continuous"))
            }

            function Fe(e) {
                return (0, f.combine)(((t, n) => {
                    switch (t) {
                        case 4:
                            {
                                const t = e.seriesErrorMessage();
                                return null !== t && ("resolution_not_entitled" === t || "custom_resolution" === t || "seconds_not_entitled" === t || "ticks_not_entitled" === t || t.startsWith("study_not_auth:")) ? null : {
                                    type: "invalid_symbol"
                                }
                            }
                        case 13:
                            {
                                const t = e.seriesErrorMessage();
                                return null === t ? null : {
                                    type: "calculations_error",
                                    errorMessage: t
                                }
                            }
                        case 14:
                            {
                                const t = e.unsupportedResolutionState().value();
                                return null === t ? null : {
                                    type: "unsupported_resolution",
                                    reason: t.reason
                                }
                            }
                        case 1:
                        case 2:
                            return null;
                        default:
                            if (n) return {
                                type: "no_data"
                            }
                    }
                    return null
                }), e.statusWV().weakReference(), (0, g.createWVFromGetterAndSubscription)((() => !e.bars().size() && !e.isInReplay().value()), e.dataEvents().dataUpdated()).ownership(), (0, g.createWVFromGetterAndSubscription)((() => ({})), e.model().onChartThemeLoaded()).ownership())
            }

            function ke(e) {
                var t;
                return Math.max(0, null !== (t = null == e ? void 0 : e.delay) && void 0 !== t ? t : 0)
            }
        },
        873428: (e, t, n) => {
            "use strict";

            function i(e) {
                return e.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&")
            }
            n.d(t, {
                regExpEscape: () => i
            })
        },
        411963: (e, t, n) => {
            "use strict";

            function i(e, t = !1) {
                "loading" !== document.readyState ? t ? setTimeout((() => e()), 1) : e() : document.addEventListener("DOMContentLoaded", (() => e()))
            }
            n.d(t, {
                whenDocumentReady: () => i
            });
            new Promise((e => {
                i(e)
            }))
        }
    }
]);