!function (t, e) {
    "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.echartsAll = {})
}(this, function (t) {
    "use strict";

    function e(t, e) {
        function n() {
            this.constructor = t
        }

        eA(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
    }

    function n() {
        for (var t = 0, e = 0, n = arguments.length; n > e; e++) t += arguments[e].length;
        for (var i = Array(t), r = 0, e = 0; n > e; e++) for (var o = arguments[e], a = 0, s = o.length; s > a; a++, r++) i[r] = o[a];
        return i
    }

    function i(t, e) {
        var n = e.browser, i = t.match(/Firefox\/([\d.]+)/),
            r = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/), o = t.match(/Edge?\/([\d.]+)/),
            a = /micromessenger/i.test(t);
        i && (n.firefox = !0, n.version = i[1]), r && (n.ie = !0, n.version = r[1]), o && (n.edge = !0, n.version = o[1], n.newEdge = +o[1].split(".")[0] > 18), a && (n.weChat = !0), e.canvasSupported = !!document.createElement("canvas").getContext, e.svgSupported = "undefined" != typeof SVGRect, e.touchEventsSupported = "ontouchstart" in window && !n.ie && !n.edge, e.pointerEventsSupported = "onpointerdown" in window && (n.edge || n.ie && +n.version >= 11), e.domSupported = "undefined" != typeof document;
        var s = document.documentElement.style;
        e.transform3dSupported = (n.ie && "transition" in s || n.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix || "MozPerspective" in s) && !("OTransition" in s), e.transformSupported = e.transform3dSupported || n.ie && +n.version >= 9
    }

    function r(t, e) {
        yA[t] = e
    }

    function o() {
        return vA++
    }

    function a() {
        for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
        "undefined" != typeof console && console.error.apply(console, t)
    }

    function s(t) {
        if (null == t || "object" != typeof t) return t;
        var e = t, n = lA.call(t);
        if ("[object Array]" === n) {
            if (!Y(t)) {
                e = [];
                for (var i = 0, r = t.length; r > i; i++) e[i] = s(t[i])
            }
        } else if (sA[n]) {
            if (!Y(t)) {
                var o = t.constructor;
                if (o.from) e = o.from(t); else {
                    e = new o(t.length);
                    for (var i = 0, r = t.length; r > i; i++) e[i] = s(t[i])
                }
            }
        } else if (!aA[n] && !Y(t) && !P(t)) {
            e = {};
            for (var a in t) t.hasOwnProperty(a) && (e[a] = s(t[a]))
        }
        return e
    }

    function l(t, e, n) {
        if (!D(e) || !D(t)) return n ? s(e) : t;
        for (var i in e) if (e.hasOwnProperty(i)) {
            var r = t[i], o = e[i];
            !D(o) || !D(r) || M(o) || M(r) || P(o) || P(r) || L(o) || L(r) || Y(o) || Y(r) ? !n && i in t || (t[i] = s(e[i])) : l(r, o, n)
        }
        return t
    }

    function u(t, e) {
        for (var n = t[0], i = 1, r = t.length; r > i; i++) n = l(n, t[i], e);
        return n
    }

    function h(t, e) {
        if (Object.assign) Object.assign(t, e); else for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
        return t
    }

    function c(t, e, n) {
        for (var i = b(e), r = 0; r < i.length; r++) {
            var o = i[r];
            (n ? null != e[o] : null == t[o]) && (t[o] = e[o])
        }
        return t
    }

    function p(t, e) {
        if (t) {
            if (t.indexOf) return t.indexOf(e);
            for (var n = 0, i = t.length; i > n; n++) if (t[n] === e) return n
        }
        return -1
    }

    function d(t, e) {
        function n() {
        }

        var i = t.prototype;
        n.prototype = e.prototype, t.prototype = new n;
        for (var r in i) i.hasOwnProperty(r) && (t.prototype[r] = i[r]);
        t.prototype.constructor = t, t.superClass = e
    }

    function f(t, e, n) {
        if (t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, Object.getOwnPropertyNames) for (var i = Object.getOwnPropertyNames(e), r = 0; r < i.length; r++) {
            var o = i[r];
            "constructor" !== o && (n ? null != e[o] : null == t[o]) && (t[o] = e[o])
        } else c(t, e, n)
    }

    function g(t) {
        return t ? "string" == typeof t ? !1 : "number" == typeof t.length : !1
    }

    function y(t, e, n) {
        if (t && e) if (t.forEach && t.forEach === hA) t.forEach(e, n); else if (t.length === +t.length) for (var i = 0, r = t.length; r > i; i++) e.call(n, t[i], i, t); else for (var o in t) t.hasOwnProperty(o) && e.call(n, t[o], o, t)
    }

    function v(t, e, n) {
        if (!t) return [];
        if (!e) return F(t);
        if (t.map && t.map === dA) return t.map(e, n);
        for (var i = [], r = 0, o = t.length; o > r; r++) i.push(e.call(n, t[r], r, t));
        return i
    }

    function m(t, e, n, i) {
        if (t && e) {
            for (var r = 0, o = t.length; o > r; r++) n = e.call(i, n, t[r], r, t);
            return n
        }
    }

    function x(t, e, n) {
        if (!t) return [];
        if (!e) return F(t);
        if (t.filter && t.filter === cA) return t.filter(e, n);
        for (var i = [], r = 0, o = t.length; o > r; r++) e.call(n, t[r], r, t) && i.push(t[r]);
        return i
    }

    function _(t, e, n) {
        if (t && e) for (var i = 0, r = t.length; r > i; i++) if (e.call(n, t[i], i, t)) return t[i]
    }

    function b(t) {
        if (!t) return [];
        if (Object.keys) return Object.keys(t);
        var e = [];
        for (var n in t) t.hasOwnProperty(n) && e.push(n);
        return e
    }

    function w(t, e) {
        for (var n = [], i = 2; i < arguments.length; i++) n[i - 2] = arguments[i];
        return function () {
            return t.apply(e, n.concat(pA.call(arguments)))
        }
    }

    function S(t) {
        for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
        return function () {
            return t.apply(this, e.concat(pA.call(arguments)))
        }
    }

    function M(t) {
        return Array.isArray ? Array.isArray(t) : "[object Array]" === lA.call(t)
    }

    function I(t) {
        return "function" == typeof t
    }

    function T(t) {
        return "string" == typeof t
    }

    function C(t) {
        return "[object String]" === lA.call(t)
    }

    function A(t) {
        return "number" == typeof t
    }

    function D(t) {
        var e = typeof t;
        return "function" === e || !!t && "object" === e
    }

    function L(t) {
        return !!aA[lA.call(t)]
    }

    function k(t) {
        return !!sA[lA.call(t)]
    }

    function P(t) {
        return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument
    }

    function O(t) {
        return null != t.colorStops
    }

    function R(t) {
        return null != t.image
    }

    function z(t) {
        return "[object RegExp]" === lA.call(t)
    }

    function E(t) {
        return t !== t
    }

    function N() {
        for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
        for (var n = 0, i = t.length; i > n; n++) if (null != t[n]) return t[n]
    }

    function B(t, e) {
        return null != t ? t : e
    }

    function V(t, e, n) {
        return null != t ? t : null != e ? e : n
    }

    function F(t) {
        for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
        return pA.apply(t, e)
    }

    function G(t) {
        if ("number" == typeof t) return [t, t, t, t];
        var e = t.length;
        return 2 === e ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[0], t[1], t[2], t[1]] : t
    }

    function H(t, e) {
        if (!t) throw new Error(e)
    }

    function W(t) {
        return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
    }

    function X(t) {
        t[_A] = !0
    }

    function Y(t) {
        return t[_A]
    }

    function Z(t) {
        return new bA(t)
    }

    function U(t, e) {
        for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++) n[i] = t[i];
        for (var r = t.length, i = 0; i < e.length; i++) n[i + r] = e[i];
        return n
    }

    function j(t, e) {
        var n;
        if (Object.create) n = Object.create(t); else {
            var i = function () {
            };
            i.prototype = t, n = new i
        }
        return e && h(n, e), n
    }

    function q(t, e) {
        return t.hasOwnProperty(e)
    }

    function K() {
    }

    function $(t, e) {
        return null == t && (t = 0), null == e && (e = 0), [t, e]
    }

    function J(t, e) {
        return t[0] = e[0], t[1] = e[1], t
    }

    function Q(t) {
        return [t[0], t[1]]
    }

    function te(t, e, n) {
        return t[0] = e, t[1] = n, t
    }

    function ee(t, e, n) {
        return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t
    }

    function ne(t, e, n, i) {
        return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t
    }

    function ie(t, e, n) {
        return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t
    }

    function re(t) {
        return Math.sqrt(oe(t))
    }

    function oe(t) {
        return t[0] * t[0] + t[1] * t[1]
    }

    function ae(t, e, n) {
        return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t
    }

    function se(t, e, n) {
        return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t
    }

    function le(t, e) {
        return t[0] * e[0] + t[1] * e[1]
    }

    function ue(t, e, n) {
        return t[0] = e[0] * n, t[1] = e[1] * n, t
    }

    function he(t, e) {
        var n = re(e);
        return 0 === n ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t
    }

    function ce(t, e) {
        return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]))
    }

    function pe(t, e) {
        return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])
    }

    function de(t, e) {
        return t[0] = -e[0], t[1] = -e[1], t
    }

    function fe(t, e, n, i) {
        return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t
    }

    function ge(t, e, n) {
        var i = e[0], r = e[1];
        return t[0] = n[0] * i + n[2] * r + n[4], t[1] = n[1] * i + n[3] * r + n[5], t
    }

    function ye(t, e, n) {
        return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t
    }

    function ve(t, e, n) {
        return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t
    }

    function me(t, e, n, i, r, o) {
        var a = i + "-" + r, s = t.length;
        if (o.hasOwnProperty(a)) return o[a];
        if (1 === e) {
            var l = Math.round(Math.log((1 << s) - 1 & ~r) / kA);
            return t[n][l]
        }
        for (var u = i | 1 << n, h = n + 1; i & 1 << h;) h++;
        for (var c = 0, p = 0, d = 0; s > p; p++) {
            var f = 1 << p;
            f & r || (c += (d % 2 ? -1 : 1) * t[n][p] * me(t, e - 1, h, u, r | f, o), d++)
        }
        return o[a] = c, c
    }

    function xe(t, e) {
        var n = [[t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]], [0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]], [t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]], [0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]], [t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]], [0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]], [t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]], [0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]]],
            i = {}, r = me(n, 8, 0, 0, 0, i);
        if (0 !== r) {
            for (var o = [], a = 0; 8 > a; a++) for (var s = 0; 8 > s; s++) null == o[s] && (o[s] = 0), o[s] += ((a + s) % 2 ? -1 : 1) * me(n, 7, 0 === a ? 1 : 0, 1 << a, 1 << s, i) / r * e[a];
            return function (t, e, n) {
                var i = e * o[6] + n * o[7] + 1;
                t[0] = (e * o[0] + n * o[1] + o[2]) / i, t[1] = (e * o[3] + n * o[4] + o[5]) / i
            }
        }
    }

    function _e(t, e, n, i, r) {
        return be(OA, e, i, r, !0) && be(t, n, OA[0], OA[1])
    }

    function be(t, e, n, i, r) {
        if (e.getBoundingClientRect && oA.domSupported && !Me(e)) {
            var o = e[PA] || (e[PA] = {}), a = we(e, o), s = Se(a, o, r);
            if (s) return s(t, n, i), !0
        }
        return !1
    }

    function we(t, e) {
        var n = e.markers;
        if (n) return n;
        n = e.markers = [];
        for (var i = ["left", "right"], r = ["top", "bottom"], o = 0; 4 > o; o++) {
            var a = document.createElement("div"), s = a.style, l = o % 2, u = (o >> 1) % 2;
            s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0", r[u] + ":0", i[1 - l] + ":auto", r[1 - u] + ":auto", ""].join("!important;"), t.appendChild(a), n.push(a)
        }
        return n
    }

    function Se(t, e, n) {
        for (var i = n ? "invTrans" : "trans", r = e[i], o = e.srcCoords, a = [], s = [], l = !0, u = 0; 4 > u; u++) {
            var h = t[u].getBoundingClientRect(), c = 2 * u, p = h.left, d = h.top;
            a.push(p, d), l = l && o && p === o[c] && d === o[c + 1], s.push(t[u].offsetLeft, t[u].offsetTop)
        }
        return l && r ? r : (e.srcCoords = a, e[i] = n ? xe(s, a) : xe(a, s))
    }

    function Me(t) {
        return "CANVAS" === t.nodeName.toUpperCase()
    }

    function Ie(t, e, n, i) {
        return n = n || {}, i || !oA.canvasSupported ? Te(t, e, n) : oA.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (n.zrX = e.layerX, n.zrY = e.layerY) : null != e.offsetX ? (n.zrX = e.offsetX, n.zrY = e.offsetY) : Te(t, e, n), n
    }

    function Te(t, e, n) {
        if (oA.domSupported && t.getBoundingClientRect) {
            var i = e.clientX, r = e.clientY;
            if (Me(t)) {
                var o = t.getBoundingClientRect();
                return n.zrX = i - o.left, void (n.zrY = r - o.top)
            }
            if (be(EA, t, i, r)) return n.zrX = EA[0], void (n.zrY = EA[1])
        }
        n.zrX = n.zrY = 0
    }

    function Ce(t) {
        return t || window.event
    }

    function Ae(t, e, n) {
        if (e = Ce(e), null != e.zrX) return e;
        var i = e.type, r = i && i.indexOf("touch") >= 0;
        if (r) {
            var o = "touchend" !== i ? e.targetTouches[0] : e.changedTouches[0];
            o && Ie(t, o, e, n)
        } else {
            Ie(t, e, e, n);
            var a = De(e);
            e.zrDelta = a ? a / 120 : -(e.detail || 0) / 3
        }
        var s = e.button;
        return null == e.which && void 0 !== s && zA.test(e.type) && (e.which = 1 & s ? 1 : 2 & s ? 3 : 4 & s ? 2 : 0), e
    }

    function De(t) {
        var e = t.wheelDelta;
        if (e) return e;
        var n = t.deltaX, i = t.deltaY;
        if (null == n || null == i) return e;
        var r = Math.abs(0 !== i ? i : n), o = i > 0 ? -1 : 0 > i ? 1 : n > 0 ? -1 : 1;
        return 3 * r * o
    }

    function Le(t, e, n, i) {
        RA ? t.addEventListener(e, n, i) : t.attachEvent("on" + e, n)
    }

    function ke(t, e, n, i) {
        RA ? t.removeEventListener(e, n, i) : t.detachEvent("on" + e, n)
    }

    function Pe(t) {
        return 2 === t.which || 3 === t.which
    }

    function Oe(t) {
        var e = t[1][0] - t[0][0], n = t[1][1] - t[0][1];
        return Math.sqrt(e * e + n * n)
    }

    function Re(t) {
        return [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2]
    }

    function ze(t, e, n) {
        return {
            type: t,
            event: n,
            target: e.target,
            topTarget: e.topTarget,
            cancelBubble: !1,
            offsetX: n.zrX,
            offsetY: n.zrY,
            gestureEvent: n.gestureEvent,
            pinchX: n.pinchX,
            pinchY: n.pinchY,
            pinchScale: n.pinchScale,
            wheelDelta: n.zrDelta,
            zrByTouch: n.zrByTouch,
            which: n.which,
            stop: Ee
        }
    }

    function Ee() {
        NA(this.event)
    }

    function Ne(t, e, n) {
        if (t[t.rectHover ? "rectContain" : "contain"](e, n)) {
            for (var i = t, r = void 0, o = !1; i;) {
                if (i.ignoreClip && (o = !0), !o) {
                    var a = i.getClipPath();
                    if (a && !a.contain(e, n)) return !1;
                    i.silent && (r = !0)
                }
                var s = i.__hostTarget;
                i = s ? s : i.parent
            }
            return r ? FA : !0
        }
        return !1
    }

    function Be(t, e, n) {
        var i = t.painter;
        return 0 > e || e > i.getWidth() || 0 > n || n > i.getHeight()
    }

    function Ve(t) {
        for (var e = 0; t >= ZA;) e |= 1 & t, t >>= 1;
        return t + e
    }

    function Fe(t, e, n, i) {
        var r = e + 1;
        if (r === n) return 1;
        if (i(t[r++], t[e]) < 0) {
            for (; n > r && i(t[r], t[r - 1]) < 0;) r++;
            Ge(t, e, r)
        } else for (; n > r && i(t[r], t[r - 1]) >= 0;) r++;
        return r - e
    }

    function Ge(t, e, n) {
        for (n--; n > e;) {
            var i = t[e];
            t[e++] = t[n], t[n--] = i
        }
    }

    function He(t, e, n, i, r) {
        for (i === e && i++; n > i; i++) {
            for (var o, a = t[i], s = e, l = i; l > s;) o = s + l >>> 1, r(a, t[o]) < 0 ? l = o : s = o + 1;
            var u = i - s;
            switch (u) {
                case 3:
                    t[s + 3] = t[s + 2];
                case 2:
                    t[s + 2] = t[s + 1];
                case 1:
                    t[s + 1] = t[s];
                    break;
                default:
                    for (; u > 0;) t[s + u] = t[s + u - 1], u--
            }
            t[s] = a
        }
    }

    function We(t, e, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(t, e[n + r]) > 0) {
            for (s = i - r; s > l && o(t, e[n + r + l]) > 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s), a += r, l += r
        } else {
            for (s = r + 1; s > l && o(t, e[n + r - l]) <= 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s);
            var u = a;
            a = r - l, l = r - u
        }
        for (a++; l > a;) {
            var h = a + (l - a >>> 1);
            o(t, e[n + h]) > 0 ? a = h + 1 : l = h
        }
        return l
    }

    function Xe(t, e, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(t, e[n + r]) < 0) {
            for (s = r + 1; s > l && o(t, e[n + r - l]) < 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s);
            var u = a;
            a = r - l, l = r - u
        } else {
            for (s = i - r; s > l && o(t, e[n + r + l]) >= 0;) a = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s), a += r, l += r
        }
        for (a++; l > a;) {
            var h = a + (l - a >>> 1);
            o(t, e[n + h]) < 0 ? l = h : a = h + 1
        }
        return l
    }

    function Ye(t, e) {
        function n(t, e) {
            l[c] = t, u[c] = e, c += 1
        }

        function i() {
            for (; c > 1;) {
                var t = c - 2;
                if (t >= 1 && u[t - 1] <= u[t] + u[t + 1] || t >= 2 && u[t - 2] <= u[t] + u[t - 1]) u[t - 1] < u[t + 1] && t--; else if (u[t] > u[t + 1]) break;
                o(t)
            }
        }

        function r() {
            for (; c > 1;) {
                var t = c - 2;
                t > 0 && u[t - 1] < u[t + 1] && t--, o(t)
            }
        }

        function o(n) {
            var i = l[n], r = u[n], o = l[n + 1], h = u[n + 1];
            u[n] = r + h, n === c - 3 && (l[n + 1] = l[n + 2], u[n + 1] = u[n + 2]), c--;
            var p = Xe(t[o], t, i, r, 0, e);
            i += p, r -= p, 0 !== r && (h = We(t[i + r - 1], t, o, h, h - 1, e), 0 !== h && (h >= r ? a(i, r, o, h) : s(i, r, o, h)))
        }

        function a(n, i, r, o) {
            var a = 0;
            for (a = 0; i > a; a++) p[a] = t[n + a];
            var s = 0, l = r, u = n;
            if (t[u++] = t[l++], 0 !== --o) {
                if (1 === i) {
                    for (a = 0; o > a; a++) t[u + a] = t[l + a];
                    return void (t[u + o] = p[s])
                }
                for (var c, d, f, g = h; ;) {
                    c = 0, d = 0, f = !1;
                    do if (e(t[l], p[s]) < 0) {
                        if (t[u++] = t[l++], d++, c = 0, 0 === --o) {
                            f = !0;
                            break
                        }
                    } else if (t[u++] = p[s++], c++, d = 0, 1 === --i) {
                        f = !0;
                        break
                    } while (g > (c | d));
                    if (f) break;
                    do {
                        if (c = Xe(t[l], p, s, i, 0, e), 0 !== c) {
                            for (a = 0; c > a; a++) t[u + a] = p[s + a];
                            if (u += c, s += c, i -= c, 1 >= i) {
                                f = !0;
                                break
                            }
                        }
                        if (t[u++] = t[l++], 0 === --o) {
                            f = !0;
                            break
                        }
                        if (d = We(p[s], t, l, o, 0, e), 0 !== d) {
                            for (a = 0; d > a; a++) t[u + a] = t[l + a];
                            if (u += d, l += d, o -= d, 0 === o) {
                                f = !0;
                                break
                            }
                        }
                        if (t[u++] = p[s++], 1 === --i) {
                            f = !0;
                            break
                        }
                        g--
                    } while (c >= UA || d >= UA);
                    if (f) break;
                    0 > g && (g = 0), g += 2
                }
                if (h = g, 1 > h && (h = 1), 1 === i) {
                    for (a = 0; o > a; a++) t[u + a] = t[l + a];
                    t[u + o] = p[s]
                } else {
                    if (0 === i) throw new Error;
                    for (a = 0; i > a; a++) t[u + a] = p[s + a]
                }
            } else for (a = 0; i > a; a++) t[u + a] = p[s + a]
        }

        function s(n, i, r, o) {
            var a = 0;
            for (a = 0; o > a; a++) p[a] = t[r + a];
            var s = n + i - 1, l = o - 1, u = r + o - 1, c = 0, d = 0;
            if (t[u--] = t[s--], 0 !== --i) {
                if (1 === o) {
                    for (u -= i, s -= i, d = u + 1, c = s + 1, a = i - 1; a >= 0; a--) t[d + a] = t[c + a];
                    return void (t[u] = p[l])
                }
                for (var f = h; ;) {
                    var g = 0, y = 0, v = !1;
                    do if (e(p[l], t[s]) < 0) {
                        if (t[u--] = t[s--], g++, y = 0, 0 === --i) {
                            v = !0;
                            break
                        }
                    } else if (t[u--] = p[l--], y++, g = 0, 1 === --o) {
                        v = !0;
                        break
                    } while (f > (g | y));
                    if (v) break;
                    do {
                        if (g = i - Xe(p[l], t, n, i, i - 1, e), 0 !== g) {
                            for (u -= g, s -= g, i -= g, d = u + 1, c = s + 1, a = g - 1; a >= 0; a--) t[d + a] = t[c + a];
                            if (0 === i) {
                                v = !0;
                                break
                            }
                        }
                        if (t[u--] = p[l--], 1 === --o) {
                            v = !0;
                            break
                        }
                        if (y = o - We(t[s], p, 0, o, o - 1, e), 0 !== y) {
                            for (u -= y, l -= y, o -= y, d = u + 1, c = l + 1, a = 0; y > a; a++) t[d + a] = p[c + a];
                            if (1 >= o) {
                                v = !0;
                                break
                            }
                        }
                        if (t[u--] = t[s--], 0 === --i) {
                            v = !0;
                            break
                        }
                        f--
                    } while (g >= UA || y >= UA);
                    if (v) break;
                    0 > f && (f = 0), f += 2
                }
                if (h = f, 1 > h && (h = 1), 1 === o) {
                    for (u -= i, s -= i, d = u + 1, c = s + 1, a = i - 1; a >= 0; a--) t[d + a] = t[c + a];
                    t[u] = p[l]
                } else {
                    if (0 === o) throw new Error;
                    for (c = u - (o - 1), a = 0; o > a; a++) t[c + a] = p[a]
                }
            } else for (c = u - (o - 1), a = 0; o > a; a++) t[c + a] = p[a]
        }

        var l, u, h = UA, c = 0, p = [];
        return l = [], u = [], {mergeRuns: i, forceMergeRuns: r, pushRun: n}
    }

    function Ze(t, e, n, i) {
        n || (n = 0), i || (i = t.length);
        var r = i - n;
        if (!(2 > r)) {
            var o = 0;
            if (ZA > r) return o = Fe(t, n, i, e), void He(t, n, i, n + o, e);
            var a = Ye(t, e), s = Ve(r);
            do {
                if (o = Fe(t, n, i, e), s > o) {
                    var l = r;
                    l > s && (l = s), He(t, n, n + l, n + o, e), o = l
                }
                a.pushRun(n, o), a.mergeRuns(), r -= o, n += o
            } while (0 !== r);
            a.forceMergeRuns()
        }
    }

    function Ue() {
        $A || ($A = !0, console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))
    }

    function je(t, e) {
        return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel
    }

    function qe(t) {
        return t = Math.round(t), 0 > t ? 0 : t > 255 ? 255 : t
    }

    function Ke(t) {
        return t = Math.round(t), 0 > t ? 0 : t > 360 ? 360 : t
    }

    function $e(t) {
        return 0 > t ? 0 : t > 1 ? 1 : t
    }

    function Je(t) {
        var e = t;
        return qe(e.length && "%" === e.charAt(e.length - 1) ? parseFloat(e) / 100 * 255 : parseInt(e, 10))
    }

    function Qe(t) {
        var e = t;
        return $e(e.length && "%" === e.charAt(e.length - 1) ? parseFloat(e) / 100 : parseFloat(e))
    }

    function tn(t, e, n) {
        return 0 > n ? n += 1 : n > 1 && (n -= 1), 1 > 6 * n ? t + (e - t) * n * 6 : 1 > 2 * n ? e : 2 > 3 * n ? t + (e - t) * (2 / 3 - n) * 6 : t
    }

    function en(t, e, n) {
        return t + (e - t) * n
    }

    function nn(t, e, n, i, r) {
        return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t
    }

    function rn(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t
    }

    function on(t, e) {
        sD && rn(sD, e), sD = aD.put(t, sD || e.slice())
    }

    function an(t, e) {
        if (t) {
            e = e || [];
            var n = aD.get(t);
            if (n) return rn(e, n);
            t += "";
            var i = t.replace(/ /g, "").toLowerCase();
            if (i in oD) return rn(e, oD[i]), on(t, e), e;
            var r = i.length;
            if ("#" !== i.charAt(0)) {
                var o = i.indexOf("("), a = i.indexOf(")");
                if (-1 !== o && a + 1 === r) {
                    var s = i.substr(0, o), l = i.substr(o + 1, a - (o + 1)).split(","), u = 1;
                    switch (s) {
                        case"rgba":
                            if (4 !== l.length) return 3 === l.length ? nn(e, +l[0], +l[1], +l[2], 1) : nn(e, 0, 0, 0, 1);
                            u = Qe(l.pop());
                        case"rgb":
                            return 3 !== l.length ? void nn(e, 0, 0, 0, 1) : (nn(e, Je(l[0]), Je(l[1]), Je(l[2]), u), on(t, e), e);
                        case"hsla":
                            return 4 !== l.length ? void nn(e, 0, 0, 0, 1) : (l[3] = Qe(l[3]), sn(l, e), on(t, e), e);
                        case"hsl":
                            return 3 !== l.length ? void nn(e, 0, 0, 0, 1) : (sn(l, e), on(t, e), e);
                        default:
                            return
                    }
                }
                nn(e, 0, 0, 0, 1)
            } else {
                if (4 === r || 5 === r) {
                    var h = parseInt(i.slice(1, 4), 16);
                    return h >= 0 && 4095 >= h ? (nn(e, (3840 & h) >> 4 | (3840 & h) >> 8, 240 & h | (240 & h) >> 4, 15 & h | (15 & h) << 4, 5 === r ? parseInt(i.slice(4), 16) / 15 : 1), on(t, e), e) : void nn(e, 0, 0, 0, 1)
                }
                if (7 === r || 9 === r) {
                    var h = parseInt(i.slice(1, 7), 16);
                    return h >= 0 && 16777215 >= h ? (nn(e, (16711680 & h) >> 16, (65280 & h) >> 8, 255 & h, 9 === r ? parseInt(i.slice(7), 16) / 255 : 1), on(t, e), e) : void nn(e, 0, 0, 0, 1)
                }
            }
        }
    }

    function sn(t, e) {
        var n = (parseFloat(t[0]) % 360 + 360) % 360 / 360, i = Qe(t[1]), r = Qe(t[2]),
            o = .5 >= r ? r * (i + 1) : r + i - r * i, a = 2 * r - o;
        return e = e || [], nn(e, qe(255 * tn(a, o, n + 1 / 3)), qe(255 * tn(a, o, n)), qe(255 * tn(a, o, n - 1 / 3)), 1), 4 === t.length && (e[3] = t[3]), e
    }

    function ln(t) {
        if (t) {
            var e, n, i = t[0] / 255, r = t[1] / 255, o = t[2] / 255, a = Math.min(i, r, o), s = Math.max(i, r, o),
                l = s - a, u = (s + a) / 2;
            if (0 === l) e = 0, n = 0; else {
                n = .5 > u ? l / (s + a) : l / (2 - s - a);
                var h = ((s - i) / 6 + l / 2) / l, c = ((s - r) / 6 + l / 2) / l, p = ((s - o) / 6 + l / 2) / l;
                i === s ? e = p - c : r === s ? e = 1 / 3 + h - p : o === s && (e = 2 / 3 + c - h), 0 > e && (e += 1), e > 1 && (e -= 1)
            }
            var d = [360 * e, n, u];
            return null != t[3] && d.push(t[3]), d
        }
    }

    function un(t, e) {
        var n = an(t);
        if (n) {
            for (var i = 0; 3 > i; i++) n[i] = 0 > e ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, n[i] > 255 ? n[i] = 255 : n[i] < 0 && (n[i] = 0);
            return gn(n, 4 === n.length ? "rgba" : "rgb")
        }
    }

    function hn(t) {
        var e = an(t);
        return e ? ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) : void 0
    }

    function cn(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            n = n || [];
            var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = e[r], s = e[o], l = i - r;
            return n[0] = qe(en(a[0], s[0], l)), n[1] = qe(en(a[1], s[1], l)), n[2] = qe(en(a[2], s[2], l)), n[3] = $e(en(a[3], s[3], l)), n
        }
    }

    function pn(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = an(e[r]), s = an(e[o]), l = i - r,
                u = gn([qe(en(a[0], s[0], l)), qe(en(a[1], s[1], l)), qe(en(a[2], s[2], l)), $e(en(a[3], s[3], l))], "rgba");
            return n ? {color: u, leftIndex: r, rightIndex: o, value: i} : u
        }
    }

    function dn(t, e, n, i) {
        var r = an(t);
        return t ? (r = ln(r), null != e && (r[0] = Ke(e)), null != n && (r[1] = Qe(n)), null != i && (r[2] = Qe(i)), gn(sn(r), "rgba")) : void 0
    }

    function fn(t, e) {
        var n = an(t);
        return n && null != e ? (n[3] = $e(e), gn(n, "rgba")) : void 0
    }

    function gn(t, e) {
        if (t && t.length) {
            var n = t[0] + "," + t[1] + "," + t[2];
            return ("rgba" === e || "hsva" === e || "hsla" === e) && (n += "," + t[3]), e + "(" + n + ")"
        }
    }

    function yn(t, e) {
        var n = an(t);
        return n ? (.299 * n[0] + .587 * n[1] + .114 * n[2]) * n[3] / 255 + (1 - n[3]) * e : 0
    }

    function vn() {
        var t = Math.round(255 * Math.random()), e = Math.round(255 * Math.random()),
            n = Math.round(255 * Math.random());
        return "rgb(" + t + "," + e + "," + n + ")"
    }

    function mn(t, e, n) {
        return (e - t) * n + t
    }

    function xn(t, e, n) {
        return n > .5 ? e : t
    }

    function _n(t, e, n, i) {
        for (var r = e.length, o = 0; r > o; o++) t[o] = mn(e[o], n[o], i)
    }

    function bn(t, e, n, i) {
        for (var r = e.length, o = r && e[0].length, a = 0; r > a; a++) {
            t[a] || (t[a] = []);
            for (var s = 0; o > s; s++) t[a][s] = mn(e[a][s], n[a][s], i)
        }
    }

    function wn(t, e, n, i) {
        for (var r = e.length, o = 0; r > o; o++) t[o] = e[o] + n[o] * i;
        return t
    }

    function Sn(t, e, n, i) {
        for (var r = e.length, o = r && e[0].length, a = 0; r > a; a++) {
            t[a] || (t[a] = []);
            for (var s = 0; o > s; s++) t[a][s] = e[a][s] + n[a][s] * i
        }
        return t
    }

    function Mn(t, e, n) {
        var i = t, r = e;
        if (i.push && r.push) {
            var o = i.length, a = r.length;
            if (o !== a) {
                var s = o > a;
                if (s) i.length = a; else for (var l = o; a > l; l++) i.push(1 === n ? r[l] : cD.call(r[l]))
            }
            for (var u = i[0] && i[0].length, l = 0; l < i.length; l++) if (1 === n) isNaN(i[l]) && (i[l] = r[l]); else for (var h = 0; u > h; h++) isNaN(i[l][h]) && (i[l][h] = r[l][h])
        }
    }

    function In(t, e) {
        var n = t.length;
        if (n !== e.length) return !1;
        for (var i = 0; n > i; i++) if (t[i] !== e[i]) return !1;
        return !0
    }

    function Tn(t, e, n, i, r, o, a) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e
    }

    function Cn(t, e, n, i, r, o, a, s) {
        for (var l = e.length, u = 0; l > u; u++) t[u] = Tn(e[u], n[u], i[u], r[u], o, a, s)
    }

    function An(t, e, n, i, r, o, a, s) {
        for (var l = e.length, u = e[0].length, h = 0; l > h; h++) {
            t[h] || (t[1] = []);
            for (var c = 0; u > c; c++) t[h][c] = Tn(e[h][c], n[h][c], i[h][c], r[h][c], o, a, s)
        }
    }

    function Dn(t) {
        if (g(t)) {
            var e = t.length;
            if (g(t[0])) {
                for (var n = [], i = 0; e > i; i++) n.push(cD.call(t[i]));
                return n
            }
            return cD.call(t)
        }
        return t
    }

    function Ln(t) {
        return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), "rgba(" + t.join(",") + ")"
    }

    function kn(t) {
        return g(t && t[0]) ? 2 : 1
    }

    function Pn(t) {
        var e = t.pointerType;
        return "pen" === e || "touch" === e
    }

    function On(t) {
        t.touching = !0, null != t.touchTimer && (clearTimeout(t.touchTimer), t.touchTimer = null), t.touchTimer = setTimeout(function () {
            t.touching = !1, t.touchTimer = null
        }, 700)
    }

    function Rn(t) {
        t && (t.zrByTouch = !0)
    }

    function zn(t, e) {
        return Ae(t.dom, new bD(t, e), !0)
    }

    function En(t, e) {
        for (var n = e, i = !1; n && 9 !== n.nodeType && !(i = n.domBelongToZr || n !== e && n === t.painterRoot);) n = n.parentNode;
        return i
    }

    function Nn(t, e) {
        var n = e.domHandlers;
        oA.pointerEventsSupported ? y(mD.pointer, function (i) {
            Vn(e, i, function (e) {
                n[i].call(t, e)
            })
        }) : (oA.touchEventsSupported && y(mD.touch, function (i) {
            Vn(e, i, function (r) {
                n[i].call(t, r), On(e)
            })
        }), y(mD.mouse, function (i) {
            Vn(e, i, function (r) {
                r = Ce(r), e.touching || n[i].call(t, r)
            })
        }))
    }

    function Bn(t, e) {
        function n(n) {
            function i(i) {
                i = Ce(i), En(t, i.target) || (i = zn(t, i), e.domHandlers[n].call(t, i))
            }

            Vn(e, n, i, {capture: !0})
        }

        oA.pointerEventsSupported ? y(xD.pointer, n) : oA.touchEventsSupported || y(xD.mouse, n)
    }

    function Vn(t, e, n, i) {
        t.mounted[e] = n, t.listenerOpts[e] = i, Le(t.domTarget, e, n, i)
    }

    function Fn(t) {
        var e = t.mounted;
        for (var n in e) e.hasOwnProperty(n) && ke(t.domTarget, n, e[n], t.listenerOpts[n]);
        t.mounted = {}
    }

    function Gn() {
        return [1, 0, 0, 1, 0, 0]
    }

    function Hn(t) {
        return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t
    }

    function Wn(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t
    }

    function Xn(t, e, n) {
        var i = e[0] * n[0] + e[2] * n[1], r = e[1] * n[0] + e[3] * n[1], o = e[0] * n[2] + e[2] * n[3],
            a = e[1] * n[2] + e[3] * n[3], s = e[0] * n[4] + e[2] * n[5] + e[4], l = e[1] * n[4] + e[3] * n[5] + e[5];
        return t[0] = i, t[1] = r, t[2] = o, t[3] = a, t[4] = s, t[5] = l, t
    }

    function Yn(t, e, n) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], t
    }

    function Zn(t, e, n) {
        var i = e[0], r = e[2], o = e[4], a = e[1], s = e[3], l = e[5], u = Math.sin(n), h = Math.cos(n);
        return t[0] = i * h + a * u, t[1] = -i * u + a * h, t[2] = r * h + s * u, t[3] = -r * u + h * s, t[4] = h * o + u * l, t[5] = h * l - u * o, t
    }

    function Un(t, e, n) {
        var i = n[0], r = n[1];
        return t[0] = e[0] * i, t[1] = e[1] * r, t[2] = e[2] * i, t[3] = e[3] * r, t[4] = e[4] * i, t[5] = e[5] * r, t
    }

    function jn(t, e) {
        var n = e[0], i = e[2], r = e[4], o = e[1], a = e[3], s = e[5], l = n * a - o * i;
        return l ? (l = 1 / l, t[0] = a * l, t[1] = -o * l, t[2] = -i * l, t[3] = n * l, t[4] = (i * s - a * r) * l, t[5] = (o * r - n * s) * l, t) : null
    }

    function qn(t) {
        var e = Gn();
        return Wn(e, t), e
    }

    function Kn(t) {
        return t > ED || -ED > t
    }

    function $n(t, e) {
        return CD || (CD = mA().getContext("2d")), AD !== e && (AD = CD.font = e || QD), CD.measureText(t)
    }

    function Jn(t, e) {
        e = e || QD;
        var n = JD[e];
        n || (n = JD[e] = new rD(500));
        var i = n.get(t);
        return null == i && (i = tL.measureText(t, e).width, n.put(t, i)), i
    }

    function Qn(t, e, n, i) {
        var r = Jn(t, e), o = ii(e), a = ei(0, r, n), s = ni(0, o, i), l = new $D(a, s, r, o);
        return l
    }

    function ti(t, e, n, i) {
        var r = ((t || "") + "").split("\n"), o = r.length;
        if (1 === o) return Qn(r[0], e, n, i);
        for (var a = new $D(0, 0, 0, 0), s = 0; s < r.length; s++) {
            var l = Qn(r[s], e, n, i);
            0 === s ? a.copy(l) : a.union(l)
        }
        return a
    }

    function ei(t, e, n) {
        return "right" === n ? t -= e : "center" === n && (t -= e / 2), t
    }

    function ni(t, e, n) {
        return "middle" === n ? t -= e / 2 : "bottom" === n && (t -= e), t
    }

    function ii(t) {
        return Jn("国", t)
    }

    function ri(t, e) {
        return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t
    }

    function oi(t, e, n) {
        var i = e.position || "inside", r = null != e.distance ? e.distance : 5, o = n.height, a = n.width, s = o / 2,
            l = n.x, u = n.y, h = "left", c = "top";
        if (i instanceof Array) l += ri(i[0], n.width), u += ri(i[1], n.height), h = null, c = null; else switch (i) {
            case"left":
                l -= r, u += s, h = "right", c = "middle";
                break;
            case"right":
                l += r + a, u += s, c = "middle";
                break;
            case"top":
                l += a / 2, u -= r, h = "center", c = "bottom";
                break;
            case"bottom":
                l += a / 2, u += o + r, h = "center";
                break;
            case"inside":
                l += a / 2, u += s, h = "center", c = "middle";
                break;
            case"insideLeft":
                l += r, u += s, c = "middle";
                break;
            case"insideRight":
                l += a - r, u += s, h = "right", c = "middle";
                break;
            case"insideTop":
                l += a / 2, u += r, h = "center";
                break;
            case"insideBottom":
                l += a / 2, u += o - r, h = "center", c = "bottom";
                break;
            case"insideTopLeft":
                l += r, u += r;
                break;
            case"insideTopRight":
                l += a - r, u += r, h = "right";
                break;
            case"insideBottomLeft":
                l += r, u += o - r, c = "bottom";
                break;
            case"insideBottomRight":
                l += a - r, u += o - r, h = "right", c = "bottom"
        }
        return t = t || {}, t.x = l, t.y = u, t.align = h, t.verticalAlign = c, t
    }

    function ai(t, e, n, i, r) {
        n = n || {};
        var o = [];
        hi(t, "", t, e, n, i, o, r);
        var a = o.length, s = !1, l = n.done, u = n.aborted, h = function () {
            s = !0, a--, 0 >= a && (s ? l && l() : u && u())
        }, c = function () {
            a--, 0 >= a && (s ? l && l() : u && u())
        };
        a || l && l(), o.length > 0 && n.during && o[0].during(function (t, e) {
            n.during(e)
        });
        for (var p = 0; p < o.length; p++) {
            var d = o[p];
            h && d.done(h), c && d.aborted(c), d.start(n.easing, n.force)
        }
        return o
    }

    function si(t, e, n) {
        for (var i = 0; n > i; i++) t[i] = e[i]
    }

    function li(t) {
        return g(t[0])
    }

    function ui(t, e, n) {
        if (g(e[n])) if (g(t[n]) || (t[n] = []), k(e[n])) {
            var i = e[n].length;
            t[n].length !== i && (t[n] = new e[n].constructor(i), si(t[n], e[n], i))
        } else {
            var r = e[n], o = t[n], a = r.length;
            if (li(r)) for (var s = r[0].length, l = 0; a > l; l++) o[l] ? si(o[l], r[l], s) : o[l] = Array.prototype.slice.call(r[l]); else si(o, r, a);
            o.length = r.length
        } else t[n] = e[n]
    }

    function hi(t, e, n, i, r, o, a, s) {
        for (var l = [], u = [], h = b(i), c = r.duration, d = r.delay, f = r.additive, y = r.setToFinal, v = !D(o), m = 0; m < h.length; m++) {
            var x = h[m];
            if (null != n[x] && null != i[x] && (v || o[x])) if (D(i[x]) && !g(i[x])) {
                if (e) {
                    s || (n[x] = i[x], t.updateDuringAnimation(e));
                    continue
                }
                hi(t, x, n[x], i[x], r, o && o[x], a, s)
            } else l.push(x), u.push(x); else s || (n[x] = i[x], t.updateDuringAnimation(e), u.push(x))
        }
        var _ = l.length;
        if (_ > 0 || r.force && !a.length) {
            for (var w = t.animators, S = [], M = 0; M < w.length; M++) w[M].targetName === e && S.push(w[M]);
            if (!f && S.length) for (var M = 0; M < S.length; M++) {
                var I = S[M].stopTracks(u);
                if (I) {
                    var T = p(w, S[M]);
                    w.splice(T, 1)
                }
            }
            var C = void 0, A = void 0, L = void 0;
            if (s) {
                A = {}, y && (C = {});
                for (var M = 0; _ > M; M++) {
                    var x = l[M];
                    A[x] = n[x], y ? C[x] = i[x] : n[x] = i[x]
                }
            } else if (y) {
                L = {};
                for (var M = 0; _ > M; M++) {
                    var x = l[M];
                    L[x] = Dn(n[x]), ui(n, i, x)
                }
            }
            var k = new fD(n, !1, f ? S : null);
            k.targetName = e, r.scope && (k.scope = r.scope), y && C && k.whenWithKeys(0, C, l), L && k.whenWithKeys(0, L, l), k.whenWithKeys(null == c ? 500 : c, s ? A : i, l).delay(d || 0), t.addAnimator(k, e), a.push(k)
        }
    }

    function ci(t) {
        delete hL[t]
    }

    function pi(t) {
        if (!t) return !1;
        if ("string" == typeof t) return yn(t, 1) < LD;
        if (t.colorStops) {
            for (var e = t.colorStops, n = 0, i = e.length, r = 0; i > r; r++) n += yn(e[r].color, 1);
            return n /= i, LD > n
        }
        return !1
    }

    function di(t, e) {
        var n = new cL(o(), t, e);
        return hL[n.id] = n, n
    }

    function fi(t) {
        t.dispose()
    }

    function gi() {
        for (var t in hL) hL.hasOwnProperty(t) && hL[t].dispose();
        hL = {}
    }

    function yi(t) {
        return hL[t]
    }

    function vi(t, e) {
        uL[t] = e
    }

    function mi(t) {
        return t.replace(/^\s+|\s+$/g, "")
    }

    function xi(t, e, n, i) {
        var r = e[0], o = e[1], a = n[0], s = n[1], l = o - r, u = s - a;
        if (0 === l) return 0 === u ? a : (a + s) / 2;
        if (i) if (l > 0) {
            if (r >= t) return a;
            if (t >= o) return s
        } else {
            if (t >= r) return a;
            if (o >= t) return s
        } else {
            if (t === r) return a;
            if (t === o) return s
        }
        return (t - r) / l * u + a
    }

    function _i(t, e) {
        switch (t) {
            case"center":
            case"middle":
                t = "50%";
                break;
            case"left":
            case"top":
                t = "0%";
                break;
            case"right":
            case"bottom":
                t = "100%"
        }
        return "string" == typeof t ? mi(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? 0 / 0 : +t
    }

    function bi(t, e, n) {
        return null == e && (e = 10), e = Math.min(Math.max(0, e), gL), t = (+t).toFixed(e), n ? t : +t
    }

    function wi(t) {
        return t.sort(function (t, e) {
            return t - e
        }), t
    }

    function Si(t) {
        if (t = +t, isNaN(t)) return 0;
        if (t > 1e-14) for (var e = 1, n = 0; 15 > n; n++, e *= 10) if (Math.round(t * e) / e === t) return n;
        return Mi(t)
    }

    function Mi(t) {
        var e = t.toString().toLowerCase(), n = e.indexOf("e"), i = n > 0 ? +e.slice(n + 1) : 0,
            r = n > 0 ? n : e.length, o = e.indexOf("."), a = 0 > o ? 0 : r - 1 - o;
        return Math.max(0, a - i)
    }

    function Ii(t, e) {
        var n = Math.log, i = Math.LN10, r = Math.floor(n(t[1] - t[0]) / i),
            o = Math.round(n(Math.abs(e[1] - e[0])) / i), a = Math.min(Math.max(-r + o, 0), 20);
        return isFinite(a) ? a : 20
    }

    function Ti(t, e, n) {
        if (!t[e]) return 0;
        var i = m(t, function (t, e) {
            return t + (isNaN(e) ? 0 : e)
        }, 0);
        if (0 === i) return 0;
        for (var r = Math.pow(10, n), o = v(t, function (t) {
            return (isNaN(t) ? 0 : t) / i * r * 100
        }), a = 100 * r, s = v(o, function (t) {
            return Math.floor(t)
        }), l = m(s, function (t, e) {
            return t + e
        }, 0), u = v(o, function (t, e) {
            return t - s[e]
        }); a > l;) {
            for (var h = Number.NEGATIVE_INFINITY, c = null, p = 0, d = u.length; d > p; ++p) u[p] > h && (h = u[p], c = p);
            ++s[c], u[c] = 0, ++l
        }
        return s[e] / r
    }

    function Ci(t, e) {
        var n = Math.max(Si(t), Si(e)), i = t + e;
        return n > gL ? i : bi(i, n)
    }

    function Ai(t) {
        var e = 2 * Math.PI;
        return (t % e + e) % e
    }

    function Di(t) {
        return t > -fL && fL > t
    }

    function Li(t) {
        if (t instanceof Date) return t;
        if ("string" == typeof t) {
            var e = vL.exec(t);
            if (!e) return new Date(0 / 0);
            if (e[8]) {
                var n = +e[4] || 0;
                return "Z" !== e[8].toUpperCase() && (n -= +e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(e[5] || 0), +e[6] || 0, +e[7] || 0))
            }
            return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0)
        }
        return new Date(null == t ? 0 / 0 : Math.round(t))
    }

    function ki(t) {
        return Math.pow(10, Pi(t))
    }

    function Pi(t) {
        if (0 === t) return 0;
        var e = Math.floor(Math.log(t) / Math.LN10);
        return t / Math.pow(10, e) >= 10 && e++, e
    }

    function Oi(t, e) {
        var n, i = Pi(t), r = Math.pow(10, i), o = t / r;
        return n = e ? 1.5 > o ? 1 : 2.5 > o ? 2 : 4 > o ? 3 : 7 > o ? 5 : 10 : 1 > o ? 1 : 2 > o ? 2 : 3 > o ? 3 : 5 > o ? 5 : 10, t = n * r, i >= -20 ? +t.toFixed(0 > i ? -i : 0) : t
    }

    function Ri(t, e) {
        var n = (t.length - 1) * e + 1, i = Math.floor(n), r = +t[i - 1], o = n - i;
        return o ? r + o * (t[i] - r) : r
    }

    function zi(t) {
        function e(t, n, i) {
            return t.interval[i] < n.interval[i] || t.interval[i] === n.interval[i] && (t.close[i] - n.close[i] === (i ? -1 : 1) || !i && e(t, n, 1))
        }

        t.sort(function (t, n) {
            return e(t, n, 0) ? -1 : 1
        });
        for (var n = -1 / 0, i = 1, r = 0; r < t.length;) {
            for (var o = t[r].interval, a = t[r].close, s = 0; 2 > s; s++) o[s] <= n && (o[s] = n, a[s] = s ? 1 : 1 - i), n = o[s], i = a[s];
            o[0] === o[1] && a[0] * a[1] !== 1 ? t.splice(r, 1) : r++
        }
        return t
    }

    function Ei(t) {
        var e = parseFloat(t);
        return e == t && (0 !== e || "string" != typeof t || t.indexOf("x") <= 0) ? e : 0 / 0
    }

    function Ni(t) {
        return !isNaN(Ei(t))
    }

    function Bi() {
        return Math.round(9 * Math.random())
    }

    function Vi(t, e) {
        return 0 === e ? t : Vi(e, t % e)
    }

    function Fi(t, e) {
        return null == t ? e : null == e ? t : t * e / Vi(t, e)
    }

    function Gi(t) {
        throw new Error(t)
    }

    function Hi(t) {
        return t instanceof Array ? t : null == t ? [] : [t]
    }

    function Wi(t, e, n) {
        if (t) {
            t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {};
            for (var i = 0, r = n.length; r > i; i++) {
                var o = n[i];
                !t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o])
            }
        }
    }

    function Xi(t) {
        return !D(t) || M(t) || t instanceof Date ? t : t.value
    }

    function Yi(t) {
        return D(t) && !(t instanceof Array)
    }

    function Zi(t, e, n) {
        var i = "normalMerge" === n, r = "replaceMerge" === n, o = "replaceAll" === n;
        t = t || [], e = (e || []).slice();
        var a = Z();
        y(e, function (t, n) {
            return D(t) ? void 0 : void (e[n] = null)
        });
        var s = Ui(t, a, n);
        return (i || r) && ji(s, t, a, e), i && qi(s, e), i || r ? Ki(s, e, r) : o && $i(s, e), Ji(s), s
    }

    function Ui(t, e, n) {
        var i = [];
        if ("replaceAll" === n) return i;
        for (var r = 0; r < t.length; r++) {
            var o = t[r];
            o && null != o.id && e.set(o.id, r), i.push({
                existing: "replaceMerge" === n || ir(o) ? null : o,
                newOption: null,
                keyInfo: null,
                brandNew: null
            })
        }
        return i
    }

    function ji(t, e, n, i) {
        y(i, function (r, o) {
            if (r && null != r.id) {
                var a = tr(r.id), s = n.get(a);
                if (null != s) {
                    var l = t[s];
                    H(!l.newOption, 'Duplicated option on id "' + a + '".'), l.newOption = r, l.existing = e[s], i[o] = null
                }
            }
        })
    }

    function qi(t, e) {
        y(e, function (n, i) {
            if (n && null != n.name) for (var r = 0; r < t.length; r++) {
                var o = t[r].existing;
                if (!t[r].newOption && o && (null == o.id || null == n.id) && !ir(n) && !ir(o) && Qi("name", o, n)) return t[r].newOption = n, void (e[i] = null)
            }
        })
    }

    function Ki(t, e, n) {
        y(e, function (e) {
            if (e) {
                for (var i, r = 0; (i = t[r]) && (i.newOption || ir(i.existing) || i.existing && null != e.id && !Qi("id", e, i.existing));) r++;
                i ? (i.newOption = e, i.brandNew = n) : t.push({
                    newOption: e,
                    brandNew: n,
                    existing: null,
                    keyInfo: null
                }), r++
            }
        })
    }

    function $i(t, e) {
        y(e, function (e) {
            t.push({newOption: e, brandNew: !0, existing: null, keyInfo: null})
        })
    }

    function Ji(t) {
        var e = Z();
        y(t, function (t) {
            var n = t.existing;
            n && e.set(n.id, t)
        }), y(t, function (t) {
            var n = t.newOption;
            H(!n || null == n.id || !e.get(n.id) || e.get(n.id) === t, "id duplicates: " + (n && n.id)), n && null != n.id && e.set(n.id, t), !t.keyInfo && (t.keyInfo = {})
        }), y(t, function (t, n) {
            var i = t.existing, r = t.newOption, o = t.keyInfo;
            if (D(r)) {
                if (o.name = null != r.name ? tr(r.name) : i ? i.name : mL + n, i) o.id = tr(i.id); else if (null != r.id) o.id = tr(r.id); else {
                    var a = 0;
                    do o.id = "\x00" + o.name + "\x00" + a++; while (e.get(o.id))
                }
                e.set(o.id, t)
            }
        })
    }

    function Qi(t, e, n) {
        var i = er(e[t], null), r = er(n[t], null);
        return null != i && null != r && i === r
    }

    function tr(t) {
        return er(t, "")
    }

    function er(t, e) {
        if (null == t) return e;
        var n = typeof t;
        return "string" === n ? t : "number" === n || C(t) ? t + "" : e
    }

    function nr(t) {
        var e = t.name;
        return !(!e || !e.indexOf(mL))
    }

    function ir(t) {
        return t && null != t.id && 0 === tr(t.id).indexOf(xL)
    }

    function rr(t) {
        return xL + t
    }

    function or(t, e, n) {
        y(t, function (t) {
            var i = t.newOption;
            D(i) && (t.keyInfo.mainType = e, t.keyInfo.subType = ar(e, i, t.existing, n))
        })
    }

    function ar(t, e, n, i) {
        var r = e.type ? e.type : n ? n.subType : i.determineSubType(t, e);
        return r
    }

    function sr(t, e) {
        function n(t, e, n) {
            for (var i = 0, r = t.length; r > i; i++) {
                var o = er(t[i].seriesId, null);
                if (null == o) return;
                for (var a = Hi(t[i].dataIndex), s = n && n[o], l = 0, u = a.length; u > l; l++) {
                    var h = a[l];
                    s && s[h] ? s[h] = null : (e[o] || (e[o] = {}))[h] = 1
                }
            }
        }

        function i(t, e) {
            var n = [];
            for (var r in t) if (t.hasOwnProperty(r) && null != t[r]) if (e) n.push(+r); else {
                var o = i(t[r], !0);
                o.length && n.push({seriesId: r, dataIndex: o})
            }
            return n
        }

        var r = {}, o = {};
        return n(t || [], r), n(e || [], o, r), [i(r), i(o)]
    }

    function lr(t, e) {
        return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? M(e.dataIndex) ? v(e.dataIndex, function (e) {
            return t.indexOfRawIndex(e)
        }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? M(e.name) ? v(e.name, function (e) {
            return t.indexOfName(e)
        }) : t.indexOfName(e.name) : void 0
    }

    function ur() {
        var t = "__ec_inner_" + bL++;
        return function (e) {
            return e[t] || (e[t] = {})
        }
    }

    function hr(t, e, n) {
        var i = cr(e, n), r = i.mainTypeSpecified, o = i.queryOptionMap, a = i.others, s = a,
            l = n ? n.defaultMainType : null;
        return !r && l && o.set(l, {}), o.each(function (e, i) {
            var r = pr(t, i, e, {
                useDefault: l === i,
                enableAll: n && null != n.enableAll ? n.enableAll : !0,
                enableNone: n && null != n.enableNone ? n.enableNone : !0
            });
            s[i + "Models"] = r.models, s[i + "Model"] = r.models[0]
        }), s
    }

    function cr(t, e) {
        var n;
        if (T(t)) {
            var i = {};
            i[t + "Index"] = 0, n = i
        } else n = t;
        var r = Z(), o = {}, a = !1;
        return y(n, function (t, n) {
            if ("dataIndex" === n || "dataIndexInside" === n) return void (o[n] = t);
            var i = n.match(/^(\w+)(Index|Id|Name)$/) || [], s = i[1], l = (i[2] || "").toLowerCase();
            if (s && l && !(e && e.includeMainTypes && p(e.includeMainTypes, s) < 0)) {
                a = a || !!s;
                var u = r.get(s) || r.set(s, {});
                u[l] = t
            }
        }), {mainTypeSpecified: a, queryOptionMap: r, others: o}
    }

    function pr(t, e, n, i) {
        i = i || wL;
        var r = n.index, o = n.id, a = n.name, s = {models: null, specified: null != r || null != o || null != a};
        if (!s.specified) {
            var l = void 0;
            return s.models = i.useDefault && (l = t.getComponent(e)) ? [l] : [], s
        }
        return "none" === r || r === !1 ? (H(i.enableNone, '`"none"` or `false` is not a valid value on index option.'), s.models = [], s) : ("all" === r && (H(i.enableAll, '`"all"` is not a valid value on index option.'), r = o = a = null), s.models = t.queryComponents({
            mainType: e,
            index: r,
            id: o,
            name: a
        }), s)
    }

    function dr(t, e, n) {
        t.setAttribute ? t.setAttribute(e, n) : t[e] = n
    }

    function fr(t, e) {
        return t.getAttribute ? t.getAttribute(e) : t[e]
    }

    function gr(t) {
        return "auto" === t ? oA.domSupported ? "html" : "richText" : t || "html"
    }

    function yr(t, e) {
        var n = Z(), i = [];
        return y(t, function (t) {
            var r = e(t);
            (n.get(r) || (i.push(r), n.set(r, []))).push(t)
        }), {keys: i, buckets: n}
    }

    function vr(t, e, n, i, r) {
        var o = null == e || "auto" === e;
        if (null == i) return i;
        if ("number" == typeof i) {
            var a = mn(n || 0, i, r);
            return bi(a, o ? Math.max(Si(n || 0), Si(i)) : e)
        }
        if ("string" == typeof i) return 1 > r ? n : i;
        for (var s = [], l = n, u = i, h = Math.max(l ? l.length : 0, u.length), c = 0; h > c; ++c) {
            var p = t.getDimensionInfo(c);
            if ("ordinal" === p.type) s[c] = (1 > r && l ? l : u)[c]; else {
                var d = l && l[c] ? l[c] : 0, f = u[c], a = mn(d, f, r);
                s[c] = bi(a, o ? Math.max(Si(d), Si(f)) : e)
            }
        }
        return s
    }

    function mr(t) {
        var e = {main: "", sub: ""};
        if (t) {
            var n = t.split(ML);
            e.main = n[0] || "", e.sub = n[1] || ""
        }
        return e
    }

    function xr(t) {
        H(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal')
    }

    function _r(t) {
        return !(!t || !t[TL])
    }

    function br(t) {
        t.$constructor = t, t.extend = function (t) {
            function e() {
                for (var r = [], o = 0; o < arguments.length; o++) r[o] = arguments[o];
                if (t.$constructor) t.$constructor.apply(this, arguments); else {
                    if (wr(i)) {
                        var a = j(e.prototype, new (i.bind.apply(i, n([void 0], r))));
                        return a
                    }
                    i.apply(this, arguments)
                }
            }

            var i = this;
            return e[TL] = !0, h(e.prototype, t), e.extend = this.extend, e.superCall = Ir, e.superApply = Tr, d(e, this), e.superClass = i, e
        }
    }

    function wr(t) {
        return "function" == typeof t && /^class\s/.test(Function.prototype.toString.call(t))
    }

    function Sr(t, e) {
        t.extend = e.extend
    }

    function Mr(t) {
        var e = ["__\x00is_clz", CL++].join("_");
        t.prototype[e] = !0, t.isInstance = function (t) {
            return !(!t || !t[e])
        }
    }

    function Ir(t, e) {
        for (var n = [], i = 2; i < arguments.length; i++) n[i - 2] = arguments[i];
        return this.superClass.prototype[e].apply(t, n)
    }

    function Tr(t, e, n) {
        return this.superClass.prototype[e].apply(t, n)
    }

    function Cr(t) {
        function e(t) {
            var e = n[t.main];
            return e && e[IL] || (e = n[t.main] = {}, e[IL] = !0), e
        }

        var n = {};
        t.registerClass = function (t) {
            var i = t.type || t.prototype.type;
            if (i) {
                xr(i), t.prototype.type = i;
                var r = mr(i);
                if (r.sub) {
                    if (r.sub !== IL) {
                        var o = e(r);
                        o[r.sub] = t
                    }
                } else n[r.main] = t
            }
            return t
        }, t.getClass = function (t, e, i) {
            var r = n[t];
            if (r && r[IL] && (r = e ? r[e] : null), i && !r) throw new Error(e ? "Component " + t + "." + (e || "") + " is used but not imported." : t + ".type should be specified.");
            return r
        }, t.getClassesByMainType = function (t) {
            var e = mr(t), i = [], r = n[e.main];
            return r && r[IL] ? y(r, function (t, e) {
                e !== IL && i.push(t)
            }) : i.push(r), i
        }, t.hasClass = function (t) {
            var e = mr(t);
            return !!n[e.main]
        }, t.getAllClassMainTypes = function () {
            var t = [];
            return y(n, function (e, n) {
                t.push(n)
            }), t
        }, t.hasSubTypes = function (t) {
            var e = mr(t), i = n[e.main];
            return i && i[IL]
        }
    }

    function Ar(t, e) {
        for (var n = 0; n < t.length; n++) t[n][1] || (t[n][1] = t[n][0]);
        return e = e || !1, function (n, i, r) {
            for (var o = {}, a = 0; a < t.length; a++) {
                var s = t[a][1];
                if (!(i && p(i, s) >= 0 || r && p(r, s) < 0)) {
                    var l = n.getShallow(s, e);
                    null != l && (o[t[a][0]] = l)
                }
            }
            return o
        }
    }

    function Dr(t) {
        if ("string" == typeof t) {
            var e = kL.get(t);
            return e && e.image
        }
        return t
    }

    function Lr(t, e, n, i, r) {
        if (t) {
            if ("string" == typeof t) {
                if (e && e.__zrImageSrc === t || !n) return e;
                var o = kL.get(t), a = {hostEl: n, cb: i, cbPayload: r};
                return o ? (e = o.image, !Pr(e) && o.pending.push(a)) : (e = new Image, e.onload = e.onerror = kr, kL.put(t, e.__cachedImgObj = {
                    image: e,
                    pending: [a]
                }), e.src = e.__zrImageSrc = t), e
            }
            return t
        }
        return e
    }

    function kr() {
        var t = this.__cachedImgObj;
        this.onload = this.onerror = this.__cachedImgObj = null;
        for (var e = 0; e < t.pending.length; e++) {
            var n = t.pending[e], i = n.cb;
            i && i(this, n.cbPayload), n.hostEl.dirty()
        }
        t.pending.length = 0
    }

    function Pr(t) {
        return t && t.width && t.height
    }

    function Or(t, e, n, i, r) {
        if (!e) return "";
        var o = (t + "").split("\n");
        r = Rr(e, n, i, r);
        for (var a = 0, s = o.length; s > a; a++) o[a] = zr(o[a], r);
        return o.join("\n")
    }

    function Rr(t, e, n, i) {
        i = i || {};
        var r = h({}, i);
        r.font = e, n = B(n, "..."), r.maxIterations = B(i.maxIterations, 2);
        var o = r.minChar = B(i.minChar, 0);
        r.cnCharWidth = Jn("国", e);
        var a = r.ascCharWidth = Jn("a", e);
        r.placeholder = B(i.placeholder, "");
        for (var s = t = Math.max(0, t - 1), l = 0; o > l && s >= a; l++) s -= a;
        var u = Jn(n, e);
        return u > s && (n = "", u = 0), s = t - u, r.ellipsis = n, r.ellipsisWidth = u, r.contentWidth = s, r.containerWidth = t, r
    }

    function zr(t, e) {
        var n = e.containerWidth, i = e.font, r = e.contentWidth;
        if (!n) return "";
        var o = Jn(t, i);
        if (n >= o) return t;
        for (var a = 0; ; a++) {
            if (r >= o || a >= e.maxIterations) {
                t += e.ellipsis;
                break
            }
            var s = 0 === a ? Er(t, r, e.ascCharWidth, e.cnCharWidth) : o > 0 ? Math.floor(t.length * r / o) : 0;
            t = t.substr(0, s), o = Jn(t, i)
        }
        return "" === t && (t = e.placeholder), t
    }

    function Er(t, e, n, i) {
        for (var r = 0, o = 0, a = t.length; a > o && e > r; o++) {
            var s = t.charCodeAt(o);
            r += s >= 0 && 127 >= s ? n : i
        }
        return o
    }

    function Nr(t, e) {
        null != t && (t += "");
        var n, i = e.overflow, r = e.padding, o = e.font, a = "truncate" === i, s = ii(o), l = B(e.lineHeight, s),
            u = "truncate" === e.lineOverflow, h = e.width;
        n = null != h && "break" === i || "breakAll" === i ? t ? Hr(t, e.font, h, "breakAll" === i, 0).lines : [] : t ? t.split("\n") : [];
        var c = n.length * l, p = B(e.height, c);
        if (c > p && u) {
            var d = Math.floor(p / l);
            n = n.slice(0, d)
        }
        var f = p, g = h;
        if (r && (f += r[0] + r[2], null != g && (g += r[1] + r[3])), t && a && null != g) for (var y = Rr(h, o, e.ellipsis, {
            minChar: e.truncateMinChar,
            placeholder: e.placeholder
        }), v = 0; v < n.length; v++) n[v] = zr(n[v], y);
        if (null == h) {
            for (var m = 0, v = 0; v < n.length; v++) m = Math.max(Jn(n[v], o), m);
            h = m
        }
        return {lines: n, height: p, outerHeight: f, lineHeight: l, calculatedLineHeight: s, contentHeight: c, width: h}
    }

    function Br(t, e) {
        function n(t, e, n) {
            t.width = e, t.lineHeight = n, p += n, d = Math.max(d, e)
        }

        var i = new zL;
        if (null != t && (t += ""), !t) return i;
        for (var r, o = e.width, a = e.height, s = e.overflow, l = "break" !== s && "breakAll" !== s || null == o ? null : {
            width: o,
            accumWidth: 0,
            breakAll: "breakAll" === s
        }, u = PL.lastIndex = 0; null != (r = PL.exec(t));) {
            var h = r.index;
            h > u && Vr(i, t.substring(u, h), e, l), Vr(i, r[2], e, l, r[1]), u = PL.lastIndex
        }
        u < t.length && Vr(i, t.substring(u, t.length), e, l);
        var c = [], p = 0, d = 0, f = e.padding, g = "truncate" === s, y = "truncate" === e.lineOverflow;
        t:for (var v = 0; v < i.lines.length; v++) {
            for (var m = i.lines[v], x = 0, _ = 0, b = 0; b < m.tokens.length; b++) {
                var w = m.tokens[b], S = w.styleName && e.rich[w.styleName] || {}, M = w.textPadding = S.padding,
                    I = M ? M[1] + M[3] : 0, T = w.font = S.font || e.font;
                w.contentHeight = ii(T);
                var C = B(S.height, w.contentHeight);
                if (w.innerHeight = C, M && (C += M[0] + M[2]), w.height = C, w.lineHeight = V(S.lineHeight, e.lineHeight, C), w.align = S && S.align || e.align, w.verticalAlign = S && S.verticalAlign || "middle", y && null != a && p + w.lineHeight > a) {
                    b > 0 ? (m.tokens = m.tokens.slice(0, b), n(m, _, x), i.lines = i.lines.slice(0, v + 1)) : i.lines = i.lines.slice(0, v);
                    break t
                }
                var A = S.width, D = null == A || "auto" === A;
                if ("string" == typeof A && "%" === A.charAt(A.length - 1)) w.percentWidth = A, c.push(w), w.contentWidth = Jn(w.text, T); else {
                    if (D) {
                        var L = S.backgroundColor, k = L && L.image;
                        k && (k = Dr(k), Pr(k) && (w.width = Math.max(w.width, k.width * C / k.height)))
                    }
                    var P = g && null != o ? o - _ : null;
                    null != P && P < w.width ? !D || I > P ? (w.text = "", w.width = w.contentWidth = 0) : (w.text = Or(w.text, P - I, T, e.ellipsis, {minChar: e.truncateMinChar}), w.width = w.contentWidth = Jn(w.text, T)) : w.contentWidth = Jn(w.text, T)
                }
                w.width += I, _ += w.width, S && (x = Math.max(x, w.lineHeight))
            }
            n(m, _, x)
        }
        i.outerWidth = i.width = B(o, d), i.outerHeight = i.height = B(a, p), i.contentHeight = p, i.contentWidth = d, f && (i.outerWidth += f[1] + f[3], i.outerHeight += f[0] + f[2]);
        for (var v = 0; v < c.length; v++) {
            var w = c[v], O = w.percentWidth;
            w.width = parseInt(O, 10) / 100 * i.width
        }
        return i
    }

    function Vr(t, e, n, i, r) {
        var o, a, s = "" === e, l = r && n.rich[r] || {}, u = t.lines, h = l.font || n.font, c = !1;
        if (i) {
            var p = l.padding, d = p ? p[1] + p[3] : 0;
            if (null != l.width && "auto" !== l.width) {
                var f = ri(l.width, i.width) + d;
                u.length > 0 && f + i.accumWidth > i.width && (o = e.split("\n"), c = !0), i.accumWidth = f
            } else {
                var g = Hr(e, h, i.width, i.breakAll, i.accumWidth);
                i.accumWidth = g.accumWidth + d, a = g.linesWidths, o = g.lines
            }
        } else o = e.split("\n");
        for (var y = 0; y < o.length; y++) {
            var v = o[y], m = new OL;
            if (m.styleName = r, m.text = v, m.isLineHolder = !v && !s, m.width = "number" == typeof l.width ? l.width : a ? a[y] : Jn(v, h), y || c) u.push(new RL([m])); else {
                var x = (u[u.length - 1] || (u[0] = new RL)).tokens, _ = x.length;
                1 === _ && x[0].isLineHolder ? x[0] = m : (v || !_ || s) && x.push(m)
            }
        }
    }

    function Fr(t) {
        var e = t.charCodeAt(0);
        return e >= 33 && 255 >= e
    }

    function Gr(t) {
        return Fr(t) ? EL[t] ? !0 : !1 : !0
    }

    function Hr(t, e, n, i, r) {
        for (var o = [], a = [], s = "", l = "", u = 0, h = 0, c = 0; c < t.length; c++) {
            var p = t.charAt(c);
            if ("\n" !== p) {
                var d = Jn(p, e), f = i ? !1 : !Gr(p);
                (o.length ? h + d > n : r + h + d > n) ? h ? (s || l) && (f ? (s || (s = l, l = "", u = 0, h = u), o.push(s), a.push(h - u), l += p, u += d, s = "", h = u) : (l && (s += l, h += u, l = "", u = 0), o.push(s), a.push(h), s = p, h = d)) : f ? (o.push(l), a.push(u), l = p, u = d) : (o.push(p), a.push(d)) : (h += d, f ? (l += p, u += d) : (l && (s += l, l = "", u = 0), s += p))
            } else l && (s += l, h += u), o.push(s), a.push(h), s = "", l = "", u = 0, h = 0
        }
        return o.length || s || (s = t, l = "", u = 0), l && (s += l), s && (o.push(s), a.push(h)), 1 === o.length && (h += r), {
            accumWidth: h,
            lines: o,
            linesWidths: a
        }
    }

    function Wr(t, e, n) {
        return WL.copy(t.getBoundingRect()), t.transform && WL.applyTransform(t.transform), XL.width = e, XL.height = n, !WL.intersect(XL)
    }

    function Xr(t) {
        return t > -UL && UL > t
    }

    function Yr(t) {
        return t > UL || -UL > t
    }

    function Zr(t, e, n, i, r) {
        var o = 1 - r;
        return o * o * (o * t + 3 * r * e) + r * r * (r * i + 3 * o * n)
    }

    function Ur(t, e, n, i, r) {
        var o = 1 - r;
        return 3 * (((e - t) * o + 2 * (n - e) * r) * o + (i - n) * r * r)
    }

    function jr(t, e, n, i, r, o) {
        var a = i + 3 * (e - n) - t, s = 3 * (n - 2 * e + t), l = 3 * (e - t), u = t - r, h = s * s - 3 * a * l,
            c = s * l - 9 * a * u, p = l * l - 3 * s * u, d = 0;
        if (Xr(h) && Xr(c)) if (Xr(s)) o[0] = 0; else {
            var f = -l / s;
            f >= 0 && 1 >= f && (o[d++] = f)
        } else {
            var g = c * c - 4 * h * p;
            if (Xr(g)) {
                var y = c / h, f = -s / a + y, v = -y / 2;
                f >= 0 && 1 >= f && (o[d++] = f), v >= 0 && 1 >= v && (o[d++] = v)
            } else if (g > 0) {
                var m = ZL(g), x = h * s + 1.5 * a * (-c + m), _ = h * s + 1.5 * a * (-c - m);
                x = 0 > x ? -YL(-x, KL) : YL(x, KL), _ = 0 > _ ? -YL(-_, KL) : YL(_, KL);
                var f = (-s - (x + _)) / (3 * a);
                f >= 0 && 1 >= f && (o[d++] = f)
            } else {
                var b = (2 * h * s - 3 * a * c) / (2 * ZL(h * h * h)), w = Math.acos(b) / 3, S = ZL(h), M = Math.cos(w),
                    f = (-s - 2 * S * M) / (3 * a), v = (-s + S * (M + qL * Math.sin(w))) / (3 * a),
                    I = (-s + S * (M - qL * Math.sin(w))) / (3 * a);
                f >= 0 && 1 >= f && (o[d++] = f), v >= 0 && 1 >= v && (o[d++] = v), I >= 0 && 1 >= I && (o[d++] = I)
            }
        }
        return d
    }

    function qr(t, e, n, i, r) {
        var o = 6 * n - 12 * e + 6 * t, a = 9 * e + 3 * i - 3 * t - 9 * n, s = 3 * e - 3 * t, l = 0;
        if (Xr(a)) {
            if (Yr(o)) {
                var u = -s / o;
                u >= 0 && 1 >= u && (r[l++] = u)
            }
        } else {
            var h = o * o - 4 * a * s;
            if (Xr(h)) r[0] = -o / (2 * a); else if (h > 0) {
                var c = ZL(h), u = (-o + c) / (2 * a), p = (-o - c) / (2 * a);
                u >= 0 && 1 >= u && (r[l++] = u), p >= 0 && 1 >= p && (r[l++] = p)
            }
        }
        return l
    }

    function Kr(t, e, n, i, r, o) {
        var a = (e - t) * r + t, s = (n - e) * r + e, l = (i - n) * r + n, u = (s - a) * r + a, h = (l - s) * r + s,
            c = (h - u) * r + u;
        o[0] = t, o[1] = a, o[2] = u, o[3] = c, o[4] = c, o[5] = h, o[6] = l, o[7] = i
    }

    function $r(t, e, n, i, r, o, a, s, l, u, h) {
        var c, p, d, f, g, y = .005, v = 1 / 0;
        $L[0] = l, $L[1] = u;
        for (var m = 0; 1 > m; m += .05) JL[0] = Zr(t, n, r, a, m), JL[1] = Zr(e, i, o, s, m), f = TA($L, JL), v > f && (c = m, v = f);
        v = 1 / 0;
        for (var x = 0; 32 > x && !(jL > y); x++) p = c - y, d = c + y, JL[0] = Zr(t, n, r, a, p), JL[1] = Zr(e, i, o, s, p), f = TA(JL, $L), p >= 0 && v > f ? (c = p, v = f) : (QL[0] = Zr(t, n, r, a, d), QL[1] = Zr(e, i, o, s, d), g = TA(QL, $L), 1 >= d && v > g ? (c = d, v = g) : y *= .5);
        return h && (h[0] = Zr(t, n, r, a, c), h[1] = Zr(e, i, o, s, c)), ZL(v)
    }

    function Jr(t, e, n, i, r, o, a, s, l) {
        for (var u = t, h = e, c = 0, p = 1 / l, d = 1; l >= d; d++) {
            var f = d * p, g = Zr(t, n, r, a, f), y = Zr(e, i, o, s, f), v = g - u, m = y - h;
            c += Math.sqrt(v * v + m * m), u = g, h = y
        }
        return c
    }

    function Qr(t, e, n, i) {
        var r = 1 - i;
        return r * (r * t + 2 * i * e) + i * i * n
    }

    function to(t, e, n, i) {
        return 2 * ((1 - i) * (e - t) + i * (n - e))
    }

    function eo(t, e, n, i, r) {
        var o = t - 2 * e + n, a = 2 * (e - t), s = t - i, l = 0;
        if (Xr(o)) {
            if (Yr(a)) {
                var u = -s / a;
                u >= 0 && 1 >= u && (r[l++] = u)
            }
        } else {
            var h = a * a - 4 * o * s;
            if (Xr(h)) {
                var u = -a / (2 * o);
                u >= 0 && 1 >= u && (r[l++] = u)
            } else if (h > 0) {
                var c = ZL(h), u = (-a + c) / (2 * o), p = (-a - c) / (2 * o);
                u >= 0 && 1 >= u && (r[l++] = u), p >= 0 && 1 >= p && (r[l++] = p)
            }
        }
        return l
    }

    function no(t, e, n) {
        var i = t + n - 2 * e;
        return 0 === i ? .5 : (t - e) / i
    }

    function io(t, e, n, i, r) {
        var o = (e - t) * i + t, a = (n - e) * i + e, s = (a - o) * i + o;
        r[0] = t, r[1] = o, r[2] = s, r[3] = s, r[4] = a, r[5] = n
    }

    function ro(t, e, n, i, r, o, a, s, l) {
        var u, h = .005, c = 1 / 0;
        $L[0] = a, $L[1] = s;
        for (var p = 0; 1 > p; p += .05) {
            JL[0] = Qr(t, n, r, p), JL[1] = Qr(e, i, o, p);
            var d = TA($L, JL);
            c > d && (u = p, c = d)
        }
        c = 1 / 0;
        for (var f = 0; 32 > f && !(jL > h); f++) {
            var g = u - h, y = u + h;
            JL[0] = Qr(t, n, r, g), JL[1] = Qr(e, i, o, g);
            var d = TA(JL, $L);
            if (g >= 0 && c > d) u = g, c = d; else {
                QL[0] = Qr(t, n, r, y), QL[1] = Qr(e, i, o, y);
                var v = TA(QL, $L);
                1 >= y && c > v ? (u = y, c = v) : h *= .5
            }
        }
        return l && (l[0] = Qr(t, n, r, u), l[1] = Qr(e, i, o, u)), ZL(c)
    }

    function oo(t, e, n, i, r, o, a) {
        for (var s = t, l = e, u = 0, h = 1 / a, c = 1; a >= c; c++) {
            var p = c * h, d = Qr(t, n, r, p), f = Qr(e, i, o, p), g = d - s, y = f - l;
            u += Math.sqrt(g * g + y * y), s = d, l = f
        }
        return u
    }

    function ao(t, e, n) {
        if (0 !== t.length) {
            for (var i = t[0], r = i[0], o = i[0], a = i[1], s = i[1], l = 1; l < t.length; l++) i = t[l], r = tk(r, i[0]), o = ek(o, i[0]), a = tk(a, i[1]), s = ek(s, i[1]);
            e[0] = r, e[1] = a, n[0] = o, n[1] = s
        }
    }

    function so(t, e, n, i, r, o) {
        r[0] = tk(t, n), r[1] = tk(e, i), o[0] = ek(t, n), o[1] = ek(e, i)
    }

    function lo(t, e, n, i, r, o, a, s, l, u) {
        var h = qr, c = Zr, p = h(t, n, r, a, lk);
        l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0;
        for (var d = 0; p > d; d++) {
            var f = c(t, n, r, a, lk[d]);
            l[0] = tk(f, l[0]), u[0] = ek(f, u[0])
        }
        p = h(e, i, o, s, uk);
        for (var d = 0; p > d; d++) {
            var g = c(e, i, o, s, uk[d]);
            l[1] = tk(g, l[1]), u[1] = ek(g, u[1])
        }
        l[0] = tk(t, l[0]), u[0] = ek(t, u[0]), l[0] = tk(a, l[0]), u[0] = ek(a, u[0]), l[1] = tk(e, l[1]), u[1] = ek(e, u[1]), l[1] = tk(s, l[1]), u[1] = ek(s, u[1])
    }

    function uo(t, e, n, i, r, o, a, s) {
        var l = no, u = Qr, h = ek(tk(l(t, n, r), 1), 0), c = ek(tk(l(e, i, o), 1), 0), p = u(t, n, r, h),
            d = u(e, i, o, c);
        a[0] = tk(t, r, p), a[1] = tk(e, o, d), s[0] = ek(t, r, p), s[1] = ek(e, o, d)
    }

    function ho(t, e, n, i, r, o, a, s, l) {
        var u = ye, h = ve, c = Math.abs(r - o);
        if (1e-4 > c % rk && c > 1e-4) return s[0] = t - n, s[1] = e - i, l[0] = t + n, void (l[1] = e + i);
        if (ok[0] = ik(r) * n + t, ok[1] = nk(r) * i + e, ak[0] = ik(o) * n + t, ak[1] = nk(o) * i + e, u(s, ok, ak), h(l, ok, ak), r %= rk, 0 > r && (r += rk), o %= rk, 0 > o && (o += rk), r > o && !a ? o += rk : o > r && a && (r += rk), a) {
            var p = o;
            o = r, r = p
        }
        for (var d = 0; o > d; d += Math.PI / 2) d > r && (sk[0] = ik(d) * n + t, sk[1] = nk(d) * i + e, u(s, sk, s), h(l, sk, l))
    }

    function co(t) {
        var e = Math.round(t / Sk * 1e8) / 1e8;
        return e % 2 * Sk
    }

    function po(t, e) {
        var n = co(t[0]);
        0 > n && (n += Mk);
        var i = n - t[0], r = t[1];
        r += i, !e && r - n >= Mk ? r = n + Mk : e && n - r >= Mk ? r = n - Mk : !e && n > r ? r = n + (Mk - co(n - r)) : e && r > n && (r = n - (Mk - co(r - n))), t[0] = n, t[1] = r
    }

    function fo(t, e, n, i, r, o, a) {
        if (0 === r) return !1;
        var s = r, l = 0, u = t;
        if (a > e + s && a > i + s || e - s > a && i - s > a || o > t + s && o > n + s || t - s > o && n - s > o) return !1;
        if (t === n) return Math.abs(o - t) <= s / 2;
        l = (e - i) / (t - n), u = (t * i - n * e) / (t - n);
        var h = l * o - a + u, c = h * h / (l * l + 1);
        return s / 2 * s / 2 >= c
    }

    function go(t, e, n, i, r, o, a, s, l, u, h) {
        if (0 === l) return !1;
        var c = l;
        if (h > e + c && h > i + c && h > o + c && h > s + c || e - c > h && i - c > h && o - c > h && s - c > h || u > t + c && u > n + c && u > r + c && u > a + c || t - c > u && n - c > u && r - c > u && a - c > u) return !1;
        var p = $r(t, e, n, i, r, o, a, s, u, h, null);
        return c / 2 >= p
    }

    function yo(t, e, n, i, r, o, a, s, l) {
        if (0 === a) return !1;
        var u = a;
        if (l > e + u && l > i + u && l > o + u || e - u > l && i - u > l && o - u > l || s > t + u && s > n + u && s > r + u || t - u > s && n - u > s && r - u > s) return !1;
        var h = ro(t, e, n, i, r, o, s, l, null);
        return u / 2 >= h
    }

    function vo(t) {
        return t %= Ak, 0 > t && (t += Ak), t
    }

    function mo(t, e, n, i, r, o, a, s, l) {
        if (0 === a) return !1;
        var u = a;
        s -= t, l -= e;
        var h = Math.sqrt(s * s + l * l);
        if (h - u > n || n > h + u) return !1;
        if (Math.abs(i - r) % Dk < 1e-4) return !0;
        if (o) {
            var c = i;
            i = vo(r), r = vo(c)
        } else i = vo(i), r = vo(r);
        i > r && (r += Dk);
        var p = Math.atan2(l, s);
        return 0 > p && (p += Dk), p >= i && r >= p || p + Dk >= i && r >= p + Dk
    }

    function xo(t, e, n, i, r, o) {
        if (o > e && o > i || e > o && i > o) return 0;
        if (i === e) return 0;
        var a = (o - e) / (i - e), s = e > i ? 1 : -1;
        (1 === a || 0 === a) && (s = e > i ? .5 : -.5);
        var l = a * (n - t) + t;
        return l === r ? 1 / 0 : l > r ? s : 0
    }

    function _o(t, e) {
        return Math.abs(t - e) < Pk
    }

    function bo() {
        var t = Rk[0];
        Rk[0] = Rk[1], Rk[1] = t
    }

    function wo(t, e, n, i, r, o, a, s, l, u) {
        if (u > e && u > i && u > o && u > s || e > u && i > u && o > u && s > u) return 0;
        var h = jr(e, i, o, s, u, Ok);
        if (0 === h) return 0;
        for (var c = 0, p = -1, d = void 0, f = void 0, g = 0; h > g; g++) {
            var y = Ok[g], v = 0 === y || 1 === y ? .5 : 1, m = Zr(t, n, r, a, y);
            l > m || (0 > p && (p = qr(e, i, o, s, Rk), Rk[1] < Rk[0] && p > 1 && bo(), d = Zr(e, i, o, s, Rk[0]), p > 1 && (f = Zr(e, i, o, s, Rk[1]))), c += 2 === p ? y < Rk[0] ? e > d ? v : -v : y < Rk[1] ? d > f ? v : -v : f > s ? v : -v : y < Rk[0] ? e > d ? v : -v : d > s ? v : -v)
        }
        return c
    }

    function So(t, e, n, i, r, o, a, s) {
        if (s > e && s > i && s > o || e > s && i > s && o > s) return 0;
        var l = eo(e, i, o, s, Ok);
        if (0 === l) return 0;
        var u = no(e, i, o);
        if (u >= 0 && 1 >= u) {
            for (var h = 0, c = Qr(e, i, o, u), p = 0; l > p; p++) {
                var d = 0 === Ok[p] || 1 === Ok[p] ? .5 : 1, f = Qr(t, n, r, Ok[p]);
                a > f || (h += Ok[p] < u ? e > c ? d : -d : c > o ? d : -d)
            }
            return h
        }
        var d = 0 === Ok[0] || 1 === Ok[0] ? .5 : 1, f = Qr(t, n, r, Ok[0]);
        return a > f ? 0 : e > o ? d : -d
    }

    function Mo(t, e, n, i, r, o, a, s) {
        if (s -= e, s > n || -n > s) return 0;
        var l = Math.sqrt(n * n - s * s);
        Ok[0] = -l, Ok[1] = l;
        var u = Math.abs(i - r);
        if (1e-4 > u) return 0;
        if (u >= kk - 1e-4) {
            i = 0, r = kk;
            var h = o ? 1 : -1;
            return a >= Ok[0] + t && a <= Ok[1] + t ? h : 0
        }
        if (i > r) {
            var c = i;
            i = r, r = c
        }
        0 > i && (i += kk, r += kk);
        for (var p = 0, d = 0; 2 > d; d++) {
            var f = Ok[d];
            if (f + t > a) {
                var g = Math.atan2(s, f), h = o ? 1 : -1;
                0 > g && (g = kk + g), (g >= i && r >= g || g + kk >= i && r >= g + kk) && (g > Math.PI / 2 && g < 1.5 * Math.PI && (h = -h), p += h)
            }
        }
        return p
    }

    function Io(t, e, n, i, r) {
        for (var o, a, s = t.data, l = t.len(), u = 0, h = 0, c = 0, p = 0, d = 0, f = 0; l > f;) {
            var g = s[f++], y = 1 === f;
            switch (g === Lk.M && f > 1 && (n || (u += xo(h, c, p, d, i, r))), y && (h = s[f], c = s[f + 1], p = h, d = c), g) {
                case Lk.M:
                    p = s[f++], d = s[f++], h = p, c = d;
                    break;
                case Lk.L:
                    if (n) {
                        if (fo(h, c, s[f], s[f + 1], e, i, r)) return !0
                    } else u += xo(h, c, s[f], s[f + 1], i, r) || 0;
                    h = s[f++], c = s[f++];
                    break;
                case Lk.C:
                    if (n) {
                        if (go(h, c, s[f++], s[f++], s[f++], s[f++], s[f], s[f + 1], e, i, r)) return !0
                    } else u += wo(h, c, s[f++], s[f++], s[f++], s[f++], s[f], s[f + 1], i, r) || 0;
                    h = s[f++], c = s[f++];
                    break;
                case Lk.Q:
                    if (n) {
                        if (yo(h, c, s[f++], s[f++], s[f], s[f + 1], e, i, r)) return !0
                    } else u += So(h, c, s[f++], s[f++], s[f], s[f + 1], i, r) || 0;
                    h = s[f++], c = s[f++];
                    break;
                case Lk.A:
                    var v = s[f++], m = s[f++], x = s[f++], _ = s[f++], b = s[f++], w = s[f++];
                    f += 1;
                    var S = !!(1 - s[f++]);
                    o = Math.cos(b) * x + v, a = Math.sin(b) * _ + m, y ? (p = o, d = a) : u += xo(h, c, o, a, i, r);
                    var M = (i - v) * _ / x + v;
                    if (n) {
                        if (mo(v, m, _, b, b + w, S, e, M, r)) return !0
                    } else u += Mo(v, m, _, b, b + w, S, M, r);
                    h = Math.cos(b + w) * x + v, c = Math.sin(b + w) * _ + m;
                    break;
                case Lk.R:
                    p = h = s[f++], d = c = s[f++];
                    var I = s[f++], T = s[f++];
                    if (o = p + I, a = d + T, n) {
                        if (fo(p, d, o, d, e, i, r) || fo(o, d, o, a, e, i, r) || fo(o, a, p, a, e, i, r) || fo(p, a, p, d, e, i, r)) return !0
                    } else u += xo(o, d, o, a, i, r), u += xo(p, a, p, d, i, r);
                    break;
                case Lk.Z:
                    if (n) {
                        if (fo(h, c, p, d, e, i, r)) return !0
                    } else u += xo(h, c, p, d, i, r);
                    h = p, c = d
            }
        }
        return n || _o(c, d) || (u += xo(h, c, p, d, i, r) || 0), 0 !== u
    }

    function To(t, e, n) {
        return Io(t, 0, !1, e, n)
    }

    function Co(t, e, n, i) {
        return Io(t, e, !0, n, i)
    }

    function Ao(t) {
        return !!(t && "string" != typeof t && t.width && t.height)
    }

    function Do(t, e) {
        var n, i, r, o, a = e.x, s = e.y, l = e.width, u = e.height, h = e.r;
        0 > l && (a += l, l = -l), 0 > u && (s += u, u = -u), "number" == typeof h ? n = i = r = o = h : h instanceof Array ? 1 === h.length ? n = i = r = o = h[0] : 2 === h.length ? (n = r = h[0], i = o = h[1]) : 3 === h.length ? (n = h[0], i = o = h[1], r = h[2]) : (n = h[0], i = h[1], r = h[2], o = h[3]) : n = i = r = o = 0;
        var c;
        n + i > l && (c = n + i, n *= l / c, i *= l / c), r + o > l && (c = r + o, r *= l / c, o *= l / c), i + r > u && (c = i + r, i *= u / c, r *= u / c), n + o > u && (c = n + o, n *= u / c, o *= u / c), t.moveTo(a + n, s), t.lineTo(a + l - i, s), 0 !== i && t.arc(a + l - i, s + i, i, -Math.PI / 2, 0), t.lineTo(a + l, s + u - r), 0 !== r && t.arc(a + l - r, s + u - r, r, 0, Math.PI / 2), t.lineTo(a + o, s + u), 0 !== o && t.arc(a + o, s + u - o, o, Math.PI / 2, Math.PI), t.lineTo(a, s + n), 0 !== n && t.arc(a + n, s + n, n, Math.PI, 1.5 * Math.PI)
    }

    function Lo(t, e, n) {
        if (e) {
            var i = e.x1, r = e.x2, o = e.y1, a = e.y2;
            t.x1 = i, t.x2 = r, t.y1 = o, t.y2 = a;
            var s = n && n.lineWidth;
            return s ? (Xk(2 * i) === Xk(2 * r) && (t.x1 = t.x2 = Po(i, s, !0)), Xk(2 * o) === Xk(2 * a) && (t.y1 = t.y2 = Po(o, s, !0)), t) : t
        }
    }

    function ko(t, e, n) {
        if (e) {
            var i = e.x, r = e.y, o = e.width, a = e.height;
            t.x = i, t.y = r, t.width = o, t.height = a;
            var s = n && n.lineWidth;
            return s ? (t.x = Po(i, s, !0), t.y = Po(r, s, !0), t.width = Math.max(Po(i + o, s, !1) - t.x, 0 === o ? 0 : 1), t.height = Math.max(Po(r + a, s, !1) - t.y, 0 === a ? 0 : 1), t) : t
        }
    }

    function Po(t, e, n) {
        if (!e) return t;
        var i = Xk(2 * t);
        return (i + Xk(e)) % 2 === 0 ? i / 2 : (i + (n ? 1 : -1)) / 2
    }

    function Oo(t) {
        return Ro(t), y(t.rich, Ro), t
    }

    function Ro(t) {
        if (t) {
            t.font = $k.makeFont(t);
            var e = t.align;
            "middle" === e && (e = "center"), t.align = null == e || Jk[e] ? e : "left";
            var n = t.verticalAlign;
            "center" === n && (n = "middle"), t.verticalAlign = null == n || Qk[n] ? n : "top";
            var i = t.padding;
            i && (t.padding = G(t.padding))
        }
    }

    function zo(t, e) {
        return null == t || 0 >= e || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
    }

    function Eo(t) {
        return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
    }

    function No(t, e, n) {
        return "right" === e ? t - n[1] : "center" === e ? t + n[3] / 2 - n[1] / 2 : t + n[3]
    }

    function Bo(t) {
        var e = t.text;
        return null != e && (e += ""), e
    }

    function Vo(t) {
        return !!(t.backgroundColor || t.borderWidth && t.borderColor)
    }

    function Fo(t) {
        return null != t && "none" !== t
    }

    function Go(t) {
        if ("string" != typeof t) return t;
        var e = yP.get(t);
        return e || (e = un(t, -.1), yP.put(t, e)), e
    }

    function Ho(t, e, n) {
        t.onHoverStateChange && (t.hoverState || 0) !== n && t.onHoverStateChange(e), t.hoverState = n
    }

    function Wo(t) {
        Ho(t, "emphasis", aP)
    }

    function Xo(t) {
        t.hoverState === aP && Ho(t, "normal", rP)
    }

    function Yo(t) {
        Ho(t, "blur", oP)
    }

    function Zo(t) {
        t.hoverState === oP && Ho(t, "normal", rP)
    }

    function Uo(t) {
        t.selected = !0
    }

    function jo(t) {
        t.selected = !1
    }

    function qo(t, e, n) {
        e(t, n)
    }

    function Ko(t, e, n) {
        qo(t, e, n), t.isGroup && t.traverse(function (t) {
            qo(t, e, n)
        })
    }

    function $o(t, e) {
        switch (e) {
            case"emphasis":
                t.hoverState = aP;
                break;
            case"normal":
                t.hoverState = rP;
                break;
            case"blur":
                t.hoverState = oP;
                break;
            case"select":
                t.selected = !0
        }
    }

    function Jo(t, e, n, i) {
        for (var r = t.style, o = {}, a = 0; a < e.length; a++) {
            var s = e[a], l = r[s];
            o[s] = null == l ? i && i[s] : l
        }
        for (var a = 0; a < t.animators.length; a++) {
            var u = t.animators[a];
            u.__fromStateTransition && u.__fromStateTransition.indexOf(n) < 0 && "style" === u.targetName && u.saveFinalToTarget(o, e)
        }
        return o
    }

    function Qo(t, e, n, i) {
        var r = n && p(n, "select") >= 0, o = !1;
        if (t instanceof Bk) {
            var a = iP(t), s = r ? a.selectFill || a.normalFill : a.normalFill,
                l = r ? a.selectStroke || a.normalStroke : a.normalStroke;
            if (Fo(s) || Fo(l)) {
                i = i || {};
                var u = i.style || {};
                !Fo(u.fill) && Fo(s) ? (o = !0, i = h({}, i), u = h({}, u), u.fill = Go(s)) : !Fo(u.stroke) && Fo(l) && (o || (i = h({}, i), u = h({}, u)), u.stroke = Go(l)), i.style = u
            }
        }
        if (i && null == i.z2) {
            o || (i = h({}, i));
            var c = t.z2EmphasisLift;
            i.z2 = t.z2 + (null != c ? c : uP)
        }
        return i
    }

    function ta(t, e, n) {
        if (n && null == n.z2) {
            n = h({}, n);
            var i = t.z2SelectLift;
            n.z2 = t.z2 + (null != i ? i : hP)
        }
        return n
    }

    function ea(t, e, n) {
        var i = p(t.currentStates, e) >= 0, r = t.style.opacity, o = i ? null : Jo(t, ["opacity"], e, {opacity: 1});
        n = n || {};
        var a = n.style || {};
        return null == a.opacity && (n = h({}, n), a = h({opacity: i ? r : .1 * o.opacity}, a), n.style = a), n
    }

    function na(t, e) {
        var n = this.states[t];
        if (this.style) {
            if ("emphasis" === t) return Qo(this, t, e, n);
            if ("blur" === t) return ea(this, t, n);
            if ("select" === t) return ta(this, t, n)
        }
        return n
    }

    function ia(t) {
        t.stateProxy = na;
        var e = t.getTextContent(), n = t.getTextGuideLine();
        e && (e.stateProxy = na), n && (n.stateProxy = na)
    }

    function ra(t, e) {
        !pa(t, e) && !t.__highByOuter && Ko(t, Wo)
    }

    function oa(t, e) {
        !pa(t, e) && !t.__highByOuter && Ko(t, Xo)
    }

    function aa(t, e) {
        t.__highByOuter |= 1 << (e || 0), Ko(t, Wo)
    }

    function sa(t, e) {
        !(t.__highByOuter &= ~(1 << (e || 0))) && Ko(t, Xo)
    }

    function la(t) {
        Ko(t, Yo)
    }

    function ua(t) {
        Ko(t, Zo)
    }

    function ha(t) {
        Ko(t, Uo)
    }

    function ca(t) {
        Ko(t, jo)
    }

    function pa(t, e) {
        return t.__highDownSilentOnTouch && e.zrByTouch
    }

    function da(t) {
        var e = t.getModel();
        e.eachComponent(function (e, n) {
            var i = "series" === e ? t.getViewOfSeriesModel(n) : t.getViewOfComponentModel(n);
            i.group.traverse(function (t) {
                Zo(t)
            })
        })
    }

    function fa(t, e, n, i) {
        function r(t, e) {
            for (var n = 0; n < e.length; n++) {
                var i = t.getItemGraphicEl(e[n]);
                i && ua(i)
            }
        }

        var o = i.getModel();
        if (n = n || "coordinateSystem", null != t && e && "none" !== e) {
            var a = o.getSeriesByIndex(t), s = a.coordinateSystem;
            s && s.master && (s = s.master);
            var l = [];
            o.eachSeries(function (t) {
                var o = a === t, u = t.coordinateSystem;
                u && u.master && (u = u.master);
                var h = u && s ? u === s : o;
                if (!("series" === n && !o || "coordinateSystem" === n && !h || "series" === e && o)) {
                    var c = i.getViewOfSeriesModel(t);
                    if (c.group.traverse(function (t) {
                        Yo(t)
                    }), g(e)) r(t.getData(), e); else if (D(e)) for (var p = b(e), d = 0; d < p.length; d++) r(t.getData(p[d]), e[p[d]]);
                    l.push(t)
                }
            }), o.eachComponent(function (t, e) {
                if ("series" !== t) {
                    var n = i.getViewOfComponentModel(e);
                    n && n.blurSeries && n.blurSeries(l, o)
                }
            })
        }
    }

    function ga(t, e, n) {
        if (null != t && null != e) {
            var i = n.getModel().getComponent(t, e);
            if (i) {
                var r = n.getViewOfComponentModel(i);
                r && r.focusBlurEnabled && r.group.traverse(function (t) {
                    Yo(t)
                })
            }
        }
    }

    function ya(t, e, n) {
        var i = t.seriesIndex, r = t.getData(e.dataType), o = lr(r, e);
        o = (M(o) ? o[0] : o) || 0;
        var a = r.getItemGraphicEl(o);
        if (!a) for (var s = r.count(), l = 0; !a && s > l;) a = r.getItemGraphicEl(l++);
        if (a) {
            var u = tP(a);
            fa(i, u.focus, u.blurScope, n)
        } else {
            var h = t.get(["emphasis", "focus"]), c = t.get(["emphasis", "blurScope"]);
            null != h && fa(i, h, c, n)
        }
    }

    function va(t, e, n, i) {
        var r = {focusSelf: !1, dispatchers: null};
        if (null == t || "series" === t || null == e || null == n) return r;
        var o = i.getModel().getComponent(t, e);
        if (!o) return r;
        var a = i.getViewOfComponentModel(o);
        if (!a || !a.findHighDownDispatchers) return r;
        for (var s, l = a.findHighDownDispatchers(n), u = 0; u < l.length; u++) if ("self" === tP(l[u]).focus) {
            s = !0;
            break
        }
        return {focusSelf: s, dispatchers: l}
    }

    function ma(t, e, n) {
        var i = tP(t), r = va(i.componentMainType, i.componentIndex, i.componentHighDownName, n), o = r.dispatchers,
            a = r.focusSelf;
        o ? (a && ga(i.componentMainType, i.componentIndex, n), y(o, function (t) {
            return ra(t, e)
        })) : (fa(i.seriesIndex, i.focus, i.blurScope, n), "self" === i.focus && ga(i.componentMainType, i.componentIndex, n), ra(t, e))
    }

    function xa(t, e, n) {
        da(n);
        var i = tP(t), r = va(i.componentMainType, i.componentIndex, i.componentHighDownName, n).dispatchers;
        r ? y(r, function (t) {
            return oa(t, e)
        }) : oa(t, e)
    }

    function _a(t, e) {
        if (La(e)) {
            var n = e.dataType, i = t.getData(n), r = lr(i, e);
            M(r) || (r = [r]), t[e.type === gP ? "toggleSelect" : e.type === dP ? "select" : "unselect"](r, n)
        }
    }

    function ba(t) {
        var e = t.getAllData();
        y(e, function (e) {
            var n = e.data, i = e.type;
            n.eachItemGraphicEl(function (e, n) {
                t.isSelected(n, i) ? ha(e) : ca(e)
            })
        })
    }

    function wa(t) {
        var e = [];
        return t.eachSeries(function (t) {
            var n = t.getAllData();
            y(n, function (n) {
                var i = (n.data, n.type), r = t.getSelectedDataIndices();
                if (r.length > 0) {
                    var o = {dataIndex: r, seriesIndex: t.seriesIndex};
                    null != i && (o.dataType = i), e.push(o)
                }
            })
        }), e
    }

    function Sa(t, e, n) {
        Ta(t, !0), Ko(t, ia), Ma(t, e, n)
    }

    function Ma(t, e, n) {
        var i = tP(t);
        null != e ? (i.focus = e, i.blurScope = n) : i.focus && (i.focus = null)
    }

    function Ia(t, e, n, i) {
        n = n || "itemStyle";
        for (var r = 0; r < vP.length; r++) {
            var o = vP[r], a = e.getModel([o, n]), s = t.ensureState(o);
            s.style = i ? i(a) : a[mP[n]]()
        }
    }

    function Ta(t, e) {
        var n = e === !1, i = t;
        t.highDownSilentOnTouch && (i.__highDownSilentOnTouch = t.highDownSilentOnTouch), (!n || i.__highDownDispatcher) && (i.__highByOuter = i.__highByOuter || 0, i.__highDownDispatcher = !n)
    }

    function Ca(t) {
        return !(!t || !t.__highDownDispatcher)
    }

    function Aa(t, e, n) {
        var i = tP(t);
        i.componentMainType = e.mainType, i.componentIndex = e.componentIndex, i.componentHighDownName = n
    }

    function Da(t) {
        var e = nP[t];
        return null == e && 32 >= eP && (e = nP[t] = eP++), e
    }

    function La(t) {
        var e = t.type;
        return e === dP || e === fP || e === gP
    }

    function ka(t) {
        var e = t.type;
        return e === cP || e === pP
    }

    function Pa(t) {
        var e = iP(t);
        e.normalFill = t.style.fill, e.normalStroke = t.style.stroke;
        var n = t.states.select || {};
        e.selectFill = n.style && n.style.fill || null, e.selectStroke = n.style && n.style.stroke || null
    }

    function Oa(t, e) {
        var n, i, r, o, a, s, l = t.data, u = t.len(), h = xP.M, c = xP.C, p = xP.L, d = xP.R, f = xP.A, g = xP.Q;
        for (r = 0, o = 0; u > r;) {
            switch (n = l[r++], o = r, i = 0, n) {
                case h:
                    i = 1;
                    break;
                case p:
                    i = 1;
                    break;
                case c:
                    i = 3;
                    break;
                case g:
                    i = 2;
                    break;
                case f:
                    var y = e[4], v = e[5], m = bP(e[0] * e[0] + e[1] * e[1]), x = bP(e[2] * e[2] + e[3] * e[3]),
                        _ = wP(-e[1] / x, e[0] / m);
                    l[r] *= m, l[r++] += y, l[r] *= x, l[r++] += v, l[r++] *= m, l[r++] *= x, l[r++] += _, l[r++] += _, r += 2, o = r;
                    break;
                case d:
                    s[0] = l[r++], s[1] = l[r++], ge(s, s, e), l[o++] = s[0], l[o++] = s[1], s[0] += l[r++], s[1] += l[r++], ge(s, s, e), l[o++] = s[0], l[o++] = s[1]
            }
            for (a = 0; i > a; a++) {
                var b = _P[a];
                b[0] = l[r++], b[1] = l[r++], ge(b, b, e), l[o++] = b[0], l[o++] = b[1]
            }
        }
        t.increaseVersion()
    }

    function Ra(t) {
        return Math.sqrt(t[0] * t[0] + t[1] * t[1])
    }

    function za(t, e) {
        return (t[0] * e[0] + t[1] * e[1]) / (Ra(t) * Ra(e))
    }

    function Ea(t, e) {
        return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(za(t, e))
    }

    function Na(t, e, n, i, r, o, a, s, l, u, h) {
        var c = l * (TP / 180), p = IP(c) * (t - n) / 2 + MP(c) * (e - i) / 2,
            d = -1 * MP(c) * (t - n) / 2 + IP(c) * (e - i) / 2, f = p * p / (a * a) + d * d / (s * s);
        f > 1 && (a *= SP(f), s *= SP(f));
        var g = (r === o ? -1 : 1) * SP((a * a * s * s - a * a * d * d - s * s * p * p) / (a * a * d * d + s * s * p * p)) || 0,
            y = g * a * d / s, v = g * -s * p / a, m = (t + n) / 2 + IP(c) * y - MP(c) * v,
            x = (e + i) / 2 + MP(c) * y + IP(c) * v, _ = Ea([1, 0], [(p - y) / a, (d - v) / s]),
            b = [(p - y) / a, (d - v) / s], w = [(-1 * p - y) / a, (-1 * d - v) / s], S = Ea(b, w);
        if (za(b, w) <= -1 && (S = TP), za(b, w) >= 1 && (S = 0), 0 > S) {
            var M = Math.round(S / TP * 1e6) / 1e6;
            S = 2 * TP + M % 2 * TP
        }
        h.addData(u, m, x, a, s, _, S, c, o)
    }

    function Ba(t) {
        var e = new Ck;
        if (!t) return e;
        var n, i = 0, r = 0, o = i, a = r, s = Ck.CMD, l = t.match(CP);
        if (!l) return e;
        for (var u = 0; u < l.length; u++) {
            for (var h = l[u], c = h.charAt(0), p = void 0, d = h.match(AP) || [], f = d.length, g = 0; f > g; g++) d[g] = parseFloat(d[g]);
            for (var y = 0; f > y;) {
                var v = void 0, m = void 0, x = void 0, _ = void 0, b = void 0, w = void 0, S = void 0, M = i, I = r,
                    T = void 0, C = void 0;
                switch (c) {
                    case"l":
                        i += d[y++], r += d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"L":
                        i = d[y++], r = d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"m":
                        i += d[y++], r += d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c = "l";
                        break;
                    case"M":
                        i = d[y++], r = d[y++], p = s.M, e.addData(p, i, r), o = i, a = r, c = "L";
                        break;
                    case"h":
                        i += d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"H":
                        i = d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"v":
                        r += d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"V":
                        r = d[y++], p = s.L, e.addData(p, i, r);
                        break;
                    case"C":
                        p = s.C, e.addData(p, d[y++], d[y++], d[y++], d[y++], d[y++], d[y++]), i = d[y - 2], r = d[y - 1];
                        break;
                    case"c":
                        p = s.C, e.addData(p, d[y++] + i, d[y++] + r, d[y++] + i, d[y++] + r, d[y++] + i, d[y++] + r), i += d[y - 2], r += d[y - 1];
                        break;
                    case"S":
                        v = i, m = r, T = e.len(), C = e.data, n === s.C && (v += i - C[T - 4], m += r - C[T - 3]), p = s.C, M = d[y++], I = d[y++], i = d[y++], r = d[y++], e.addData(p, v, m, M, I, i, r);
                        break;
                    case"s":
                        v = i, m = r, T = e.len(), C = e.data, n === s.C && (v += i - C[T - 4], m += r - C[T - 3]), p = s.C, M = i + d[y++], I = r + d[y++], i += d[y++], r += d[y++], e.addData(p, v, m, M, I, i, r);
                        break;
                    case"Q":
                        M = d[y++], I = d[y++], i = d[y++], r = d[y++], p = s.Q, e.addData(p, M, I, i, r);
                        break;
                    case"q":
                        M = d[y++] + i, I = d[y++] + r, i += d[y++], r += d[y++], p = s.Q, e.addData(p, M, I, i, r);
                        break;
                    case"T":
                        v = i, m = r, T = e.len(), C = e.data, n === s.Q && (v += i - C[T - 4], m += r - C[T - 3]), i = d[y++], r = d[y++], p = s.Q, e.addData(p, v, m, i, r);
                        break;
                    case"t":
                        v = i, m = r, T = e.len(), C = e.data, n === s.Q && (v += i - C[T - 4], m += r - C[T - 3]), i += d[y++], r += d[y++], p = s.Q, e.addData(p, v, m, i, r);
                        break;
                    case"A":
                        x = d[y++], _ = d[y++], b = d[y++], w = d[y++], S = d[y++], M = i, I = r, i = d[y++], r = d[y++], p = s.A, Na(M, I, i, r, w, S, x, _, b, p, e);
                        break;
                    case"a":
                        x = d[y++], _ = d[y++], b = d[y++], w = d[y++], S = d[y++], M = i, I = r, i += d[y++], r += d[y++], p = s.A, Na(M, I, i, r, w, S, x, _, b, p, e)
                }
            }
            ("z" === c || "Z" === c) && (p = s.Z, e.addData(p), i = o, r = a), n = p
        }
        return e.toStatic(), e
    }

    function Va(t) {
        return null != t.setData
    }

    function Fa(t, e) {
        var n = Ba(t), i = h({}, e);
        return i.buildPath = function (t) {
            if (Va(t)) {
                t.setData(n.data);
                var e = t.getContext();
                e && t.rebuildPath(e, 1)
            } else {
                var e = t;
                n.rebuildPath(e, 1)
            }
        }, i.applyTransform = function (t) {
            Oa(n, t), this.dirtyShape()
        }, i
    }

    function Ga(t, e) {
        return new DP(Fa(t, e))
    }

    function Ha(t, n) {
        var i = Fa(t, n), r = function (t) {
            function n(e) {
                var n = t.call(this, e) || this;
                return n.applyTransform = i.applyTransform, n.buildPath = i.buildPath, n
            }

            return e(n, t), n
        }(DP);
        return r
    }

    function Wa(t, e) {
        for (var n = [], i = t.length, r = 0; i > r; r++) {
            var o = t[r];
            o.path || o.createPathProxy(), o.shapeChanged() && o.buildPath(o.path, o.shape, !0), n.push(o.path)
        }
        var a = new Bk(e);
        return a.createPathProxy(), a.buildPath = function (t) {
            if (Va(t)) {
                t.appendPath(n);
                var e = t.getContext();
                e && t.rebuildPath(e, 1)
            }
        }, a
    }

    function Xa(t, e, n, i, r, o, a, s) {
        var l = n - t, u = i - e, h = a - r, c = s - o, p = c * l - h * u;
        return XP > p * p ? void 0 : (p = (h * (e - o) - c * (t - r)) / p, [t + p * l, e + p * u])
    }

    function Ya(t, e, n, i, r, o, a) {
        var s = t - n, l = e - i, u = (a ? o : -o) / GP(s * s + l * l), h = u * l, c = -u * s, p = t + h, d = e + c,
            f = n + h, g = i + c, y = (p + f) / 2, v = (d + g) / 2, m = f - p, x = g - d, _ = m * m + x * x, b = r - o,
            w = p * g - f * d, S = (0 > x ? -1 : 1) * GP(HP(0, b * b * _ - w * w)), M = (w * x - m * S) / _,
            I = (-w * m - x * S) / _, T = (w * x + m * S) / _, C = (-w * m + x * S) / _, A = M - y, D = I - v,
            L = T - y, k = C - v;
        return A * A + D * D > L * L + k * k && (M = T, I = C), {
            cx: M,
            cy: I,
            x01: -h,
            y01: -c,
            x11: M * (r / b - 1),
            y11: I * (r / b - 1)
        }
    }

    function Za(t, e) {
        var n = HP(e.r, 0), i = HP(e.r0 || 0, 0), r = n > 0, o = i > 0;
        if (r || o) {
            if (r || (n = i, i = 0), i > n) {
                var a = n;
                n = i, i = a
            }
            var s, l = !!e.clockwise, u = e.startAngle, h = e.endAngle;
            if (u === h) s = 0; else {
                var c = [u, h];
                po(c, !l), s = FP(c[0] - c[1])
            }
            var p = e.cx, d = e.cy, f = e.cornerRadius || 0, g = e.innerCornerRadius || 0;
            if (n > XP) if (s > zP - XP) t.moveTo(p + n * NP(u), d + n * EP(u)), t.arc(p, d, n, u, h, !l), i > XP && (t.moveTo(p + i * NP(h), d + i * EP(h)), t.arc(p, d, i, h, u, l)); else {
                var y = FP(n - i) / 2, v = WP(y, f), m = WP(y, g), x = m, _ = v, b = n * NP(u), w = n * EP(u),
                    S = i * NP(h), M = i * EP(h), I = void 0, T = void 0, C = void 0, A = void 0;
                if ((v > XP || m > XP) && (I = n * NP(h), T = n * EP(h), C = i * NP(u), A = i * EP(u), RP > s)) {
                    var D = Xa(b, w, C, A, I, T, S, M);
                    if (D) {
                        var L = b - D[0], k = w - D[1], P = I - D[0], O = T - D[1],
                            R = 1 / EP(BP((L * P + k * O) / (GP(L * L + k * k) * GP(P * P + O * O))) / 2),
                            z = GP(D[0] * D[0] + D[1] * D[1]);
                        x = WP(m, (i - z) / (R - 1)), _ = WP(v, (n - z) / (R + 1))
                    }
                }
                if (s > XP) if (_ > XP) {
                    var E = Ya(C, A, b, w, n, _, l), N = Ya(I, T, S, M, n, _, l);
                    t.moveTo(p + E.cx + E.x01, d + E.cy + E.y01), v > _ ? t.arc(p + E.cx, d + E.cy, _, VP(E.y01, E.x01), VP(N.y01, N.x01), !l) : (t.arc(p + E.cx, d + E.cy, _, VP(E.y01, E.x01), VP(E.y11, E.x11), !l), t.arc(p, d, n, VP(E.cy + E.y11, E.cx + E.x11), VP(N.cy + N.y11, N.cx + N.x11), !l), t.arc(p + N.cx, d + N.cy, _, VP(N.y11, N.x11), VP(N.y01, N.x01), !l))
                } else t.moveTo(p + b, d + w), t.arc(p, d, n, u, h, !l); else t.moveTo(p + b, d + w);
                if (i > XP && s > XP) if (x > XP) {
                    var E = Ya(S, M, I, T, i, -x, l), N = Ya(b, w, C, A, i, -x, l);
                    t.lineTo(p + E.cx + E.x01, d + E.cy + E.y01), m > x ? t.arc(p + E.cx, d + E.cy, x, VP(E.y01, E.x01), VP(N.y01, N.x01), !l) : (t.arc(p + E.cx, d + E.cy, x, VP(E.y01, E.x01), VP(E.y11, E.x11), !l), t.arc(p, d, i, VP(E.cy + E.y11, E.cx + E.x11), VP(N.cy + N.y11, N.cx + N.x11), l), t.arc(p + N.cx, d + N.cy, x, VP(N.y11, N.x11), VP(N.y01, N.x01), !l))
                } else t.lineTo(p + S, d + M), t.arc(p, d, i, h, u, l); else t.lineTo(p + S, d + M)
            } else t.moveTo(p, d);
            t.closePath()
        }
    }

    function Ua(t, e, n, i, r, o, a) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e
    }

    function ja(t, e) {
        for (var n = t.length, i = [], r = 0, o = 1; n > o; o++) r += ce(t[o - 1], t[o]);
        var a = r / 2;
        a = n > a ? n : a;
        for (var o = 0; a > o; o++) {
            var s = o / (a - 1) * (e ? n : n - 1), l = Math.floor(s), u = s - l, h = void 0, c = t[l % n], p = void 0,
                d = void 0;
            e ? (h = t[(l - 1 + n) % n], p = t[(l + 1) % n], d = t[(l + 2) % n]) : (h = t[0 === l ? l : l - 1], p = t[l > n - 2 ? n - 1 : l + 1], d = t[l > n - 3 ? n - 1 : l + 2]);
            var f = u * u, g = u * f;
            i.push([Ua(h[0], c[0], p[0], d[0], u, f, g), Ua(h[1], c[1], p[1], d[1], u, f, g)])
        }
        return i
    }

    function qa(t, e, n, i) {
        var r, o, a, s, l = [], u = [], h = [], c = [];
        if (i) {
            a = [1 / 0, 1 / 0], s = [-1 / 0, -1 / 0];
            for (var p = 0, d = t.length; d > p; p++) ye(a, a, t[p]), ve(s, s, t[p]);
            ye(a, a, i[0]), ve(s, s, i[1])
        }
        for (var p = 0, d = t.length; d > p; p++) {
            var f = t[p];
            if (n) r = t[p ? p - 1 : d - 1], o = t[(p + 1) % d]; else {
                if (0 === p || p === d - 1) {
                    l.push(Q(t[p]));
                    continue
                }
                r = t[p - 1], o = t[p + 1]
            }
            ie(u, o, r), ue(u, u, e);
            var g = ce(f, r), y = ce(f, o), v = g + y;
            0 !== v && (g /= v, y /= v), ue(h, u, -g), ue(c, u, y);
            var m = ee([], f, h), x = ee([], f, c);
            i && (ve(m, m, a), ye(m, m, s), ve(x, x, a), ye(x, x, s)), l.push(m), l.push(x)
        }
        return n && l.push(l.shift()), l
    }

    function Ka(t, e, n) {
        var i = e.smooth, r = e.points;
        if (r && r.length >= 2) {
            if (i && "spline" !== i) {
                var o = qa(r, i, n, e.smoothConstraint);
                t.moveTo(r[0][0], r[0][1]);
                for (var a = r.length, s = 0; (n ? a : a - 1) > s; s++) {
                    var l = o[2 * s], u = o[2 * s + 1], h = r[(s + 1) % a];
                    t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1])
                }
            } else {
                "spline" === i && (r = ja(r, n)), t.moveTo(r[0][0], r[0][1]);
                for (var s = 1, c = r.length; c > s; s++) t.lineTo(r[s][0], r[s][1])
            }
            n && t.closePath()
        }
    }

    function $a(t, e, n) {
        var i = t.cpx2, r = t.cpy2;
        return null === i || null === r ? [(n ? Ur : Zr)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? Ur : Zr)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(n ? to : Qr)(t.x1, t.cpx1, t.x2, e), (n ? to : Qr)(t.y1, t.cpy1, t.y2, e)]
    }

    function Ja(t) {
        return Bk.extend(t)
    }

    function Qa(t, e) {
        return bO(t, e)
    }

    function ts(t, e) {
        _O[t] = e
    }

    function es(t) {
        return _O.hasOwnProperty(t) ? _O[t] : void 0
    }

    function ns(t, e, n, i) {
        var r = Ga(t, e);
        return n && ("center" === i && (n = rs(n, r.getBoundingRect())), os(r, n)), r
    }

    function is(t, e, n) {
        var i = new Wk({
            style: {image: t, x: e.x, y: e.y, width: e.width, height: e.height}, onload: function (t) {
                if ("center" === n) {
                    var r = {width: t.width, height: t.height};
                    i.setStyle(rs(e, r))
                }
            }
        });
        return i
    }

    function rs(t, e) {
        var n, i = e.width / e.height, r = t.height * i;
        r <= t.width ? n = t.height : (r = t.width, n = r / i);
        var o = t.x + t.width / 2, a = t.y + t.height / 2;
        return {x: o - r / 2, y: a - n / 2, width: r, height: n}
    }

    function os(t, e) {
        if (t.applyTransform) {
            var n = t.getBoundingRect(), i = n.calculateTransform(e);
            t.applyTransform(i)
        }
    }

    function as(t) {
        return Lo(t.shape, t.shape, t.style), t
    }

    function ss(t) {
        return ko(t.shape, t.shape, t.style), t
    }

    function ls(t, e, n, i, r, o, a) {
        var s, l = !1;
        "function" == typeof r ? (a = o, o = r, r = null) : D(r) && (o = r.cb, a = r.during, l = r.isFrom, s = r.removeOpt, r = r.dataIndex);
        var u, h = "update" === t, c = "remove" === t;
        if (i && i.ecModel) {
            var p = i.ecModel.getUpdatePayload();
            u = p && p.animation
        }
        var d = i && i.isAnimationEnabled();
        if (c || e.stopAnimation("remove"), d) {
            var f = void 0, g = void 0, y = void 0;
            u ? (f = u.duration || 0, g = u.easing || "cubicOut", y = u.delay || 0) : c ? (s = s || {}, f = B(s.duration, 200), g = B(s.easing, "cubicOut"), y = 0) : (f = i.getShallow(h ? "animationDurationUpdate" : "animationDuration"), g = i.getShallow(h ? "animationEasingUpdate" : "animationEasing"), y = i.getShallow(h ? "animationDelayUpdate" : "animationDelay")), "function" == typeof y && (y = y(r, i.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null)), "function" == typeof f && (f = f(r)), f > 0 ? l ? e.animateFrom(n, {
                duration: f,
                delay: y || 0,
                easing: g,
                done: o,
                force: !!o || !!a,
                scope: t,
                during: a
            }) : e.animateTo(n, {
                duration: f,
                delay: y || 0,
                easing: g,
                done: o,
                force: !!o || !!a,
                setToFinal: !0,
                scope: t,
                during: a
            }) : (e.stopAnimation(), !l && e.attr(n), o && o())
        } else e.stopAnimation(), !l && e.attr(n), a && a(1), o && o()
    }

    function us(t, e, n, i, r, o) {
        ls("update", t, e, n, i, r, o)
    }

    function hs(t, e, n, i, r, o) {
        ls("init", t, e, n, i, r, o)
    }

    function cs(t, e, n, i, r, o) {
        fs(t) || ls("remove", t, e, n, i, r, o)
    }

    function ps(t, e, n, i) {
        t.removeTextContent(), t.removeTextGuideLine(), cs(t, {style: {opacity: 0}}, e, n, i)
    }

    function ds(t, e, n) {
        function i() {
            t.parent && t.parent.remove(t)
        }

        t.isGroup ? t.traverse(function (t) {
            t.isGroup || ps(t, e, n, i)
        }) : ps(t, e, n, i)
    }

    function fs(t) {
        if (!t.__zr) return !0;
        for (var e = 0; e < t.animators.length; e++) {
            var n = t.animators[e];
            if ("remove" === n.scope) return !0
        }
        return !1
    }

    function gs(t, e) {
        for (var n = Hn([]); t && t !== e;) Xn(n, t.getLocalTransform(), n), t = t.parent;
        return n
    }

    function ys(t, e, n) {
        return e && !g(e) && (e = GD.getLocalTransform(e)), n && (e = jn([], e)), ge([], t, e)
    }

    function vs(t, e, n) {
        var i = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]),
            r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]),
            o = ["left" === t ? -i : "right" === t ? i : 0, "top" === t ? -r : "bottom" === t ? r : 0];
        return o = ys(o, e, n), Math.abs(o[0]) > Math.abs(o[1]) ? o[0] > 0 ? "right" : "left" : o[1] > 0 ? "bottom" : "top"
    }

    function ms(t) {
        return !t.isGroup
    }

    function xs(t) {
        return null != t.shape
    }

    function _s(t, e, n) {
        function i(t) {
            var e = {};
            return t.traverse(function (t) {
                ms(t) && t.anid && (e[t.anid] = t)
            }), e
        }

        function r(t) {
            var e = {x: t.x, y: t.y, rotation: t.rotation};
            return xs(t) && (e.shape = h({}, t.shape)), e
        }

        if (t && e) {
            var o = i(t);
            e.traverse(function (t) {
                if (ms(t) && t.anid) {
                    var e = o[t.anid];
                    if (e) {
                        var i = r(t);
                        t.attr(r(e)), us(t, i, n, tP(t).dataIndex)
                    }
                }
            })
        }
    }

    function bs(t, e) {
        return v(t, function (t) {
            var n = t[0];
            n = mO(n, e.x), n = xO(n, e.x + e.width);
            var i = t[1];
            return i = mO(i, e.y), i = xO(i, e.y + e.height), [n, i]
        })
    }

    function ws(t, e) {
        var n = mO(t.x, e.x), i = xO(t.x + t.width, e.x + e.width), r = mO(t.y, e.y),
            o = xO(t.y + t.height, e.y + e.height);
        return i >= n && o >= r ? {x: n, y: r, width: i - n, height: o - r} : void 0
    }

    function Ss(t, e, n) {
        var i = h({rectHover: !0}, e), r = i.style = {strokeNoScale: !0};
        return n = n || {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }, t ? 0 === t.indexOf("image://") ? (r.image = t.slice(8), c(r, n), new Wk(i)) : ns(t.replace("path://", ""), i, n, "center") : void 0
    }

    function Ms(t, e, n, i, r) {
        for (var o = 0, a = r[r.length - 1]; o < r.length; o++) {
            var s = r[o];
            if (Is(t, e, n, i, s[0], s[1], a[0], a[1])) return !0;
            a = s
        }
    }

    function Is(t, e, n, i, r, o, a, s) {
        var l = n - t, u = i - e, h = a - r, c = s - o, p = Ts(h, c, l, u);
        if (Cs(p)) return !1;
        var d = t - r, f = e - o, g = Ts(d, f, l, u) / p;
        if (0 > g || g > 1) return !1;
        var y = Ts(d, f, h, c) / p;
        return 0 > y || y > 1 ? !1 : !0
    }

    function Ts(t, e, n, i) {
        return t * i - n * e
    }

    function Cs(t) {
        return 1e-6 >= t && t >= -1e-6
    }

    function As(t) {
        var e = t.itemTooltipOption, n = t.componentModel, i = t.itemName, r = T(e) ? {formatter: e} : e,
            o = n.mainType, a = n.componentIndex, s = {componentType: o, name: i, $vars: ["name"]};
        s[o + "Index"] = a;
        var l = t.formatterParamsExtra;
        l && y(b(l), function (t) {
            q(s, t) || (s[t] = l[t], s.$vars.push(t))
        });
        var u = tP(t.el);
        u.componentMainType = o, u.componentIndex = a, u.tooltipConfig = {
            name: i,
            option: c({content: i, formatterParams: s}, r)
        }
    }

    function Ds(t, e) {
        for (var n = 0; n < sP.length; n++) {
            var i = sP[n], r = e[i], o = t.ensureState(i);
            o.style = o.style || {}, o.style.text = r
        }
        var a = t.currentStates.slice();
        t.clearStates(!0), t.setStyle({text: e.normal}), t.useStates(a, !0)
    }

    function Ls(t, e, n) {
        var i, r = t.labelFetcher, o = t.labelDataIndex, a = t.labelDimIndex, s = e.normal;
        r && (i = r.getFormattedLabel(o, "normal", null, a, s && s.get("formatter"), null != n ? {interpolatedValue: n} : null)), null == i && (i = I(t.defaultText) ? t.defaultText(o, t, n) : t.defaultText);
        for (var l = {normal: i}, u = 0; u < sP.length; u++) {
            var h = sP[u], c = e[h];
            l[h] = B(r ? r.getFormattedLabel(o, h, null, a, c && c.get("formatter")) : null, i)
        }
        return l
    }

    function ks(t, e, n, i) {
        n = n || IO;
        for (var r = t instanceof $k, o = !1, a = 0; a < lP.length; a++) {
            var s = e[lP[a]];
            if (s && s.getShallow("show")) {
                o = !0;
                break
            }
        }
        var l = r ? t : t.getTextContent();
        if (o) {
            r || (l || (l = new $k, t.setTextContent(l)), t.stateProxy && (l.stateProxy = t.stateProxy));
            var u = Ls(n, e), h = e.normal, c = !!h.getShallow("show"), p = Os(h, i && i.normal, n, !1, !r);
            p.text = u.normal, r || t.setTextConfig(Rs(h, n, !1));
            for (var a = 0; a < sP.length; a++) {
                var d = sP[a], s = e[d];
                if (s) {
                    var f = l.ensureState(d), g = !!B(s.getShallow("show"), c);
                    if (g !== c && (f.ignore = !g), f.style = Os(s, i && i[d], n, !0, !r), f.style.text = u[d], !r) {
                        var y = t.ensureState(d);
                        y.textConfig = Rs(s, n, !0)
                    }
                }
            }
            l.silent = !!h.getShallow("silent"), null != l.style.x && (p.x = l.style.x), null != l.style.y && (p.y = l.style.y), l.ignore = !c, l.useStyle(p), l.dirty(), n.enableTextSetter && (DO(l).setLabelText = function (t) {
                var i = Ls(n, e, t);
                Ds(l, i)
            })
        } else l && (l.ignore = !0);
        t.dirty()
    }

    function Ps(t, e) {
        e = e || "label";
        for (var n = {normal: t.getModel(e)}, i = 0; i < sP.length; i++) {
            var r = sP[i];
            n[r] = t.getModel([r, e])
        }
        return n
    }

    function Os(t, e, n, i, r) {
        var o = {};
        return zs(o, t, n, i, r), e && h(o, e), o
    }

    function Rs(t, e, n) {
        e = e || {};
        var i, r = {}, o = t.getShallow("rotate"), a = B(t.getShallow("distance"), n ? null : 5),
            s = t.getShallow("offset");
        return i = t.getShallow("position") || (n ? null : "inside"), "outside" === i && (i = e.defaultOutsidePosition || "top"), null != i && (r.position = i), null != s && (r.offset = s), null != o && (o *= Math.PI / 180, r.rotation = o), null != a && (r.distance = a), r.outsideFill = "inherit" === t.get("color") ? e.inheritColor || null : "auto", r
    }

    function zs(t, e, n, i, r) {
        n = n || IO;
        var o, a = e.ecModel, s = a && a.option.textStyle, l = Es(e);
        if (l) {
            o = {};
            for (var u in l) if (l.hasOwnProperty(u)) {
                var h = e.getModel(["rich", u]);
                Ns(o[u] = {}, h, s, n, i, r, !1, !0)
            }
        }
        o && (t.rich = o);
        var c = e.get("overflow");
        c && (t.overflow = c);
        var p = e.get("minMargin");
        null != p && (t.margin = p), Ns(t, e, s, n, i, r, !0, !1)
    }

    function Es(t) {
        for (var e; t && t !== t.ecModel;) {
            var n = (t.option || IO).rich;
            if (n) {
                e = e || {};
                for (var i = b(n), r = 0; r < i.length; r++) {
                    var o = i[r];
                    e[o] = 1
                }
            }
            t = t.parentModel
        }
        return e
    }

    function Ns(t, e, n, i, r, o, a, s) {
        n = !r && n || IO;
        var l = i && i.inheritColor, u = e.getShallow("color"), h = e.getShallow("textBorderColor"),
            c = B(e.getShallow("opacity"), n.opacity);
        ("inherit" === u || "auto" === u) && (u = l ? l : null), ("inherit" === h || "auto" === h) && (h = l ? l : null), o || (u = u || n.color, h = h || n.textBorderColor), null != u && (t.fill = u), null != h && (t.stroke = h);
        var p = B(e.getShallow("textBorderWidth"), n.textBorderWidth);
        null != p && (t.lineWidth = p);
        var d = B(e.getShallow("textBorderType"), n.textBorderType);
        null != d && (t.lineDash = d);
        var f = B(e.getShallow("textBorderDashOffset"), n.textBorderDashOffset);
        null != f && (t.lineDashOffset = f), r || null != c || s || (c = i && i.defaultOpacity), null != c && (t.opacity = c), r || o || null == t.fill && i.inheritColor && (t.fill = i.inheritColor);
        for (var g = 0; g < TO.length; g++) {
            var y = TO[g], v = B(e.getShallow(y), n[y]);
            null != v && (t[y] = v)
        }
        for (var g = 0; g < CO.length; g++) {
            var y = CO[g], v = e.getShallow(y);
            null != v && (t[y] = v)
        }
        if (null == t.verticalAlign) {
            var m = e.getShallow("baseline");
            null != m && (t.verticalAlign = m)
        }
        if (!a || !i.disableBox) {
            for (var g = 0; g < AO.length; g++) {
                var y = AO[g], v = e.getShallow(y);
                null != v && (t[y] = v)
            }
            var x = e.getShallow("borderType");
            null != x && (t.borderDash = x), "auto" !== t.backgroundColor && "inherit" !== t.backgroundColor || !l || (t.backgroundColor = l), "auto" !== t.borderColor && "inherit" !== t.borderColor || !l || (t.borderColor = l)
        }
    }

    function Bs(t, e) {
        var n = e && e.getModel("textStyle");
        return W([t.fontStyle || n && n.getShallow("fontStyle") || "", t.fontWeight || n && n.getShallow("fontWeight") || "", (t.fontSize || n && n.getShallow("fontSize") || 12) + "px", t.fontFamily || n && n.getShallow("fontFamily") || "sans-serif"].join(" "))
    }

    function Vs(t, e, n, i) {
        if (t) {
            var r = DO(t);
            r.prevValue = r.value, r.value = n;
            var o = e.normal;
            r.valueAnimation = o.get("valueAnimation"), r.valueAnimation && (r.precision = o.get("precision"), r.defaultInterpolatedText = i, r.statesModels = e)
        }
    }

    function Fs(t, e, n, i, r) {
        function o(i) {
            var o = vr(n, a.precision, l, u, i);
            a.interpolatedValue = 1 === i ? null : o;
            var h = Ls({labelDataIndex: e, labelFetcher: r, defaultText: s ? s(o) : o + ""}, a.statesModels, o);
            Ds(t, h)
        }

        var a = DO(t);
        if (a.valueAnimation) {
            var s = a.defaultInterpolatedText, l = B(a.interpolatedValue, a.prevValue), u = a.value;
            (null == l ? hs : us)(t, {}, i, e, null, o)
        }
    }

    function Gs(t) {
        return [t || "", FO++].join("_")
    }

    function Hs(t) {
        var e = {};
        t.registerSubTypeDefaulter = function (t, n) {
            var i = mr(t);
            e[i.main] = n
        }, t.determineSubType = function (n, i) {
            var r = i.type;
            if (!r) {
                var o = mr(n).main;
                t.hasSubTypes(n) && e[o] && (r = e[o](i))
            }
            return r
        }
    }

    function Ws(t, e) {
        function n(t) {
            var n = {}, o = [];
            return y(t, function (a) {
                var s = i(n, a), l = s.originalDeps = e(a), u = r(l, t);
                s.entryCount = u.length, 0 === s.entryCount && o.push(a), y(u, function (t) {
                    p(s.predecessor, t) < 0 && s.predecessor.push(t);
                    var e = i(n, t);
                    p(e.successor, t) < 0 && e.successor.push(a)
                })
            }), {graph: n, noEntryList: o}
        }

        function i(t, e) {
            return t[e] || (t[e] = {predecessor: [], successor: []}), t[e]
        }

        function r(t, e) {
            var n = [];
            return y(t, function (t) {
                p(e, t) >= 0 && n.push(t)
            }), n
        }

        t.topologicalTravel = function (t, e, i, r) {
            function o(t) {
                l[t].entryCount--, 0 === l[t].entryCount && u.push(t)
            }

            function a(t) {
                h[t] = !0, o(t)
            }

            if (t.length) {
                var s = n(e), l = s.graph, u = s.noEntryList, h = {};
                for (y(t, function (t) {
                    h[t] = !0
                }); u.length;) {
                    var c = u.pop(), p = l[c], d = !!h[c];
                    d && (i.call(r, c, p.originalDeps.slice()), delete h[c]), y(p.successor, d ? a : o)
                }
                y(h, function () {
                    var t = "";
                    throw new Error(t)
                })
            }
        }
    }

    function Xs(t, e) {
        return l(l({}, t, !0), e, !0)
    }

    function Ys(t, e) {
        t = t.toUpperCase(), UO[t] = new VO(e), ZO[t] = e
    }

    function Zs(t) {
        if (T(t)) {
            var e = ZO[t.toUpperCase()] || {};
            return t === WO || t === XO ? s(e) : l(s(e), s(ZO[YO]), !1)
        }
        return l(s(t), s(ZO[YO]), !1)
    }

    function Us(t) {
        return UO[t]
    }

    function js() {
        return UO[YO]
    }

    function qs(t, e) {
        return t += "", "0000".substr(0, e - t.length) + t
    }

    function Ks(t) {
        switch (t) {
            case"half-year":
            case"quarter":
                return "month";
            case"week":
            case"half-week":
                return "day";
            case"half-day":
            case"quarter-day":
                return "hour";
            default:
                return t
        }
    }

    function $s(t) {
        return t === Ks(t)
    }

    function Js(t) {
        switch (t) {
            case"year":
            case"month":
                return "day";
            case"millisecond":
                return "millisecond";
            default:
                return "second"
        }
    }

    function Qs(t, e, n, i) {
        var r = Li(t), o = r[il(n)](), a = r[rl(n)]() + 1, s = Math.floor((a - 1) / 4) + 1, l = r[ol(n)](),
            u = r["get" + (n ? "UTC" : "") + "Day"](), h = r[al(n)](), c = (h - 1) % 12 + 1, p = r[sl(n)](),
            d = r[ll(n)](), f = r[ul(n)](), g = i instanceof VO ? i : Us(i || jO) || js(), y = g.getModel("time"),
            v = y.get("month"), m = y.get("monthAbbr"), x = y.get("dayOfWeek"), _ = y.get("dayOfWeekAbbr");
        return (e || "").replace(/{yyyy}/g, o + "").replace(/{yy}/g, o % 100 + "").replace(/{Q}/g, s + "").replace(/{MMMM}/g, v[a - 1]).replace(/{MMM}/g, m[a - 1]).replace(/{MM}/g, qs(a, 2)).replace(/{M}/g, a + "").replace(/{dd}/g, qs(l, 2)).replace(/{d}/g, l + "").replace(/{eeee}/g, x[u]).replace(/{ee}/g, _[u]).replace(/{e}/g, u + "").replace(/{HH}/g, qs(h, 2)).replace(/{H}/g, h + "").replace(/{hh}/g, qs(c + "", 2)).replace(/{h}/g, c + "").replace(/{mm}/g, qs(p, 2)).replace(/{m}/g, p + "").replace(/{ss}/g, qs(d, 2)).replace(/{s}/g, d + "").replace(/{SSS}/g, qs(f, 3)).replace(/{S}/g, f + "")
    }

    function tl(t, e, n, i, r) {
        var o = null;
        if ("string" == typeof n) o = n; else if ("function" == typeof n) o = n(t.value, e, {level: t.level}); else {
            var a = h({}, tR);
            if (t.level > 0) for (var s = 0; s < iR.length; ++s) a[iR[s]] = "{primary|" + a[iR[s]] + "}";
            var l = n ? n.inherit === !1 ? n : c(n, a) : a, u = el(t.value, r);
            if (l[u]) o = l[u]; else if (l.inherit) {
                for (var p = rR.indexOf(u), s = p - 1; s >= 0; --s) if (l[u]) {
                    o = l[u];
                    break
                }
                o = o || a.none
            }
            if (M(o)) {
                var d = null == t.level ? 0 : t.level >= 0 ? t.level : o.length + t.level;
                d = Math.min(d, o.length - 1), o = o[d]
            }
        }
        return Qs(new Date(t.value), o, r, i)
    }

    function el(t, e) {
        var n = Li(t), i = n[rl(e)]() + 1, r = n[ol(e)](), o = n[al(e)](), a = n[sl(e)](), s = n[ll(e)](),
            l = n[ul(e)](), u = 0 === l, h = u && 0 === s, c = h && 0 === a, p = c && 0 === o, d = p && 1 === r,
            f = d && 1 === i;
        return f ? "year" : d ? "month" : p ? "day" : c ? "hour" : h ? "minute" : u ? "second" : "millisecond"
    }

    function nl(t, e, n) {
        var i = "number" == typeof t ? Li(t) : t;
        switch (e = e || el(t, n)) {
            case"year":
                return i[il(n)]();
            case"half-year":
                return i[rl(n)]() >= 6 ? 1 : 0;
            case"quarter":
                return Math.floor((i[rl(n)]() + 1) / 4);
            case"month":
                return i[rl(n)]();
            case"day":
                return i[ol(n)]();
            case"half-day":
                return i[al(n)]() / 24;
            case"hour":
                return i[al(n)]();
            case"minute":
                return i[sl(n)]();
            case"second":
                return i[ll(n)]();
            case"millisecond":
                return i[ul(n)]()
        }
    }

    function il(t) {
        return t ? "getUTCFullYear" : "getFullYear"
    }

    function rl(t) {
        return t ? "getUTCMonth" : "getMonth"
    }

    function ol(t) {
        return t ? "getUTCDate" : "getDate"
    }

    function al(t) {
        return t ? "getUTCHours" : "getHours"
    }

    function sl(t) {
        return t ? "getUTCMinutes" : "getMinutes"
    }

    function ll(t) {
        return t ? "getUTCSeconds" : "getSeconds"
    }

    function ul(t) {
        return t ? "getUTCSeconds" : "getSeconds"
    }

    function hl(t) {
        return t ? "setUTCFullYear" : "setFullYear"
    }

    function cl(t) {
        return t ? "setUTCMonth" : "setMonth"
    }

    function pl(t) {
        return t ? "setUTCDate" : "setDate"
    }

    function dl(t) {
        return t ? "setUTCHours" : "setHours"
    }

    function fl(t) {
        return t ? "setUTCMinutes" : "setMinutes"
    }

    function gl(t) {
        return t ? "setUTCSeconds" : "setSeconds"
    }

    function yl(t) {
        return t ? "setUTCSeconds" : "setSeconds"
    }

    function vl(t, e, n, i, r, o, a, s) {
        var l = new $k({
            style: {
                text: t,
                font: e,
                align: n,
                verticalAlign: i,
                padding: r,
                rich: o,
                overflow: a ? "truncate" : null,
                lineHeight: s
            }
        });
        return l.getBoundingRect()
    }

    function ml(t) {
        if (!Ni(t)) return T(t) ? t : "-";
        var e = (t + "").split(".");
        return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (e.length > 1 ? "." + e[1] : "")
    }

    function xl(t, e) {
        return t = (t || "").toLowerCase().replace(/-(.)/g, function (t, e) {
            return e.toUpperCase()
        }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t
    }

    function _l(t) {
        return null == t ? "" : (t + "").replace(aR, function (t, e) {
            return sR[e]
        })
    }

    function bl(t, e, n) {
        function i(t) {
            return t && W(t) ? t : "-"
        }

        function r(t) {
            return !(null == t || isNaN(t) || !isFinite(t))
        }

        var o = "{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}", a = "time" === e, s = t instanceof Date;
        if (a || s) {
            var l = a ? Li(t) : t;
            if (!isNaN(+l)) return Qs(l, o, n);
            if (s) return "-"
        }
        if ("ordinal" === e) return C(t) ? i(t) : A(t) && r(t) ? t + "" : "-";
        var u = Ei(t);
        return r(u) ? ml(u) : C(t) ? i(t) : "-"
    }

    function wl(t, e, n) {
        M(e) || (e = [e]);
        var i = e.length;
        if (!i) return "";
        for (var r = e[0].$vars || [], o = 0; o < r.length; o++) {
            var a = lR[o];
            t = t.replace(uR(a), uR(a, 0))
        }
        for (var s = 0; i > s; s++) for (var l = 0; l < r.length; l++) {
            var u = e[s][r[l]];
            t = t.replace(uR(lR[l], s), n ? _l(u) : u)
        }
        return t
    }

    function Sl(t, e, n) {
        return y(e, function (e, i) {
            t = t.replace("{" + i + "}", n ? _l(e) : e)
        }), t
    }

    function Ml(t, e) {
        var n = T(t) ? {color: t, extraCssText: e} : t || {}, i = n.color, r = n.type;
        e = n.extraCssText;
        var o = n.renderMode || "html";
        if (!i) return "";
        if ("html" === o) return "subItem" === r ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + _l(i) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:' + _l(i) + ";" + (e || "") + '"></span>';
        var a = n.markerId || "markerX";
        return {
            renderMode: o,
            content: "{" + a + "|}  ",
            style: "subItem" === r ? {width: 4, height: 4, borderRadius: 2, backgroundColor: i} : {
                width: 10,
                height: 10,
                borderRadius: 5,
                backgroundColor: i
            }
        }
    }

    function Il(t, e, n) {
        ("week" === t || "month" === t || "quarter" === t || "half-year" === t || "year" === t) && (t = "MM-dd\nyyyy");
        var i = Li(e), r = n ? "UTC" : "", o = i["get" + r + "FullYear"](), a = i["get" + r + "Month"]() + 1,
            s = i["get" + r + "Date"](), l = i["get" + r + "Hours"](), u = i["get" + r + "Minutes"](),
            h = i["get" + r + "Seconds"](), c = i["get" + r + "Milliseconds"]();
        return t = t.replace("MM", qs(a, 2)).replace("M", a).replace("yyyy", o).replace("yy", o % 100 + "").replace("dd", qs(s, 2)).replace("d", s).replace("hh", qs(l, 2)).replace("h", l).replace("mm", qs(u, 2)).replace("m", u).replace("ss", qs(h, 2)).replace("s", h).replace("SSS", qs(c, 3))
    }

    function Tl(t) {
        return t ? t.charAt(0).toUpperCase() + t.substr(1) : t
    }

    function Cl(t, e) {
        return e = e || "transparent", T(t) ? t : D(t) ? t.colorStops && (t.colorStops[0] || {}).color || e : e
    }

    function Al(t, e) {
        if ("_blank" === e || "blank" === e) {
            var n = window.open();
            n.opener = null, n.location.href = t
        } else window.open(t, e)
    }

    function Dl(t, e, n, i, r) {
        var o = 0, a = 0;
        null == i && (i = 1 / 0), null == r && (r = 1 / 0);
        var s = 0;
        e.eachChild(function (l, u) {
            var h, c, p = l.getBoundingRect(), d = e.childAt(u + 1), f = d && d.getBoundingRect();
            if ("horizontal" === t) {
                var g = p.width + (f ? -f.x + p.x : 0);
                h = o + g, h > i || l.newline ? (o = 0, h = g, a += s + n, s = p.height) : s = Math.max(s, p.height)
            } else {
                var y = p.height + (f ? -f.y + p.y : 0);
                c = a + y, c > r || l.newline ? (o += s + n, a = 0, c = y, s = p.width) : s = Math.max(s, p.width)
            }
            l.newline || (l.x = o, l.y = a, l.markRedraw(), "horizontal" === t ? o = h + n : a = c + n)
        })
    }

    function Ll(t, e, n) {
        var i = e.width, r = e.height, o = _i(t.left, i), a = _i(t.top, r), s = _i(t.right, i), l = _i(t.bottom, r);
        return (isNaN(o) || isNaN(parseFloat(t.left))) && (o = 0), (isNaN(s) || isNaN(parseFloat(t.right))) && (s = i), (isNaN(a) || isNaN(parseFloat(t.top))) && (a = 0), (isNaN(l) || isNaN(parseFloat(t.bottom))) && (l = r), n = oR(n || 0), {
            width: Math.max(s - o - n[1] - n[3], 0),
            height: Math.max(l - a - n[0] - n[2], 0)
        }
    }

    function kl(t, e, n) {
        n = oR(n || 0);
        var i = e.width, r = e.height, o = _i(t.left, i), a = _i(t.top, r), s = _i(t.right, i), l = _i(t.bottom, r),
            u = _i(t.width, i), h = _i(t.height, r), c = n[2] + n[0], p = n[1] + n[3], d = t.aspect;
        switch (isNaN(u) && (u = i - s - p - o), isNaN(h) && (h = r - l - c - a), null != d && (isNaN(u) && isNaN(h) && (d > i / r ? u = .8 * i : h = .8 * r), isNaN(u) && (u = d * h), isNaN(h) && (h = u / d)), isNaN(o) && (o = i - s - u - p), isNaN(a) && (a = r - l - h - c), t.left || t.right) {
            case"center":
                o = i / 2 - u / 2 - n[3];
                break;
            case"right":
                o = i - u - p
        }
        switch (t.top || t.bottom) {
            case"middle":
            case"center":
                a = r / 2 - h / 2 - n[0];
                break;
            case"bottom":
                a = r - h - c
        }
        o = o || 0, a = a || 0, isNaN(u) && (u = i - p - o - (s || 0)), isNaN(h) && (h = r - c - a - (l || 0));
        var f = new $D(o + n[3], a + n[0], u, h);
        return f.margin = n, f
    }

    function Pl(t, e, n, i, r) {
        var o = !r || !r.hv || r.hv[0], a = !r || !r.hv || r.hv[1], s = r && r.boundingMode || "all";
        if (o || a) {
            var l;
            if ("raw" === s) l = "group" === t.type ? new $D(0, 0, +e.width || 0, +e.height || 0) : t.getBoundingRect(); else if (l = t.getBoundingRect(), t.needLocalTransform()) {
                var u = t.getLocalTransform();
                l = l.clone(), l.applyTransform(u)
            }
            var h = kl(c({width: l.width, height: l.height}, e), n, i), p = o ? h.x - l.x : 0, d = a ? h.y - l.y : 0;
            "raw" === s ? (t.x = p, t.y = d) : (t.x += p, t.y += d), t.markRedraw()
        }
    }

    function Ol(t, e) {
        return null != t[pR[e][0]] || null != t[pR[e][1]] && null != t[pR[e][2]]
    }

    function Rl(t) {
        var e = t.layoutMode || t.constructor.layoutMode;
        return D(e) ? e : e ? {type: e} : null
    }

    function zl(t, e, n) {
        function i(n, i) {
            var a = {}, l = 0, u = {}, h = 0, c = 2;
            if (hR(n, function (e) {
                u[e] = t[e]
            }), hR(n, function (t) {
                r(e, t) && (a[t] = u[t] = e[t]), o(a, t) && l++, o(u, t) && h++
            }), s[i]) return o(e, n[1]) ? u[n[2]] = null : o(e, n[2]) && (u[n[1]] = null), u;
            if (h !== c && l) {
                if (l >= c) return a;
                for (var p = 0; p < n.length; p++) {
                    var d = n[p];
                    if (!r(a, d) && r(t, d)) {
                        a[d] = t[d];
                        break
                    }
                }
                return a
            }
            return u
        }

        function r(t, e) {
            return t.hasOwnProperty(e)
        }

        function o(t, e) {
            return null != t[e] && "auto" !== t[e]
        }

        function a(t, e, n) {
            hR(t, function (t) {
                e[t] = n[t]
            })
        }

        var s = n && n.ignoreSize;
        !M(s) && (s = [s, s]);
        var l = i(pR[0], 0), u = i(pR[1], 1);
        a(pR[0], t, l), a(pR[1], t, u)
    }

    function El(t) {
        return Nl({}, t)
    }

    function Nl(t, e) {
        return e && t && hR(cR, function (n) {
            e.hasOwnProperty(n) && (t[n] = e[n])
        }), t
    }

    function Bl(t) {
        var e = [];
        return y(gR.getClassesByMainType(t), function (t) {
            e = e.concat(t.dependencies || t.prototype.dependencies || [])
        }), e = v(e, function (t) {
            return mr(t).main
        }), "dataset" !== t && p(e, "dataset") <= 0 && e.unshift("dataset"), e
    }

    function Vl(t) {
        kR(t).datasetMap = Z()
    }

    function Fl(t, e, n) {
        function i(t, e, n) {
            for (var i = 0; n > i; i++) t.push(e + i)
        }

        function r(t) {
            var e = t.dimsDef;
            return e ? e.length : 1
        }

        var o = {}, a = Hl(e);
        if (!a || !t) return o;
        var s, l, u = [], h = [], c = e.ecModel, p = kR(c).datasetMap, d = a.uid + "_" + n.seriesLayoutBy;
        t = t.slice(), y(t, function (e, n) {
            var i = D(e) ? e : t[n] = {name: e};
            "ordinal" === i.type && null == s && (s = n, l = r(i)), o[i.name] = []
        });
        var f = p.get(d) || p.set(d, {categoryWayDim: l, valueWayDim: 0});
        return y(t, function (t, e) {
            var n = t.name, a = r(t);
            if (null == s) {
                var l = f.valueWayDim;
                i(o[n], l, a), i(h, l, a), f.valueWayDim += a
            } else if (s === e) i(o[n], 0, a), i(u, 0, a); else {
                var l = f.categoryWayDim;
                i(o[n], l, a), i(h, l, a), f.categoryWayDim += a
            }
        }), u.length && (o.itemName = u), h.length && (o.seriesName = h), o
    }

    function Gl(t, e, n) {
        var i = {}, r = Hl(t);
        if (!r) return i;
        var o, a = e.sourceFormat, s = e.dimensionsDefine;
        (a === MR || a === IR) && y(s, function (t, e) {
            "name" === (D(t) ? t.name : t) && (o = e)
        });
        var l = function () {
            function t(t) {
                return null != t.v && null != t.n
            }

            for (var i = {}, r = {}, l = [], u = 0, h = Math.min(5, n); h > u; u++) {
                var c = Yl(e.data, a, e.seriesLayoutBy, s, e.startIndex, u);
                l.push(c);
                var p = c === LR.Not;
                if (p && null == i.v && u !== o && (i.v = u), (null == i.n || i.n === i.v || !p && l[i.n] === LR.Not) && (i.n = u), t(i) && l[i.n] !== LR.Not) return i;
                p || (c === LR.Might && null == r.v && u !== o && (r.v = u), (null == r.n || r.n === r.v) && (r.n = u))
            }
            return t(i) ? i : t(r) ? r : null
        }();
        if (l) {
            i.value = [l.v];
            var u = null != o ? o : l.n;
            i.itemName = [u], i.seriesName = [u]
        }
        return i
    }

    function Hl(t) {
        var e = t.get("data", !0);
        return e ? void 0 : pr(t.ecModel, "dataset", {
            index: t.get("datasetIndex", !0),
            id: t.get("datasetId", !0)
        }, wL).models[0]
    }

    function Wl(t) {
        return t.get("transform", !0) || t.get("fromTransformResult", !0) ? pr(t.ecModel, "dataset", {
            index: t.get("fromDatasetIndex", !0),
            id: t.get("fromDatasetId", !0)
        }, wL).models : []
    }

    function Xl(t, e) {
        return Yl(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e)
    }

    function Yl(t, e, n, i, r, o) {
        function a(t) {
            var e = T(t);
            return null != t && isFinite(t) && "" !== t ? e ? LR.Might : LR.Not : e && "-" !== t ? LR.Must : void 0
        }

        var s, l = 5;
        if (k(t)) return LR.Not;
        var u, h;
        if (i) {
            var c = i[o];
            D(c) ? (u = c.name, h = c.type) : T(c) && (u = c)
        }
        if (null != h) return "ordinal" === h ? LR.Must : LR.Not;
        if (e === SR) {
            var p = t;
            if (n === DR) {
                for (var d = p[o], f = 0; f < (d || []).length && l > f; f++) if (null != (s = a(d[r + f]))) return s
            } else for (var f = 0; f < p.length && l > f; f++) {
                var g = p[r + f];
                if (g && null != (s = a(g[o]))) return s
            }
        } else if (e === MR) {
            var y = t;
            if (!u) return LR.Not;
            for (var f = 0; f < y.length && l > f; f++) {
                var v = y[f];
                if (v && null != (s = a(v[u]))) return s
            }
        } else if (e === IR) {
            var m = t;
            if (!u) return LR.Not;
            var d = m[u];
            if (!d || k(d)) return LR.Not;
            for (var f = 0; f < d.length && l > f; f++) if (null != (s = a(d[f]))) return s
        } else if (e === wR) for (var x = t, f = 0; f < x.length && l > f; f++) {
            var v = x[f], _ = Xi(v);
            if (!M(_)) return LR.Not;
            if (null != (s = a(_[o]))) return s
        }
        return LR.Not
    }

    function Zl(t, e) {
        H(null == PR.get(t) && e), PR.set(t, e)
    }

    function Ul(t, e, n) {
        var i = PR.get(e);
        if (!i) return n;
        var r = i(t);
        return r ? n.concat(r) : n
    }

    function jl(t, e, n, i) {
        var r = Hi(t.get(["aria", "decal", "decals"]));
        return Kl(t, RR, r, null, e, n, i)
    }

    function ql(t, e) {
        for (var n = t.length, i = 0; n > i; i++) if (t[i].length > e) return t[i];
        return t[n - 1]
    }

    function Kl(t, e, n, i, r, o, a) {
        o = o || t;
        var s = e(o), l = s.paletteIdx || 0, u = s.paletteNameMap = s.paletteNameMap || {};
        if (u.hasOwnProperty(r)) return u[r];
        var h = null != a && i ? ql(i, a) : n;
        if (h = h || n, h && h.length) {
            var c = h[l];
            return r && (u[r] = c), s.paletteIdx = (l + 1) % h.length, c
        }
    }

    function $l(t, e) {
        e(t).paletteIdx = 0, e(t).paletteNameMap = {}
    }

    function Jl(t, e) {
        if (e) {
            var n = e.seriesIndex, i = e.seriesId, r = e.seriesName;
            return null != n && t.componentIndex !== n || null != i && t.id !== i || null != r && t.name !== r
        }
    }

    function Ql(t, e) {
        var n = t.color && !t.colorLayer;
        y(e, function (e, i) {
            "colorLayer" === i && n || gR.hasClass(i) || ("object" == typeof e ? t[i] = t[i] ? l(t[i], e, !1) : s(e) : null == t[i] && (t[i] = e))
        })
    }

    function tu(t, e, n) {
        if (M(e)) {
            var i = Z();
            return y(e, function (t) {
                if (null != t) {
                    var e = er(t, null);
                    null != e && i.set(t, !0)
                }
            }), x(n, function (e) {
                return e && i.get(e[t])
            })
        }
        var r = er(e, null);
        return x(n, function (e) {
            return e && null != r && e[t] === r
        })
    }

    function eu(t, e) {
        return e.hasOwnProperty("subType") ? x(t, function (t) {
            return t && t.subType === e.subType
        }) : t
    }

    function nu(t) {
        var e = Z();
        return t && y(Hi(t.replaceMerge), function (t) {
            e.set(t, !0)
        }), {replaceMergeMainTypeMap: e}
    }

    function iu(t, e, n) {
        function i(t) {
            y(e, function (e) {
                e(t, n)
            })
        }

        var r, o, a = [], s = t.baseOption, l = t.timeline, u = t.options, h = t.media, c = !!t.media,
            p = !!(u || l || s && s.timeline);
        return s ? (o = s, o.timeline || (o.timeline = l)) : ((p || c) && (t.options = t.media = null), o = t), c && M(h) && y(h, function (t) {
            t && t.option && (t.query ? a.push(t) : r || (r = t))
        }), i(o), y(u, function (t) {
            return i(t)
        }), y(a, function (t) {
            return i(t.option)
        }), {baseOption: o, timelineOptions: u || [], mediaDefault: r, mediaList: a}
    }

    function ru(t, e, n) {
        var i = {width: e, height: n, aspectratio: e / n}, r = !0;
        return y(t, function (t, e) {
            var n = e.match(jR);
            if (n && n[1] && n[2]) {
                var o = n[1], a = n[2].toLowerCase();
                ou(i[a], t, o) || (r = !1)
            }
        }), r
    }

    function ou(t, e, n) {
        return "min" === n ? t >= e : "max" === n ? e >= t : t === e
    }

    function au(t, e) {
        return t.join(",") === e.join(",")
    }

    function su(t) {
        var e = t && t.itemStyle;
        if (e) for (var n = 0, i = JR.length; i > n; n++) {
            var r = JR[n], o = e.normal, a = e.emphasis;
            o && o[r] && (t[r] = t[r] || {}, t[r].normal ? l(t[r].normal, o[r]) : t[r].normal = o[r], o[r] = null), a && a[r] && (t[r] = t[r] || {}, t[r].emphasis ? l(t[r].emphasis, a[r]) : t[r].emphasis = a[r], a[r] = null)
        }
    }

    function lu(t, e, n) {
        if (t && t[e] && (t[e].normal || t[e].emphasis)) {
            var i = t[e].normal, r = t[e].emphasis;
            i && (n ? (t[e].normal = t[e].emphasis = null, c(t[e], i)) : t[e] = i), r && (t.emphasis = t.emphasis || {}, t.emphasis[e] = r, r.focus && (t.emphasis.focus = r.focus), r.blurScope && (t.emphasis.blurScope = r.blurScope))
        }
    }

    function uu(t) {
        lu(t, "itemStyle"), lu(t, "lineStyle"), lu(t, "areaStyle"), lu(t, "label"), lu(t, "labelLine"), lu(t, "upperLabel"), lu(t, "edgeLabel")
    }

    function hu(t, e) {
        var n = $R(t) && t[e], i = $R(n) && n.textStyle;
        if (i) for (var r = 0, o = _L.length; o > r; r++) {
            var a = _L[r];
            i.hasOwnProperty(a) && (n[a] = i[a])
        }
    }

    function cu(t) {
        t && (uu(t), hu(t, "label"), t.emphasis && hu(t.emphasis, "label"))
    }

    function pu(t) {
        if ($R(t)) {
            su(t), uu(t), hu(t, "label"), hu(t, "upperLabel"), hu(t, "edgeLabel"), t.emphasis && (hu(t.emphasis, "label"), hu(t.emphasis, "upperLabel"), hu(t.emphasis, "edgeLabel"));
            var e = t.markPoint;
            e && (su(e), cu(e));
            var n = t.markLine;
            n && (su(n), cu(n));
            var i = t.markArea;
            i && cu(i);
            var r = t.data;
            if ("graph" === t.type) {
                r = r || t.nodes;
                var o = t.links || t.edges;
                if (o && !k(o)) for (var a = 0; a < o.length; a++) cu(o[a]);
                y(t.categories, function (t) {
                    uu(t)
                })
            }
            if (r && !k(r)) for (var a = 0; a < r.length; a++) cu(r[a]);
            if (e = t.markPoint, e && e.data) for (var s = e.data, a = 0; a < s.length; a++) cu(s[a]);
            if (n = t.markLine, n && n.data) for (var l = n.data, a = 0; a < l.length; a++) M(l[a]) ? (cu(l[a][0]), cu(l[a][1])) : cu(l[a]);
            "gauge" === t.type ? (hu(t, "axisLabel"), hu(t, "title"), hu(t, "detail")) : "treemap" === t.type ? (lu(t.breadcrumb, "itemStyle"), y(t.levels, function (t) {
                uu(t)
            })) : "tree" === t.type && uu(t.leaves)
        }
    }

    function du(t) {
        return M(t) ? t : t ? [t] : []
    }

    function fu(t) {
        return (M(t) ? t[0] : t) || {}
    }

    function gu(t, e) {
        KR(du(t.series), function (t) {
            $R(t) && pu(t)
        });
        var n = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
        e && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), KR(n, function (e) {
            KR(du(t[e]), function (t) {
                t && (hu(t, "axisLabel"), hu(t.axisPointer, "label"))
            })
        }), KR(du(t.parallel), function (t) {
            var e = t && t.parallelAxisDefault;
            hu(e, "axisLabel"), hu(e && e.axisPointer, "label")
        }), KR(du(t.calendar), function (t) {
            lu(t, "itemStyle"), hu(t, "dayLabel"), hu(t, "monthLabel"), hu(t, "yearLabel")
        }), KR(du(t.radar), function (t) {
            hu(t, "name"), t.name && null == t.axisName && (t.axisName = t.name, delete t.name), null != t.nameGap && null == t.axisNameGap && (t.axisNameGap = t.nameGap, delete t.nameGap)
        }), KR(du(t.geo), function (t) {
            $R(t) && (cu(t), KR(du(t.regions), function (t) {
                cu(t)
            }))
        }), KR(du(t.timeline), function (t) {
            cu(t), lu(t, "label"), lu(t, "itemStyle"), lu(t, "controlStyle", !0);
            var e = t.data;
            M(e) && y(e, function (t) {
                D(t) && (lu(t, "label"), lu(t, "itemStyle"))
            })
        }), KR(du(t.toolbox), function (t) {
            lu(t, "iconStyle"), KR(t.feature, function (t) {
                lu(t, "iconStyle")
            })
        }), hu(fu(t.axisPointer), "label"), hu(fu(t.tooltip).axisPointer, "label")
    }

    function yu(t, e) {
        for (var n = e.split(","), i = t, r = 0; r < n.length && (i = i && i[n[r]], null != i); r++) ;
        return i
    }

    function vu(t, e, n, i) {
        for (var r, o = e.split(","), a = t, s = 0; s < o.length - 1; s++) r = o[s], null == a[r] && (a[r] = {}), a = a[r];
        (i || null == a[o[s]]) && (a[o[s]] = n)
    }

    function mu(t) {
        t && y(QR, function (e) {
            e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]])
        })
    }

    function xu(t) {
        var e = t && t.itemStyle;
        if (e) for (var n = 0; n < ez.length; n++) {
            var i = ez[n][1], r = ez[n][0];
            null != e[i] && (e[r] = e[i])
        }
    }

    function _u(t) {
        t && "edge" === t.alignTo && null != t.margin && null == t.edgeDistance && (t.edgeDistance = t.margin)
    }

    function bu(t) {
        t && t.downplay && !t.blur && (t.blur = t.downplay)
    }

    function wu(t) {
        t && null != t.focusNodeAdjacency && (t.emphasis = t.emphasis || {}, null == t.emphasis.focus && (t.emphasis.focus = "adjacency"))
    }

    function Su(t, e) {
        if (t) for (var n = 0; n < t.length; n++) e(t[n]), t[n] && Su(t[n].children, e)
    }

    function Mu(t, e) {
        gu(t, e), t.series = Hi(t.series), y(t.series, function (t) {
            if (D(t)) {
                var e = t.type;
                if ("line" === e) null != t.clipOverflow && (t.clip = t.clipOverflow); else if ("pie" === e || "gauge" === e) {
                    null != t.clockWise && (t.clockwise = t.clockWise), _u(t.label);
                    var n = t.data;
                    if (n && !k(n)) for (var i = 0; i < n.length; i++) _u(n[i]);
                    null != t.hoverOffset && (t.emphasis = t.emphasis || {}, (t.emphasis.scaleSize = null) && (t.emphasis.scaleSize = t.hoverOffset))
                } else if ("gauge" === e) {
                    var r = yu(t, "pointer.color");
                    null != r && vu(t, "itemStyle.color", r)
                } else if ("bar" === e) {
                    xu(t), xu(t.backgroundStyle), xu(t.emphasis);
                    var n = t.data;
                    if (n && !k(n)) for (var i = 0; i < n.length; i++) "object" == typeof n[i] && (xu(n[i]), xu(n[i] && n[i].emphasis))
                } else if ("sunburst" === e) {
                    var o = t.highlightPolicy;
                    o && (t.emphasis = t.emphasis || {}, t.emphasis.focus || (t.emphasis.focus = o)), bu(t), Su(t.data, bu)
                } else "graph" === e || "sankey" === e ? wu(t) : "map" === e && (t.mapType && !t.map && (t.map = t.mapType), t.mapLocation && c(t, t.mapLocation));
                null != t.hoverAnimation && (t.emphasis = t.emphasis || {}, t.emphasis && null == t.emphasis.scale && (t.emphasis.scale = t.hoverAnimation)), mu(t)
            }
        }), t.dataRange && (t.visualMap = t.dataRange), y(tz, function (e) {
            var n = t[e];
            n && (M(n) || (n = [n]), y(n, function (t) {
                mu(t)
            }))
        })
    }

    function Iu(t) {
        var e = Z();
        t.eachSeries(function (t) {
            var n = t.get("stack");
            if (n) {
                var i = e.get(n) || e.set(n, []), r = t.getData(), o = {
                    stackResultDimension: r.getCalculationInfo("stackResultDimension"),
                    stackedOverDimension: r.getCalculationInfo("stackedOverDimension"),
                    stackedDimension: r.getCalculationInfo("stackedDimension"),
                    stackedByDimension: r.getCalculationInfo("stackedByDimension"),
                    isStackedByIndex: r.getCalculationInfo("isStackedByIndex"),
                    data: r,
                    seriesModel: t
                };
                if (!o.stackedDimension || !o.isStackedByIndex && !o.stackedByDimension) return;
                i.length && r.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), i.push(o)
            }
        }), e.each(Tu)
    }

    function Tu(t) {
        y(t, function (e, n) {
            var i = [], r = [0 / 0, 0 / 0], o = [e.stackResultDimension, e.stackedOverDimension], a = e.data,
                s = e.isStackedByIndex, l = a.map(o, function (o, l, u) {
                    var h = a.get(e.stackedDimension, u);
                    if (isNaN(h)) return r;
                    var c, p;
                    s ? p = a.getRawIndex(u) : c = a.get(e.stackedByDimension, u);
                    for (var d = 0 / 0, f = n - 1; f >= 0; f--) {
                        var g = t[f];
                        if (s || (p = g.data.rawIndexOf(g.stackedByDimension, c)), p >= 0) {
                            var y = g.data.getByRawIndex(g.stackResultDimension, p);
                            if (h >= 0 && y > 0 || 0 >= h && 0 > y) {
                                h = Ci(h, y), d = y;
                                break
                            }
                        }
                    }
                    return i[0] = h, i[1] = d, i
                });
            a.hostModel.setData(l), e.data = l
        })
    }

    function Cu(t) {
        return t instanceof nz
    }

    function Au(t, e, n, i) {
        n = n || Pu(t);
        var r = e.seriesLayoutBy, o = Ou(t, n, r, e.sourceHeader, e.dimensions), a = new nz({
            data: t,
            sourceFormat: n,
            seriesLayoutBy: r,
            dimensionsDefine: o.dimensionsDefine,
            startIndex: o.startIndex,
            dimensionsDetectedCount: o.dimensionsDetectedCount,
            encodeDefine: ku(i),
            metaRawOption: s(e)
        });
        return a
    }

    function Du(t) {
        return new nz({data: t, sourceFormat: k(t) ? TR : wR})
    }

    function Lu(t) {
        return new nz({
            data: t.data,
            sourceFormat: t.sourceFormat,
            seriesLayoutBy: t.seriesLayoutBy,
            dimensionsDefine: s(t.dimensionsDefine),
            startIndex: t.startIndex,
            dimensionsDetectedCount: t.dimensionsDetectedCount,
            encodeDefine: ku(t.encodeDefine)
        })
    }

    function ku(t) {
        return t ? Z(t) : null
    }

    function Pu(t) {
        var e = CR;
        if (k(t)) e = TR; else if (M(t)) {
            0 === t.length && (e = SR);
            for (var n = 0, i = t.length; i > n; n++) {
                var r = t[n];
                if (null != r) {
                    if (M(r)) {
                        e = SR;
                        break
                    }
                    if (D(r)) {
                        e = MR;
                        break
                    }
                }
            }
        } else if (D(t)) for (var o in t) if (q(t, o) && g(t[o])) {
            e = IR;
            break
        }
        return e
    }

    function Ou(t, e, n, i, r) {
        var o, a;
        if (!t) return {dimensionsDefine: zu(r), startIndex: a, dimensionsDetectedCount: o};
        if (e === SR) {
            var s = t;
            "auto" === i || null == i ? Eu(function (t) {
                null != t && "-" !== t && (T(t) ? null == a && (a = 1) : a = 0)
            }, n, s, 10) : a = A(i) ? i : i ? 1 : 0, r || 1 !== a || (r = [], Eu(function (t, e) {
                r[e] = null != t ? t + "" : ""
            }, n, s, 1 / 0)), o = r ? r.length : n === DR ? s.length : s[0] ? s[0].length : null
        } else if (e === MR) r || (r = Ru(t)); else if (e === IR) r || (r = [], y(t, function (t, e) {
            r.push(e)
        })); else if (e === wR) {
            var l = Xi(t[0]);
            o = M(l) && l.length || 1
        }
        return {startIndex: a, dimensionsDefine: zu(r), dimensionsDetectedCount: o}
    }

    function Ru(t) {
        for (var e, n = 0; n < t.length && !(e = t[n++]);) ;
        if (e) {
            var i = [];
            return y(e, function (t, e) {
                i.push(e)
            }), i
        }
    }

    function zu(t) {
        if (t) {
            var e = Z();
            return v(t, function (t) {
                t = D(t) ? t : {name: t};
                var n = {name: t.name, displayName: t.displayName, type: t.type};
                if (null == n.name) return n;
                n.name += "", null == n.displayName && (n.displayName = n.name);
                var i = e.get(n.name);
                return i ? n.name += "-" + i.count++ : e.set(n.name, {count: 1}), n
            })
        }
    }

    function Eu(t, e, n, i) {
        if (e === DR) for (var r = 0; r < n.length && i > r; r++) t(n[r] ? n[r][0] : null, r); else for (var o = n[0] || [], r = 0; r < o.length && i > r; r++) t(o[r], r)
    }

    function Nu(t, e) {
        var n = oz[Fu(t, e)];
        return n
    }

    function Bu(t, e) {
        var n = sz[Fu(t, e)];
        return n
    }

    function Vu(t) {
        var e = uz[t];
        return e
    }

    function Fu(t, e) {
        return t === SR ? t + "_" + e : t
    }

    function Gu(t, e, n) {
        if (t) {
            var i = t.getRawDataItem(e);
            if (null != i) {
                var r, o, a = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(n);
                return s && (r = s.name, o = s.index), Vu(a)(i, o, r)
            }
        }
    }

    function Hu(t) {
        var e, n;
        return D(t) ? t.type && (n = t) : e = t, {markupText: e, markupFragment: n}
    }

    function Wu(t) {
        return new pz(t)
    }

    function Xu(t, e) {
        var n = e && e.type;
        if ("ordinal" === n) {
            var i = e && e.ordinalMeta;
            return i ? i.parseAndCollect(t) : t
        }
        return "time" === n && "number" != typeof t && null != t && "-" !== t && (t = +Li(t)), null == t || "" === t ? 0 / 0 : +t
    }

    function Yu(t, e) {
        var n = new yz, i = t.data, r = n.sourceFormat = t.sourceFormat, o = t.startIndex, a = "";
        t.seriesLayoutBy !== AR && Gi(a);
        var s = [], l = {}, u = t.dimensionsDefine;
        if (u) y(u, function (t, e) {
            var n = t.name, i = {index: e, name: n, displayName: t.displayName};
            if (s.push(i), null != n) {
                var r = "";
                q(l, n) && Gi(r), l[n] = i
            }
        }); else for (var h = 0; h < t.dimensionsDetectedCount; h++) s.push({index: h});
        var c = Nu(r, AR);
        e.__isBuiltIn && (n.getRawDataItem = function (t) {
            return c(i, o, s, t)
        }, n.getRawData = xA(Zu, null, t)), n.cloneRawData = xA(Uu, null, t);
        var p = Bu(r, AR);
        n.count = xA(p, null, i, o, s);
        var d = Vu(r);
        n.retrieveValue = function (t, e) {
            var n = c(i, o, s, t);
            return f(n, e)
        };
        var f = n.retrieveValueFromItem = function (t, e) {
            if (null != t) {
                var n = s[e];
                return n ? d(t, e, n.name) : void 0
            }
        };
        return n.getDimensionInfo = xA(ju, null, s, l), n.cloneAllDimensionInfo = xA(qu, null, s), n
    }

    function Zu(t) {
        var e = t.sourceFormat;
        if (!Qu(e)) {
            var n = "";
            Gi(n)
        }
        return t.data
    }

    function Uu(t) {
        var e = t.sourceFormat, n = t.data;
        if (!Qu(e)) {
            var i = "";
            Gi(i)
        }
        if (e === SR) {
            for (var r = [], o = 0, a = n.length; a > o; o++) r.push(n[o].slice());
            return r
        }
        if (e === MR) {
            for (var r = [], o = 0, a = n.length; a > o; o++) r.push(h({}, n[o]));
            return r
        }
    }

    function ju(t, e, n) {
        return null != n ? "number" == typeof n || !isNaN(n) && !q(e, n) ? t[n] : q(e, n) ? e[n] : void 0 : void 0
    }

    function qu(t) {
        return s(t)
    }

    function Ku(t) {
        t = s(t);
        var e = t.type, n = "";
        e || Gi(n);
        var i = e.split(":");
        2 !== i.length && Gi(n);
        var r = !1;
        "echartsAll" === i[0] && (e = i[1], r = !0), t.__isBuiltIn = r, vz.set(e, t)
    }

    function $u(t, e, n) {
        var i = Hi(t), r = i.length, o = "";
        r || Gi(o);
        for (var a = 0, s = r; s > a; a++) {
            var l = i[a];
            e = Ju(l, e, n, 1 === r ? null : a), a !== s - 1 && (e.length = Math.max(e.length, 1))
        }
        return e
    }

    function Ju(t, e) {
        var n = "";
        e.length || Gi(n), D(t) || Gi(n);
        var i = t.type, r = vz.get(i);
        r || Gi(n);
        var o = v(e, function (t) {
            return Yu(t, r)
        }), a = Hi(r.transform({upstream: o[0], upstreamList: o, config: s(t.config)}));
        return v(a, function (t, n) {
            var i = "";
            D(t) || Gi(i), t.data || Gi(i);
            var r = Pu(t.data);
            Qu(r) || Gi(i);
            var o, a = e[0];
            if (a && 0 === n && !t.dimensions) {
                var s = a.startIndex;
                s && (t.data = a.data.slice(0, s).concat(t.data)), o = {
                    seriesLayoutBy: AR,
                    sourceHeader: s,
                    dimensions: a.metaRawOption.dimensions
                }
            } else o = {seriesLayoutBy: AR, sourceHeader: 0, dimensions: t.dimensions};
            return Au(t.data, o, null, null)
        })
    }

    function Qu(t) {
        return t === SR || t === MR
    }

    function th(t) {
        var e = t.option.transform;
        e && X(t.option.transform)
    }

    function eh(t) {
        return "series" === t.mainType
    }

    function nh(t) {
        throw new Error(t)
    }

    function ih(t, e) {
        var n = t.color || "#6e7079", i = t.fontSize || 12, r = t.fontWeight || "400", o = t.color || "#464646",
            a = t.fontSize || 14, s = t.fontWeight || "900";
        return "html" === e ? {
            nameStyle: "font-size:" + _l(i + "") + "px;color:" + _l(n) + ";font-weight:" + _l(r + ""),
            valueStyle: "font-size:" + _l(a + "") + "px;color:" + _l(o) + ";font-weight:" + _l(s + "")
        } : {nameStyle: {fontSize: i, fill: n, fontWeight: r}, valueStyle: {fontSize: a, fill: o, fontWeight: s}}
    }

    function rh(t, e) {
        return e.type = t, e
    }

    function oh(t) {
        return q(wz, t.type) && wz[t.type]
    }

    function ah(t, e, n, i) {
        var r = [], o = e.blocks || [];
        H(!o || M(o)), o = o || [];
        var a = t.orderMode;
        if (e.sortBlocks && a) {
            o = o.slice();
            var s = {valueAsc: "asc", valueDesc: "desc"};
            if (q(s, a)) {
                var l = new gz(s[a], null);
                o.sort(function (t, e) {
                    return l.evaluate(t.sortParam, e.sortParam)
                })
            } else "seriesDesc" === a && o.reverse()
        }
        var u = lh(e);
        return y(o, function (e, n) {
            var o = oh(e).build(t, e, n > 0 ? u.html : 0, i);
            null != o && r.push(o)
        }), r.length ? "richText" === t.renderMode ? r.join(u.richText) : uh(r.join(""), n) : void 0
    }

    function sh(t, e, n, i, r, o) {
        if (t) {
            var a = oh(t);
            a.planLayout(t);
            var s = {useUTC: r, renderMode: n, orderMode: i, markupStyleCreator: e};
            return a.build(s, t, 0, o)
        }
    }

    function lh(t) {
        var e = t.__gapLevelBetweenSubBlocks;
        return {html: _z[e], richText: bz[e]}
    }

    function uh(t, e) {
        var n = '<div style="clear:both"></div>', i = "margin: " + e + "px 0 0";
        return '<div style="' + i + ";" + xz + ';">' + t + n + "</div>"
    }

    function hh(t, e, n) {
        var i = e ? "margin-left:2px" : "";
        return '<span style="' + n + ";" + i + '">' + _l(t) + "</span>"
    }

    function ch(t, e, n, i) {
        var r = n ? "10px" : "20px", o = e ? "float:right;margin-left:" + r : "";
        return '<span style="' + o + ";" + i + '">' + v(t, function (t) {
            return _l(t)
        }).join("&nbsp;&nbsp;") + "</span>"
    }

    function ph(t, e, n) {
        return t.markupStyleCreator.wrapRichTextStyle(e, n)
    }

    function dh(t, e, n, i, r) {
        var o = [r], a = i ? 10 : 20;
        return n && o.push({
            padding: [0, 0, 0, a],
            align: "right"
        }), t.markupStyleCreator.wrapRichTextStyle(e.join("  "), o)
    }

    function fh(t, e) {
        var n = t.getData().getItemVisual(e, "style"), i = n[t.visualDrawType];
        return Cl(i)
    }

    function gh(t, e) {
        var n = t.get("padding");
        return null != n ? n : "richText" === e ? [8, 10] : 10
    }

    function yh(t) {
        var e, n, i, r, o = t.series, a = t.dataIndex, s = t.multipleSeries, l = o.getData(),
            u = l.mapDimensionsAll("defaultedTooltip"), h = u.length, c = o.getRawValue(a), p = M(c), d = fh(o, a);
        if (h > 1 || p && !h) {
            var f = vh(c, o, a, u, d);
            e = f.inlineValues, n = f.inlineValueTypes, i = f.blocks, r = f.inlineValues[0]
        } else if (h) {
            var g = l.getDimensionInfo(u[0]);
            r = e = Gu(l, a, u[0]), n = g.type
        } else r = e = p ? c[0] : c;
        var y = nr(o), v = y && o.name || "", m = l.getName(a), x = s ? v : m;
        return rh("section", {
            header: v,
            noHeader: s || !y,
            sortParam: r,
            blocks: [rh("nameValue", {
                markerType: "item",
                markerColor: d,
                name: x,
                noName: !W(x),
                value: e,
                valueType: n
            })].concat(i || [])
        })
    }

    function vh(t, e, n, i, r) {
        function o(t, e) {
            var n = a.getDimensionInfo(e);
            n && n.otherDims.tooltip !== !1 && (s ? h.push(rh("nameValue", {
                markerType: "subItem",
                markerColor: r,
                name: n.displayName,
                value: t,
                valueType: n.type
            })) : (l.push(t), u.push(n.type)))
        }

        var a = e.getData(), s = m(t, function (t, e, n) {
            var i = a.getDimensionInfo(n);
            return t = t || i && i.tooltip !== !1 && null != i.displayName
        }, !1), l = [], u = [], h = [];
        return i.length ? y(i, function (t) {
            o(Gu(a, n, t), t)
        }) : y(t, o), {inlineValues: l, inlineValueTypes: u, blocks: h}
    }

    function mh(t, e) {
        return t.getName(e) || t.getId(e)
    }

    function xh(t) {
        var e = t.name;
        nr(t) || (t.name = _h(t) || e)
    }

    function _h(t) {
        var e = t.getRawData(), n = e.mapDimensionsAll("seriesName"), i = [];
        return y(n, function (t) {
            var n = e.getDimensionInfo(t);
            n.displayName && i.push(n.displayName)
        }), i.join(" ")
    }

    function bh(t) {
        return t.model.getRawData().count()
    }

    function wh(t) {
        var e = t.model;
        return e.setData(e.getRawData().cloneShallow()), Sh
    }

    function Sh(t, e) {
        e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData)
    }

    function Mh(t, e) {
        y(n(t.CHANGABLE_METHODS, t.DOWNSAMPLE_METHODS), function (n) {
            t.wrapMethod(n, S(Ih, e))
        })
    }

    function Ih(t, e) {
        var n = Th(t);
        return n && n.setOutputEnd((e || this).count()), e
    }

    function Th(t) {
        var e = (t.ecModel || {}).scheduler, n = e && e.getPipeline(t.uid);
        if (n) {
            var i = n.currentTask;
            if (i) {
                var r = i.agentStubMap;
                r && (i = r.get(t.uid))
            }
            return i
        }
    }

    function Ch() {
        var t = ur();
        return function (e) {
            var n = t(e), i = e.pipelineContext, r = !!n.large, o = !!n.progressiveRender,
                a = n.large = !(!i || !i.large), s = n.progressiveRender = !(!i || !i.progressiveRender);
            return !(r === a && o === s) && "reset"
        }
    }

    function Ah(t, e, n) {
        t && ("emphasis" === e ? aa : sa)(t, n)
    }

    function Dh(t, e, n) {
        var i = lr(t, e), r = e && null != e.highlightKey ? Da(e.highlightKey) : null;
        null != i ? y(Hi(i), function (e) {
            Ah(t.getItemGraphicEl(e), n, r)
        }) : t.eachItemGraphicEl(function (t) {
            Ah(t, n, r)
        })
    }

    function Lh(t) {
        return Az(t.model)
    }

    function kh(t) {
        var e = t.model, n = t.ecModel, i = t.api, r = t.payload, o = e.pipelineContext.progressiveRender, a = t.view,
            s = r && Cz(r).updateMethod, l = o ? "incrementalPrepareRender" : s && a[s] ? s : "render";
        return "render" !== l && a[l](e, n, i, r), kz[l]
    }

    function Ph(t, e, n) {
        function i() {
            h = (new Date).getTime(), c = null, t.apply(a, s || [])
        }

        var r, o, a, s, l, u = 0, h = 0, c = null;
        e = e || 0;
        var p = function () {
            for (var t = [], p = 0; p < arguments.length; p++) t[p] = arguments[p];
            r = (new Date).getTime(), a = this, s = t;
            var d = l || e, f = l || n;
            l = null, o = r - (f ? u : h) - d, clearTimeout(c), f ? c = setTimeout(i, d) : o >= 0 ? i() : c = setTimeout(i, -o), u = r
        };
        return p.clear = function () {
            c && (clearTimeout(c), c = null)
        }, p.debounceNextCall = function (t) {
            l = t
        }, p
    }

    function Oh(t, e, n, i) {
        var r = t[e];
        if (r) {
            var o = r[Pz] || r, a = r[Rz], s = r[Oz];
            if (s !== n || a !== i) {
                if (null == n || !i) return t[e] = o;
                r = t[e] = Ph(o, n, "debounce" === i), r[Pz] = o, r[Rz] = i, r[Oz] = n
            }
            return r
        }
    }

    function Rh(t, e) {
        var n = t[e];
        n && n[Pz] && (t[e] = n[Pz])
    }

    function zh(t, e) {
        var n = t.visualStyleMapper || Ez[e];
        return n ? n : (console.warn("Unkown style type '" + e + "'."), Ez.itemStyle)
    }

    function Eh(t, e) {
        var n = t.visualDrawType || Nz[e];
        return n ? n : (console.warn("Unkown style type '" + e + "'."), "fill")
    }

    function Nh(t, e) {
        e = e || {}, c(e, {
            text: "loading",
            textColor: "#000",
            fontSize: 12,
            fontWeight: "normal",
            fontStyle: "normal",
            fontFamily: "sans-serif",
            maskColor: "rgba(255, 255, 255, 0.8)",
            showSpinner: !0,
            color: "#5470c6",
            spinnerRadius: 10,
            lineWidth: 5,
            zlevel: 0
        });
        var n = new sL, i = new Uk({style: {fill: e.maskColor}, zlevel: e.zlevel, z: 1e4});
        n.add(i);
        var r = new $k({
            style: {
                text: e.text,
                fill: e.textColor,
                fontSize: e.fontSize,
                fontWeight: e.fontWeight,
                fontStyle: e.fontStyle,
                fontFamily: e.fontFamily
            }, zlevel: e.zlevel, z: 10001
        }), o = new Uk({
            style: {fill: "none"},
            textContent: r,
            textConfig: {position: "right", distance: 10},
            zlevel: e.zlevel,
            z: 10001
        });
        n.add(o);
        var a;
        return e.showSpinner && (a = new aO({
            shape: {startAngle: -Hz / 2, endAngle: -Hz / 2 + .1, r: e.spinnerRadius},
            style: {stroke: e.color, lineCap: "round", lineWidth: e.lineWidth},
            zlevel: e.zlevel,
            z: 10001
        }), a.animateShape(!0).when(1e3, {endAngle: 3 * Hz / 2}).start("circularInOut"), a.animateShape(!0).when(1e3, {startAngle: 3 * Hz / 2}).delay(300).start("circularInOut"), n.add(a)), n.resize = function () {
            var n = r.getBoundingRect().width, s = e.showSpinner ? e.spinnerRadius : 0,
                l = (t.getWidth() - 2 * s - (e.showSpinner && n ? 10 : 0) - n) / 2 - (e.showSpinner && n ? 0 : 5 + n / 2) + (e.showSpinner ? 0 : n / 2) + (n ? 0 : s),
                u = t.getHeight() / 2;
            e.showSpinner && a.setShape({cx: l, cy: u}), o.setShape({
                x: l - s,
                y: u - s,
                width: 2 * s,
                height: 2 * s
            }), i.setShape({x: 0, y: 0, width: t.getWidth(), height: t.getHeight()})
        }, n.resize(), n
    }

    function Bh(t) {
        t.overallReset(t.ecModel, t.api, t.payload)
    }

    function Vh(t) {
        return t.overallProgress && Fh
    }

    function Fh() {
        this.agent.dirty(), this.getDownstream().dirty()
    }

    function Gh() {
        this.agent && this.agent.dirty()
    }

    function Hh(t) {
        return t.plan ? t.plan(t.model, t.ecModel, t.api, t.payload) : null
    }

    function Wh(t) {
        t.useClearVisual && t.data.clearAllVisual();
        var e = t.resetDefines = Hi(t.reset(t.model, t.ecModel, t.api, t.payload));
        return e.length > 1 ? v(e, function (t, e) {
            return Xh(e)
        }) : Xz
    }

    function Xh(t) {
        return function (e, n) {
            var i = n.data, r = n.resetDefines[t];
            if (r && r.dataEach) for (var o = e.start; o < e.end; o++) r.dataEach(i, o); else r && r.progress && r.progress(e, i)
        }
    }

    function Yh(t) {
        return t.data.count()
    }

    function Zh(t) {
        Lz = null;
        try {
            t(Yz, Zz)
        } catch (e) {
        }
        return Lz
    }

    function Uh(t, e) {
        for (var n in e.prototype) t[n] = K
    }

    function jh(t, e, n) {
        switch (n) {
            case"color":
                var i = t.getItemVisual(e, "style");
                return i[t.getVisual("drawType")];
            case"opacity":
                return t.getItemVisual(e, "style").opacity;
            case"symbol":
            case"symbolSize":
            case"liftZ":
                return t.getItemVisual(e, n)
        }
    }

    function qh(t, e) {
        switch (e) {
            case"color":
                var n = t.getVisual("style");
                return n[t.getVisual("drawType")];
            case"opacity":
                return t.getVisual("style").opacity;
            case"symbol":
            case"symbolSize":
            case"liftZ":
                return t.getVisual(e)
        }
    }

    function Kh(t, e, n, i) {
        switch (n) {
            case"color":
                var r = t.ensureUniqueItemVisual(e, "style");
                r[t.getVisual("drawType")] = i, t.setItemVisual(e, "colorFromPalette", !1);
                break;
            case"opacity":
                t.ensureUniqueItemVisual(e, "style").opacity = i;
                break;
            case"symbol":
            case"symbolSize":
            case"liftZ":
                t.setItemVisual(e, n, i)
        }
    }

    function $h(t, e, n, i, r) {
        var o = n.width, a = n.height;
        switch (t) {
            case"top":
                i.set(n.x + o / 2, n.y - e), r.set(0, -1);
                break;
            case"bottom":
                i.set(n.x + o / 2, n.y + a + e), r.set(0, 1);
                break;
            case"left":
                i.set(n.x - e, n.y + a / 2), r.set(-1, 0);
                break;
            case"right":
                i.set(n.x + o + e, n.y + a / 2), r.set(1, 0)
        }
    }

    function Jh(t, e, n, i, r, o, a, s, l) {
        a -= t, s -= e;
        var u = Math.sqrt(a * a + s * s);
        a /= u, s /= u;
        var h = a * n + t, c = s * n + e;
        if (Math.abs(i - r) % iE < 1e-4) return l[0] = h, l[1] = c, u - n;
        if (o) {
            var p = i;
            i = vo(r), r = vo(p)
        } else i = vo(i), r = vo(r);
        i > r && (r += iE);
        var d = Math.atan2(s, a);
        if (0 > d && (d += iE), d >= i && r >= d || d + iE >= i && r >= d + iE) return l[0] = h, l[1] = c, u - n;
        var f = n * Math.cos(i) + t, g = n * Math.sin(i) + e, y = n * Math.cos(r) + t, v = n * Math.sin(r) + e,
            m = (f - a) * (f - a) + (g - s) * (g - s), x = (y - a) * (y - a) + (v - s) * (v - s);
        return x > m ? (l[0] = f, l[1] = g, Math.sqrt(m)) : (l[0] = y, l[1] = v, Math.sqrt(x))
    }

    function Qh(t, e, n, i, r, o, a, s) {
        var l = r - t, u = o - e, h = n - t, c = i - e, p = Math.sqrt(h * h + c * c);
        h /= p, c /= p;
        var d = l * h + u * c, f = d / p;
        s && (f = Math.min(Math.max(f, 0), 1)), f *= p;
        var g = a[0] = t + f * h, y = a[1] = e + f * c;
        return Math.sqrt((g - r) * (g - r) + (y - o) * (y - o))
    }

    function tc(t, e, n, i, r, o, a) {
        0 > n && (t += n, n = -n), 0 > i && (e += i, i = -i);
        var s = t + n, l = e + i, u = a[0] = Math.min(Math.max(r, t), s), h = a[1] = Math.min(Math.max(o, e), l);
        return Math.sqrt((u - r) * (u - r) + (h - o) * (h - o))
    }

    function ec(t, e, n) {
        var i = tc(e.x, e.y, e.width, e.height, t.x, t.y, aE);
        return n.set(aE[0], aE[1]), i
    }

    function nc(t, e, n) {
        for (var i, r, o = 0, a = 0, s = 0, l = 0, u = 1 / 0, h = e.data, c = t.x, p = t.y, d = 0; d < h.length;) {
            var f = h[d++];
            1 === d && (o = h[d], a = h[d + 1], s = o, l = a);
            var g = u;
            switch (f) {
                case rE.M:
                    s = h[d++], l = h[d++], o = s, a = l;
                    break;
                case rE.L:
                    g = Qh(o, a, h[d], h[d + 1], c, p, aE, !0), o = h[d++], a = h[d++];
                    break;
                case rE.C:
                    g = $r(o, a, h[d++], h[d++], h[d++], h[d++], h[d], h[d + 1], c, p, aE), o = h[d++], a = h[d++];
                    break;
                case rE.Q:
                    g = ro(o, a, h[d++], h[d++], h[d], h[d + 1], c, p, aE), o = h[d++], a = h[d++];
                    break;
                case rE.A:
                    var y = h[d++], v = h[d++], m = h[d++], x = h[d++], _ = h[d++], b = h[d++];
                    d += 1;
                    var w = !!(1 - h[d++]);
                    i = Math.cos(_) * m + y, r = Math.sin(_) * x + v, 1 >= d && (s = i, l = r);
                    var S = (c - y) * x / m + y;
                    g = Jh(y, v, x, _, _ + b, w, S, p, aE), o = Math.cos(_ + b) * m + y, a = Math.sin(_ + b) * x + v;
                    break;
                case rE.R:
                    s = o = h[d++], l = a = h[d++];
                    var M = h[d++], I = h[d++];
                    g = tc(s, l, M, I, c, p, aE);
                    break;
                case rE.Z:
                    g = Qh(o, a, s, l, c, p, aE, !0), o = s, a = l
            }
            u > g && (u = g, n.set(aE[0], aE[1]))
        }
        return u
    }

    function ic(t, e) {
        if (t) {
            var n = t.getTextGuideLine(), i = t.getTextContent();
            if (i && n) {
                var r = t.textGuideLineConfig || {}, o = [[0, 0], [0, 0], [0, 0]], a = r.candidates || oE,
                    s = i.getBoundingRect().clone();
                s.applyTransform(i.getComputedTransform());
                var l = 1 / 0, u = r.anchor, h = t.getComputedTransform(), c = h && jn([], h),
                    p = e.get("length2") || 0;
                u && uE.copy(u);
                for (var d = 0; d < a.length; d++) {
                    var f = a[d];
                    $h(f, 0, s, sE, hE), HD.scaleAndAdd(lE, sE, hE, p), lE.transform(c);
                    var g = t.getBoundingRect(),
                        y = u ? u.distance(lE) : t instanceof Bk ? nc(lE, t.path, uE) : ec(lE, g, uE);
                    l > y && (l = y, lE.transform(h), uE.transform(h), uE.toArray(o[0]), lE.toArray(o[1]), sE.toArray(o[2]))
                }
                rc(o, e.get("minTurnAngle")), n.setShape({points: o})
            }
        }
    }

    function rc(t, e) {
        if (180 >= e && e > 0) {
            e = e / 180 * Math.PI, sE.fromArray(t[0]), lE.fromArray(t[1]), uE.fromArray(t[2]), HD.sub(hE, sE, lE), HD.sub(cE, uE, lE);
            var n = hE.len(), i = cE.len();
            if (!(.001 > n || .001 > i)) {
                hE.scale(1 / n), cE.scale(1 / i);
                var r = hE.dot(cE), o = Math.cos(e);
                if (r > o) {
                    var a = Qh(lE.x, lE.y, uE.x, uE.y, sE.x, sE.y, pE, !1);
                    dE.fromArray(pE), dE.scaleAndAdd(cE, a / Math.tan(Math.PI - e));
                    var s = uE.x !== lE.x ? (dE.x - lE.x) / (uE.x - lE.x) : (dE.y - lE.y) / (uE.y - lE.y);
                    if (isNaN(s)) return;
                    0 > s ? HD.copy(dE, lE) : s > 1 && HD.copy(dE, uE), dE.toArray(t[1])
                }
            }
        }
    }

    function oc(t, e, n) {
        if (180 >= n && n > 0) {
            n = n / 180 * Math.PI, sE.fromArray(t[0]), lE.fromArray(t[1]), uE.fromArray(t[2]), HD.sub(hE, lE, sE), HD.sub(cE, uE, lE);
            var i = hE.len(), r = cE.len();
            if (!(.001 > i || .001 > r)) {
                hE.scale(1 / i), cE.scale(1 / r);
                var o = hE.dot(e), a = Math.cos(n);
                if (a > o) {
                    var s = Qh(lE.x, lE.y, uE.x, uE.y, sE.x, sE.y, pE, !1);
                    dE.fromArray(pE);
                    var l = Math.PI / 2, u = Math.acos(cE.dot(e)), h = l + u - n;
                    if (h >= l) HD.copy(dE, uE); else {
                        dE.scaleAndAdd(cE, s / Math.tan(Math.PI / 2 - h));
                        var c = uE.x !== lE.x ? (dE.x - lE.x) / (uE.x - lE.x) : (dE.y - lE.y) / (uE.y - lE.y);
                        if (isNaN(c)) return;
                        0 > c ? HD.copy(dE, lE) : c > 1 && HD.copy(dE, uE)
                    }
                    dE.toArray(t[1])
                }
            }
        }
    }

    function ac(t, e, n, i) {
        var r = "normal" === n, o = r ? t : t.ensureState(n);
        o.ignore = e;
        var a = i.get("smooth");
        a && a === !0 && (a = .3), o.shape = o.shape || {}, a > 0 && (o.shape.smooth = a);
        var s = i.getModel("lineStyle").getLineStyle();
        r ? t.useStyle(s) : o.style = s
    }

    function sc(t, e) {
        var n = e.smooth, i = e.points;
        if (i) if (t.moveTo(i[0][0], i[0][1]), n > 0 && i.length >= 3) {
            var r = IA(i[0], i[1]), o = IA(i[1], i[2]);
            if (!r || !o) return t.lineTo(i[1][0], i[1][1]), void t.lineTo(i[2][0], i[2][1]);
            var a = Math.min(r, o) * n, s = fe([], i[1], i[0], a / r), l = fe([], i[1], i[2], a / o),
                u = fe([], s, l, .5);
            t.bezierCurveTo(s[0], s[1], s[0], s[1], u[0], u[1]), t.bezierCurveTo(l[0], l[1], l[0], l[1], i[2][0], i[2][1])
        } else for (var h = 1; h < i.length; h++) t.lineTo(i[h][0], i[h][1])
    }

    function lc(t, e, n) {
        var i = t.getTextGuideLine(), r = t.getTextContent();
        if (!r) return void (i && t.removeTextGuideLine());
        for (var o = e.normal, a = o.get("show"), s = r.ignore, l = 0; l < lP.length; l++) {
            var u = lP[l], h = e[u], p = "normal" === u;
            if (h) {
                var d = h.get("show"), f = p ? s : B(r.states[u] && r.states[u].ignore, s);
                if (f || !B(d, a)) {
                    var g = p ? i : i && i.states.normal;
                    g && (g.ignore = !0);
                    continue
                }
                i || (i = new JP, t.setTextGuideLine(i), p || !s && a || ac(i, !0, "normal", e.normal), t.stateProxy && (i.stateProxy = t.stateProxy)), ac(i, !1, u, h)
            }
        }
        if (i) {
            c(i.style, n), i.style.fill = null;
            var y = o.get("showAbove"), v = t.textGuideLineConfig = t.textGuideLineConfig || {};
            v.showAbove = y || !1, i.buildPath = sc
        }
    }

    function uc(t, e) {
        e = e || "labelLine";
        for (var n = {normal: t.getModel(e)}, i = 0; i < sP.length; i++) {
            var r = sP[i];
            n[r] = t.getModel([r, e])
        }
        return n
    }

    function hc(t) {
        for (var e = [], n = 0; n < t.length; n++) {
            var i = t[n];
            if (!i.defaultAttr.ignore) {
                var r = i.label, o = r.getComputedTransform(), a = r.getBoundingRect(),
                    s = !o || o[1] < 1e-5 && o[2] < 1e-5, l = r.style.margin || 0, u = a.clone();
                u.applyTransform(o), u.x -= l / 2, u.y -= l / 2, u.width += l, u.height += l;
                var h = s ? new gO(a, o) : null;
                e.push({
                    label: r,
                    labelLine: i.labelLine,
                    rect: u,
                    localRect: a,
                    obb: h,
                    priority: i.priority,
                    defaultAttr: i.defaultAttr,
                    layoutOption: i.computedLayoutOption,
                    axisAligned: s,
                    transform: o
                })
            }
        }
        return e
    }

    function cc(t, e, n, i, r, o) {
        function a() {
            b = S.rect[e] - i, w = r - M.rect[e] - M.rect[n]
        }

        function s(t, e, n) {
            if (0 > t) {
                var i = Math.min(e, -t);
                if (i > 0) {
                    l(i * n, 0, c);
                    var r = i + t;
                    0 > r && u(-r * n, 1)
                } else u(-t * n, 1)
            }
        }

        function l(n, i, r) {
            0 !== n && (f = !0);
            for (var o = i; r > o; o++) {
                var a = t[o], s = a.rect;
                s[e] += n, a.label[e] += n
            }
        }

        function u(i, r) {
            for (var o = [], a = 0, s = 1; c > s; s++) {
                var u = t[s - 1].rect, h = Math.max(t[s].rect[e] - u[e] - u[n], 0);
                o.push(h), a += h
            }
            if (a) {
                var p = Math.min(Math.abs(i) / a, r);
                if (i > 0) for (var s = 0; c - 1 > s; s++) {
                    var d = o[s] * p;
                    l(d, 0, s + 1)
                } else for (var s = c - 1; s > 0; s--) {
                    var d = o[s - 1] * p;
                    l(-d, s, c)
                }
            }
        }

        function h(t) {
            var e = 0 > t ? -1 : 1;
            t = Math.abs(t);
            for (var n = Math.ceil(t / (c - 1)), i = 0; c - 1 > i; i++) if (e > 0 ? l(n, 0, i + 1) : l(-n, c - i - 1, c), t -= n, 0 >= t) return
        }

        var c = t.length;
        if (!(2 > c)) {
            t.sort(function (t, n) {
                return t.rect[e] - n.rect[e]
            });
            for (var p, d = 0, f = !1, g = [], y = 0, v = 0; c > v; v++) {
                var m = t[v], x = m.rect;
                p = x[e] - d, 0 > p && (x[e] -= p, m.label[e] -= p, f = !0);
                var _ = Math.max(-p, 0);
                g.push(_), y += _, d = x[e] + x[n]
            }
            y > 0 && o && l(-y / c, 0, c);
            var b, w, S = t[0], M = t[c - 1];
            return a(), 0 > b && u(-b, .8), 0 > w && u(w, .8), a(), s(b, w, 1), s(w, b, -1), a(), 0 > b && h(-b), 0 > w && h(w), f
        }
    }

    function pc(t, e, n, i) {
        return cc(t, "x", "width", e, n, i)
    }

    function dc(t, e, n, i) {
        return cc(t, "y", "height", e, n, i)
    }

    function fc(t) {
        function e(t) {
            if (!t.ignore) {
                var e = t.ensureState("emphasis");
                null == e.ignore && (e.ignore = !1)
            }
            t.ignore = !0
        }

        var n = [];
        t.sort(function (t, e) {
            return e.priority - t.priority
        });
        for (var i = new $D(0, 0, 0, 0), r = 0; r < t.length; r++) {
            var o = t[r], a = o.axisAligned, s = o.localRect, l = o.transform, u = o.label, h = o.labelLine;
            i.copy(o.rect), i.width -= .1, i.height -= .1, i.x += .05, i.y += .05;
            for (var c = o.obb, p = !1, d = 0; d < n.length; d++) {
                var f = n[d];
                if (i.intersect(f.rect)) {
                    if (a && f.axisAligned) {
                        p = !0;
                        break
                    }
                    if (f.obb || (f.obb = new gO(f.localRect, f.transform)), c || (c = new gO(s, l)), c.intersect(f.obb)) {
                        p = !0;
                        break
                    }
                }
            }
            p ? (e(u), h && e(h)) : (u.attr("ignore", o.defaultAttr.ignore), h && h.attr("ignore", o.defaultAttr.labelGuideIgnore), n.push(o))
        }
    }

    function gc(t) {
        if (t) {
            for (var e = [], n = 0; n < t.length; n++) e.push(t[n].slice());
            return e
        }
    }

    function yc(t, e) {
        var n = t.label, i = e && e.getTextGuideLine();
        return {
            dataIndex: t.dataIndex,
            dataType: t.dataType,
            seriesIndex: t.seriesModel.seriesIndex,
            text: t.label.style.text,
            rect: t.hostRect,
            labelRect: t.rect,
            align: n.style.align,
            verticalAlign: n.style.verticalAlign,
            labelLinePoints: gc(i && i.shape.points)
        }
    }

    function vc(t, e, n) {
        for (var i = 0; i < n.length; i++) {
            var r = n[i];
            null != e[r] && (t[r] = e[r])
        }
    }

    function mc(t, e) {
        function n(e, n) {
            var i = [];
            return e.eachComponent({mainType: "series", subType: t, query: n}, function (t) {
                i.push(t.seriesIndex)
            }), i
        }

        y([[t + "ToggleSelect", "toggleSelect"], [t + "Select", "select"], [t + "UnSelect", "unselect"]], function (t) {
            e(t[0], function (e, i, r) {
                e = h({}, e), r.dispatchAction(h(e, {type: t[1], seriesIndex: n(i, e)}))
            })
        })
    }

    function xc(t, e, n, i, r) {
        var o = t + e;
        n.isSilent(o) || i.eachComponent({mainType: "series", subType: "pie"}, function (t) {
            for (var e = t.seriesIndex, i = r.selected, a = 0; a < i.length; a++) if (i[a].seriesIndex === e) {
                var s = t.getData(), l = lr(s, r.fromActionPayload);
                n.trigger(o, {
                    type: o,
                    seriesId: t.id,
                    name: s.getName(M(l) ? l[0] : l),
                    selected: h({}, t.option.selectedMap)
                })
            }
        })
    }

    function _c(t, e, n) {
        t.on("selectchanged", function (t) {
            var i = n.getModel();
            t.isFromClick ? (xc("map", "selectchanged", e, i, t), xc("pie", "selectchanged", e, i, t)) : "select" === t.fromAction ? (xc("map", "selected", e, i, t), xc("pie", "selected", e, i, t)) : "unselect" === t.fromAction && (xc("map", "unselected", e, i, t), xc("pie", "unselected", e, i, t))
        })
    }

    function bc(t, e, n) {
        for (var i; t && (!e(t) || (i = t, !n));) t = t.__hostTarget || t.parent;
        return i
    }

    function wc(t, e) {
        if ("image" !== this.type) {
            var n = this.style;
            this.__isEmptyBrush ? (n.stroke = t, n.fill = e || "#fff", n.lineWidth = 2) : "line" === this.shape.symbolType ? n.stroke = t : n.fill = t, this.markRedraw()
        }
    }

    function Sc(t, e, n, i, r, o, a) {
        var s = 0 === t.indexOf("empty");
        s && (t = t.substr(5, 1).toLowerCase() + t.substr(6));
        var l;
        return l = 0 === t.indexOf("image://") ? is(t.slice(8), new $D(e, n, i, r), a ? "center" : "cover") : 0 === t.indexOf("path://") ? ns(t.slice(7), {}, new $D(e, n, i, r), a ? "center" : "cover") : new LE({
            shape: {
                symbolType: t,
                x: e,
                y: n,
                width: i,
                height: r
            }
        }), l.__isEmptyBrush = s, l.setColor = wc, o && l.setColor(o), l
    }

    function Mc(t, e, n) {
        var i = null == e.x ? 0 : e.x, r = null == e.x2 ? 1 : e.x2, o = null == e.y ? 0 : e.y,
            a = null == e.y2 ? 0 : e.y2;
        e.global || (i = i * n.width + n.x, r = r * n.width + n.x, o = o * n.height + n.y, a = a * n.height + n.y), i = isNaN(i) ? 0 : i, r = isNaN(r) ? 1 : r, o = isNaN(o) ? 0 : o, a = isNaN(a) ? 0 : a;
        var s = t.createLinearGradient(i, o, r, a);
        return s
    }

    function Ic(t, e, n) {
        var i = n.width, r = n.height, o = Math.min(i, r), a = null == e.x ? .5 : e.x, s = null == e.y ? .5 : e.y,
            l = null == e.r ? .5 : e.r;
        e.global || (a = a * i + n.x, s = s * r + n.y, l *= o);
        var u = t.createRadialGradient(a, s, 0, a, s, l);
        return u
    }

    function Tc(t, e, n) {
        for (var i = "radial" === e.type ? Ic(t, e, n) : Mc(t, e, n), r = e.colorStops, o = 0; o < r.length; o++) i.addColorStop(r[o].offset, r[o].color);
        return i
    }

    function Cc(t, e) {
        if (t === e || !t && !e) return !1;
        if (!t || !e || t.length !== e.length) return !0;
        for (var n = 0; n < t.length; n++) if (t[n] !== e[n]) return !0;
        return !1
    }

    function Ac(t, e) {
        return t && "solid" !== t && e > 0 ? (e = e || 1, "dashed" === t ? [4 * e, 2 * e] : "dotted" === t ? [e] : A(t) ? [t] : M(t) ? t : null) : null
    }

    function Dc(t) {
        var e = t.stroke;
        return !(null == e || "none" === e || !(t.lineWidth > 0))
    }

    function Lc(t) {
        var e = t.fill;
        return null != e && "none" !== e
    }

    function kc(t, e) {
        if (null != e.fillOpacity && 1 !== e.fillOpacity) {
            var n = t.globalAlpha;
            t.globalAlpha = e.fillOpacity * e.opacity, t.fill(), t.globalAlpha = n
        } else t.fill()
    }

    function Pc(t, e) {
        if (null != e.strokeOpacity && 1 !== e.strokeOpacity) {
            var n = t.globalAlpha;
            t.globalAlpha = e.strokeOpacity * e.opacity, t.stroke(), t.globalAlpha = n
        } else t.stroke()
    }

    function Oc(t, e, n) {
        var i = Lr(e.image, e.__image, n);
        if (Pr(i)) {
            var r = t.createPattern(i, e.repeat || "repeat");
            if ("function" == typeof DOMMatrix && r.setTransform) {
                var o = new DOMMatrix;
                o.rotateSelf(0, 0, (e.rotation || 0) / Math.PI * 180), o.scaleSelf(e.scaleX || 1, e.scaleY || 1), o.translateSelf(e.x || 0, e.y || 0), r.setTransform(o)
            }
            return r
        }
    }

    function Rc(t, e, n, i) {
        var r = Dc(n), o = Lc(n), a = n.strokePercent, s = 1 > a, l = !e.path;
        e.silent && !s || !l || e.createPathProxy();
        var u = e.path || kE;
        if (!i) {
            var h = n.fill, c = n.stroke, p = o && !!h.colorStops, d = r && !!c.colorStops, f = o && !!h.image,
                g = r && !!c.image, y = void 0, m = void 0, x = void 0, _ = void 0, b = void 0;
            (p || d) && (b = e.getBoundingRect()), p && (y = e.__dirty ? Tc(t, h, b) : e.__canvasFillGradient, e.__canvasFillGradient = y), d && (m = e.__dirty ? Tc(t, c, b) : e.__canvasStrokeGradient, e.__canvasStrokeGradient = m), f && (x = e.__dirty || !e.__canvasFillPattern ? Oc(t, h, e) : e.__canvasFillPattern, e.__canvasFillPattern = x), g && (_ = e.__dirty || !e.__canvasStrokePattern ? Oc(t, c, e) : e.__canvasStrokePattern, e.__canvasStrokePattern = x), p ? t.fillStyle = y : f && (x ? t.fillStyle = x : o = !1), d ? t.strokeStyle = m : g && (_ ? t.strokeStyle = _ : r = !1)
        }
        var w = n.lineDash && n.lineWidth > 0 && Ac(n.lineDash, n.lineWidth), S = n.lineDashOffset, M = !!t.setLineDash,
            I = e.getGlobalScale();
        if (u.setScale(I[0], I[1], e.segmentIgnoreThreshold), w) {
            var T = n.strokeNoScale && e.getLineScale ? e.getLineScale() : 1;
            T && 1 !== T && (w = v(w, function (t) {
                return t / T
            }), S /= T)
        }
        var C = !0;
        (l || e.__dirty & KA || w && !M && r) && (u.setDPR(t.dpr), s ? u.setContext(null) : (u.setContext(t), C = !1), u.reset(), w && !M && (u.setLineDash(w), u.setLineDashOffset(S)), e.buildPath(u, e.shape, i), u.toStatic(), e.pathUpdated()), C && u.rebuildPath(t, s ? a : 1), w && M && (t.setLineDash(w), t.lineDashOffset = S), i || (n.strokeFirst ? (r && Pc(t, n), o && kc(t, n)) : (o && kc(t, n), r && Pc(t, n))), w && M && t.setLineDash([])
    }

    function zc(t, e, n) {
        var i = e.__image = Lr(n.image, e.__image, e, e.onload);
        if (i && Pr(i)) {
            var r = n.x || 0, o = n.y || 0, a = e.getWidth(), s = e.getHeight(), l = i.width / i.height;
            if (null == a && null != s ? a = s * l : null == s && null != a ? s = a / l : null == a && null == s && (a = i.width, s = i.height), n.sWidth && n.sHeight) {
                var u = n.sx || 0, h = n.sy || 0;
                t.drawImage(i, u, h, n.sWidth, n.sHeight, r, o, a, s)
            } else if (n.sx && n.sy) {
                var u = n.sx, h = n.sy, c = a - u, p = s - h;
                t.drawImage(i, u, h, c, p, r, o, a, s)
            } else t.drawImage(i, r, o, a, s)
        }
    }

    function Ec(t, e, n) {
        var i = n.text;
        if (null != i && (i += ""), i) {
            t.font = n.font || QD, t.textAlign = n.textAlign, t.textBaseline = n.textBaseline;
            var r = void 0;
            if (t.setLineDash) {
                var o = n.lineDash && n.lineWidth > 0 && Ac(n.lineDash, n.lineWidth), a = n.lineDashOffset;
                if (o) {
                    var s = n.strokeNoScale && e.getLineScale ? e.getLineScale() : 1;
                    s && 1 !== s && (o = v(o, function (t) {
                        return t / s
                    }), a /= s), t.setLineDash(o), t.lineDashOffset = a, r = !0
                }
            }
            n.strokeFirst ? (Dc(n) && t.strokeText(i, n.x, n.y), Lc(n) && t.fillText(i, n.x, n.y)) : (Lc(n) && t.fillText(i, n.x, n.y), Dc(n) && t.strokeText(i, n.x, n.y)), r && t.setLineDash([])
        }
    }

    function Nc(t, e, n, i, r) {
        var o = !1;
        if (!i && (n = n || {}, e === n)) return !1;
        if (i || e.opacity !== n.opacity) {
            o || (Xc(t, r), o = !0);
            var a = Math.max(Math.min(e.opacity, 1), 0);
            t.globalAlpha = isNaN(a) ? BL.opacity : a
        }
        (i || e.blend !== n.blend) && (o || (Xc(t, r), o = !0), t.globalCompositeOperation = e.blend || BL.blend);
        for (var s = 0; s < PE.length; s++) {
            var l = PE[s];
            (i || e[l] !== n[l]) && (o || (Xc(t, r), o = !0), t[l] = t.dpr * (e[l] || 0))
        }
        return (i || e.shadowColor !== n.shadowColor) && (o || (Xc(t, r), o = !0), t.shadowColor = e.shadowColor || BL.shadowColor), o
    }

    function Bc(t, e, n, i, r) {
        var o = Yc(e, r.inHover), a = i ? null : n && Yc(n, r.inHover) || {};
        if (o === a) return !1;
        var s = Nc(t, o, a, i, r);
        if ((i || o.fill !== a.fill) && (s || (Xc(t, r), s = !0), t.fillStyle = o.fill), (i || o.stroke !== a.stroke) && (s || (Xc(t, r), s = !0), t.strokeStyle = o.stroke), (i || o.opacity !== a.opacity) && (s || (Xc(t, r), s = !0), t.globalAlpha = null == o.opacity ? 1 : o.opacity), e.hasStroke()) {
            var l = o.lineWidth, u = l / (o.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1);
            t.lineWidth !== u && (s || (Xc(t, r), s = !0), t.lineWidth = u)
        }
        for (var h = 0; h < OE.length; h++) {
            var c = OE[h], p = c[0];
            (i || o[p] !== a[p]) && (s || (Xc(t, r), s = !0), t[p] = o[p] || c[1])
        }
        return s
    }

    function Vc(t, e, n, i, r) {
        return Nc(t, Yc(e, r.inHover), n && Yc(n, r.inHover), i, r)
    }

    function Fc(t, e) {
        var n = e.transform, i = t.dpr || 1;
        n ? t.setTransform(i * n[0], i * n[1], i * n[2], i * n[3], i * n[4], i * n[5]) : t.setTransform(i, 0, 0, i, 0, 0)
    }

    function Gc(t, e, n) {
        for (var i = !1, r = 0; r < t.length; r++) {
            var o = t[r];
            i = i || o.isZeroArea(), Fc(e, o), e.beginPath(), o.buildPath(e, o.shape), e.clip()
        }
        n.allClipped = i
    }

    function Hc(t, e) {
        return t && e ? t[0] !== e[0] || t[1] !== e[1] || t[2] !== e[2] || t[3] !== e[3] || t[4] !== e[4] || t[5] !== e[5] : t || e ? !0 : !1
    }

    function Wc(t) {
        var e = Lc(t), n = Dc(t);
        return !(t.lineDash || !(+e ^ +n) || e && "string" != typeof t.fill || n && "string" != typeof t.stroke || t.strokePercent < 1 || t.strokeOpacity < 1 || t.fillOpacity < 1)
    }

    function Xc(t, e) {
        e.batchFill && t.fill(), e.batchStroke && t.stroke(), e.batchFill = "", e.batchStroke = ""
    }

    function Yc(t, e) {
        return e ? t.__hoverStyle || t.style : t.style
    }

    function Zc(t, e) {
        Uc(t, e, {inHover: !1, viewWidth: 0, viewHeight: 0}, !0)
    }

    function Uc(t, e, n, i) {
        var r = e.transform;
        if (!e.shouldBePainted(n.viewWidth, n.viewHeight, !1, !1)) return e.__dirty &= ~jA, void (e.__isRendered = !1);
        var o = e.__clipPaths, a = n.prevElClipPaths, s = !1, l = !1;
        if ((!a || Cc(o, a)) && (a && a.length && (Xc(t, n), t.restore(), l = s = !0, n.prevElClipPaths = null, n.allClipped = !1, n.prevEl = null), o && o.length && (Xc(t, n), t.save(), Gc(o, t, n), s = !0), n.prevElClipPaths = o), n.allClipped) return void (e.__isRendered = !1);
        e.beforeBrush && e.beforeBrush(), e.innerBeforeBrush();
        var u = n.prevEl;
        u || (l = s = !0);
        var h = e instanceof Bk && e.autoBatch && Wc(e.style);
        s || Hc(r, u.transform) ? (Xc(t, n), Fc(t, e)) : h || Xc(t, n);
        var c = Yc(e, n.inHover);
        e instanceof Bk ? (n.lastDrawType !== RE && (l = !0, n.lastDrawType = RE), Bc(t, e, u, l, n), h && (n.batchFill || n.batchStroke) || t.beginPath(), Rc(t, e, c, h), h && (n.batchFill = c.fill || "", n.batchStroke = c.stroke || "")) : e instanceof Fk ? (n.lastDrawType !== EE && (l = !0, n.lastDrawType = EE), Bc(t, e, u, l, n), Ec(t, e, c)) : e instanceof Wk ? (n.lastDrawType !== zE && (l = !0, n.lastDrawType = zE), Vc(t, e, u, l, n), zc(t, e, c)) : e instanceof vO && (n.lastDrawType !== NE && (l = !0, n.lastDrawType = NE), jc(t, e, n)), h && i && Xc(t, n), e.innerAfterBrush(), e.afterBrush && e.afterBrush(), n.prevEl = e, e.__dirty = 0, e.__isRendered = !0
    }

    function jc(t, e, n) {
        var i = e.getDisplayables(), r = e.getTemporalDisplayables();
        t.save();
        var o, a, s = {
            prevElClipPaths: null,
            prevEl: null,
            allClipped: !1,
            viewWidth: n.viewWidth,
            viewHeight: n.viewHeight,
            inHover: n.inHover
        };
        for (o = e.getCursor(), a = i.length; a > o; o++) {
            var l = i[o];
            l.beforeBrush && l.beforeBrush(), l.innerBeforeBrush(), Uc(t, l, s, o === a - 1), l.innerAfterBrush(), l.afterBrush && l.afterBrush(), s.prevEl = l
        }
        for (var u = 0, h = r.length; h > u; u++) {
            var l = r[u];
            l.beforeBrush && l.beforeBrush(), l.innerBeforeBrush(), Uc(t, l, s, u === h - 1), l.innerAfterBrush(), l.afterBrush && l.afterBrush(), s.prevEl = l
        }
        e.clearTemporalDisplayables(), e.notClear = !0, t.restore()
    }

    function qc(t, e) {
        function n(t) {
            function e() {
                for (var t = 1, e = 0, n = m.length; n > e; ++e) t = Fi(t, m[e]);
                for (var i = 1, e = 0, n = v.length; n > e; ++e) i = Fi(i, v[e].length);
                t *= i;
                var r = x * m.length * v.length;
                return {
                    width: Math.max(1, Math.min(t, s.maxTileWidth)),
                    height: Math.max(1, Math.min(r, s.maxTileHeight))
                }
            }

            function n() {
                function t(t, e, n, a, l) {
                    var u = o ? 1 : i, h = Sc(l, t * u, e * u, n * u, a * u, s.color, s.symbolKeepAspect);
                    o ? b.appendChild(r.painter.paintOne(h)) : Zc(f, h)
                }

                f && (f.clearRect(0, 0, _.width, _.height), s.backgroundColor && (f.fillStyle = s.backgroundColor, f.fillRect(0, 0, _.width, _.height)));
                for (var e = 0, n = 0; n < y.length; ++n) e += y[n];
                if (!(0 >= e)) for (var a = -x, l = 0, u = 0, h = 0; a < w.height;) {
                    if (l % 2 === 0) {
                        for (var c = u / 2 % v.length, p = 0, d = 0, m = 0; p < 2 * w.width;) {
                            for (var S = 0, n = 0; n < g[h].length; ++n) S += g[h][n];
                            if (0 >= S) break;
                            if (d % 2 === 0) {
                                var M = .5 * (1 - s.symbolSize), I = p + g[h][d] * M, T = a + y[l] * M,
                                    C = g[h][d] * s.symbolSize, A = y[l] * s.symbolSize, D = m / 2 % v[c].length;
                                t(I, T, C, A, v[c][D])
                            }
                            p += g[h][d], ++m, ++d, d === g[h].length && (d = 0)
                        }
                        ++h, h === g.length && (h = 0)
                    }
                    a += y[l], ++u, ++l, l === y.length && (l = 0)
                }
            }

            for (var a = [i], l = !0, u = 0; u < FE.length; ++u) {
                var h = s[FE[u]], c = typeof h;
                if (null != h && !M(h) && "string" !== c && "number" !== c && "boolean" !== c) {
                    l = !1;
                    break
                }
                a.push(h)
            }
            var p;
            if (l) {
                p = a.join(",") + (o ? "-svg" : "");
                var d = VE.get(p);
                d && (o ? t.svgElement = d : t.image = d)
            }
            var f, g = $c(s.dashArrayX), y = Jc(s.dashArrayY), v = Kc(s.symbol), m = Qc(g), x = tp(y), _ = !o && mA(),
                b = o && r.painter.createSVGElement("g"), w = e();
            _ && (_.width = w.width * i, _.height = w.height * i, f = _.getContext("2d")), n(), l && VE.put(p, _ || b), t.image = _, t.svgElement = b, t.svgWidth = w.width, t.svgHeight = w.height
        }

        if ("none" === t) return null;
        var i = e.getDevicePixelRatio(), r = e.getZr(), o = "svg" === r.painter.type;
        t.dirty && BE["delete"](t);
        var a = BE.get(t);
        if (a) return a;
        var s = c(t, {
            symbol: "rect",
            symbolSize: 1,
            symbolKeepAspect: !0,
            color: "rgba(0, 0, 0, 0.2)",
            backgroundColor: null,
            dashArrayX: 5,
            dashArrayY: 5,
            rotation: 0,
            maxTileWidth: 512,
            maxTileHeight: 512
        });
        "none" === s.backgroundColor && (s.backgroundColor = null);
        var l = {repeat: "repeat"};
        return n(l), l.rotation = s.rotation, l.scaleX = l.scaleY = o ? 1 : 1 / i, BE.set(t, l), t.dirty = !1, l
    }

    function Kc(t) {
        if (!t || 0 === t.length) return [["rect"]];
        if ("string" == typeof t) return [[t]];
        for (var e = !0, n = 0; n < t.length; ++n) if ("string" != typeof t[n]) {
            e = !1;
            break
        }
        if (e) return Kc([t]);
        for (var i = [], n = 0; n < t.length; ++n) i.push("string" == typeof t[n] ? [t[n]] : t[n]);
        return i
    }

    function $c(t) {
        if (!t || 0 === t.length) return [[0, 0]];
        if ("number" == typeof t) {
            var e = Math.ceil(t);
            return [[e, e]]
        }
        for (var n = !0, i = 0; i < t.length; ++i) if ("number" != typeof t[i]) {
            n = !1;
            break
        }
        if (n) return $c([t]);
        for (var r = [], i = 0; i < t.length; ++i) if ("number" == typeof t[i]) {
            var e = Math.ceil(t[i]);
            r.push([e, e])
        } else {
            var e = v(t[i], function (t) {
                return Math.ceil(t)
            });
            r.push(e.length % 2 === 1 ? e.concat(e) : e)
        }
        return r
    }

    function Jc(t) {
        if (!t || "object" == typeof t && 0 === t.length) return [0, 0];
        if ("number" == typeof t) {
            var e = Math.ceil(t);
            return [e, e]
        }
        var n = v(t, function (t) {
            return Math.ceil(t)
        });
        return t.length % 2 ? n.concat(n) : n
    }

    function Qc(t) {
        return v(t, function (t) {
            return tp(t)
        })
    }

    function tp(t) {
        for (var e = 0, n = 0; n < t.length; ++n) e += t[n];
        return t.length % 2 === 1 ? 2 * e : e
    }

    function ep(t, e) {
        t.eachRawSeries(function (n) {
            if (!t.isSeriesFiltered(n)) {
                var i = n.getData();
                i.hasItemVisual() && i.each(function (t) {
                    var n = i.getItemVisual(t, "decal");
                    if (n) {
                        var r = i.ensureUniqueItemVisual(t, "style");
                        r.decal = qc(n, e)
                    }
                });
                var r = i.getVisual("decal");
                if (r) {
                    var o = i.getVisual("style");
                    o.decal = qc(r, e)
                }
            }
        })
    }

    function np(t) {
        if (T(t)) {
            var e = new DOMParser;
            t = e.parseFromString(t, "text/xml")
        }
        var n = t;
        for (9 === n.nodeType && (n = n.firstChild); "svg" !== n.nodeName.toLowerCase() || 1 !== n.nodeType;) n = n.nextSibling;
        return n
    }

    function ip(t, e) {
        var n = t.getAttribute("gradientUnits");
        "userSpaceOnUse" === n && (e.global = !0)
    }

    function rp(t, e) {
        for (var n = t.firstChild; n;) {
            if (1 === n.nodeType && "stop" === n.nodeName.toLocaleLowerCase()) {
                var i = n.getAttribute("offset"), r = void 0;
                r = i && i.indexOf("%") > 0 ? parseInt(i, 10) / 100 : i ? parseFloat(i) : 0;
                var o = {};
                dp(n, o, o);
                var a = o.stopColor || n.getAttribute("stop-color") || "#000000";
                e.colorStops.push({offset: r, color: a})
            }
            n = n.nextSibling
        }
    }

    function op(t, e) {
        t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), c(e.__inheritedStyle, t.__inheritedStyle))
    }

    function ap(t) {
        for (var e = cp(t), n = [], i = 0; i < e.length; i += 2) {
            var r = parseFloat(e[i]), o = parseFloat(e[i + 1]);
            n.push([r, o])
        }
        return n
    }

    function sp(t, e, n, i, r) {
        var o = e, a = o.__inheritedStyle = o.__inheritedStyle || {}, s = {};
        1 === t.nodeType && (pp(t, e), dp(t, a, s), i || fp(t, a, s)), o.style = o.style || {}, null != a.fill && (o.style.fill = up(o, "fill", a.fill, n)), null != a.stroke && (o.style.stroke = up(o, "stroke", a.stroke, n)), y(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], function (t) {
            null != a[t] && (o.style[t] = parseFloat(a[t]))
        }), y(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign"], function (t) {
            null != a[t] && (o.style[t] = a[t])
        }), r && (o.__selfStyle = s), a.lineDash && (o.style.lineDash = v(cp(a.lineDash), function (t) {
            return parseFloat(t)
        })), ("hidden" === a.visibility || "collapse" === a.visibility) && (o.invisible = !0), "none" === a.display && (o.ignore = !0)
    }

    function lp(t, e) {
        var n = e.__selfStyle;
        if (n) {
            var i = n.textBaseline, r = i;
            i && "auto" !== i ? "baseline" === i ? r = "alphabetic" : "before-edge" === i || "text-before-edge" === i ? r = "top" : "after-edge" === i || "text-after-edge" === i ? r = "bottom" : ("central" === i || "mathematical" === i) && (r = "middle") : r = "alphabetic", t.style.textBaseline = r
        }
        var o = e.__inheritedStyle;
        if (o) {
            var a = o.textAlign, s = a;
            a && ("middle" === a && (s = "center"), t.style.textAlign = s)
        }
    }

    function up(t, e, n, i) {
        var r = n && n.match(UE);
        if (r) {
            var o = W(r[1]);
            return void i.push([t, e, o])
        }
        return "none" === n && (n = null), n
    }

    function hp(t, e) {
        for (var n = 0; n < e.length; n++) {
            var i = e[n];
            i[0].style[i[1]] = t[i[2]]
        }
    }

    function cp(t) {
        return t.match(jE) || []
    }

    function pp(t, e) {
        var n = t.getAttribute("transform");
        if (n) {
            n = n.replace(/,/g, " ");
            var i = [], r = null;
            n.replace(qE, function (t, e, n) {
                return i.push(e, n), ""
            });
            for (var o = i.length - 1; o > 0; o -= 2) {
                var a = i[o], s = i[o - 1], l = cp(a);
                switch (r = r || Gn(), s) {
                    case"translate":
                        Yn(r, r, [parseFloat(l[0]), parseFloat(l[1] || "0")]);
                        break;
                    case"scale":
                        Un(r, r, [parseFloat(l[0]), parseFloat(l[1] || l[0])]);
                        break;
                    case"rotate":
                        Zn(r, r, -parseFloat(l[0]) * KE);
                        break;
                    case"skewX":
                        var u = Math.tan(parseFloat(l[0]) * KE);
                        Xn(r, [1, 0, u, 1, 0, 0], r);
                        break;
                    case"skewY":
                        var h = Math.tan(parseFloat(l[0]) * KE);
                        Xn(r, [1, h, 0, 1, 0, 0], r);
                        break;
                    case"matrix":
                        r[0] = parseFloat(l[0]), r[1] = parseFloat(l[1]), r[2] = parseFloat(l[2]), r[3] = parseFloat(l[3]), r[4] = parseFloat(l[4]), r[5] = parseFloat(l[5])
                }
            }
            e.setLocalTransform(r)
        }
    }

    function dp(t, e, n) {
        var i = t.getAttribute("style");
        if (i) {
            $E.lastIndex = 0;
            for (var r; null != (r = $E.exec(i));) {
                var o = r[1], a = q(GE, o) ? GE[o] : null;
                a && (e[a] = r[2]);
                var s = q(WE, o) ? WE[o] : null;
                s && (n[s] = r[2])
            }
        }
    }

    function fp(t, e, n) {
        for (var i = 0; i < HE.length; i++) {
            var r = HE[i], o = t.getAttribute(r);
            null != o && (e[GE[r]] = o)
        }
        for (var i = 0; i < XE.length; i++) {
            var r = XE[i], o = t.getAttribute(r);
            null != o && (n[WE[r]] = o)
        }
    }

    function gp(t, e) {
        var n = e.width / t.width, i = e.height / t.height, r = Math.min(n, i);
        return {
            scale: r,
            x: -(t.x + t.width / 2) * r + (e.x + e.width / 2),
            y: -(t.y + t.height / 2) * r + (e.y + e.height / 2)
        }
    }

    function yp(t, e) {
        var n = new YE;
        return n.parse(t, e)
    }

    function vp(t, e) {
        return Math.abs(t - e) < JE
    }

    function mp(t, e, n) {
        var i = 0, r = t[0];
        if (!r) return !1;
        for (var o = 1; o < t.length; o++) {
            var a = t[o];
            i += xo(r[0], r[1], a[0], a[1], e, n), r = a
        }
        var s = t[0];
        return vp(r[0], s[0]) && vp(r[1], s[1]) || (i += xo(r[0], r[1], s[0], s[1], e, n)), 0 !== i
    }

    function xp(t) {
        t.silent = !1, t.isGroup && t.traverse(function (t) {
            t.silent = !1
        })
    }

    function _p(t) {
        var e = [], n = Z();
        return y(t, function (t) {
            if (null == t.namedFrom) {
                var i = new nN(t.name, t.el);
                e.push(i), n.set(t.name, i)
            }
        }), {regions: e, regionsMap: n}
    }

    function bp(t) {
        if (!t.UTF8Encoding) return t;
        var e = t, n = e.UTF8Scale;
        null == n && (n = 1024);
        for (var i = e.features, r = 0; r < i.length; r++) {
            var o = i[r], a = o.geometry;
            if ("Polygon" === a.type) for (var s = a.coordinates, l = 0; l < s.length; l++) s[l] = wp(s[l], a.encodeOffsets[l], n); else if ("MultiPolygon" === a.type) for (var s = a.coordinates, l = 0; l < s.length; l++) for (var u = s[l], h = 0; h < u.length; h++) u[h] = wp(u[h], a.encodeOffsets[l][h], n)
        }
        return e.UTF8Encoding = !1, e
    }

    function wp(t, e, n) {
        for (var i = [], r = e[0], o = e[1], a = 0; a < t.length; a += 2) {
            var s = t.charCodeAt(a) - 64, l = t.charCodeAt(a + 1) - 64;
            s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), s += r, l += o, r = s, o = l, i.push([s / n, l / n])
        }
        return i
    }

    function Sp(t, e) {
        return t = bp(t), v(x(t.features, function (t) {
            return t.geometry && t.properties && t.geometry.coordinates.length > 0
        }), function (t) {
            var n = t.properties, i = t.geometry, r = [];
            if ("Polygon" === i.type) {
                var o = i.coordinates;
                r.push({type: "polygon", exterior: o[0], interiors: o.slice(1)})
            }
            if ("MultiPolygon" === i.type) {
                var o = i.coordinates;
                y(o, function (t) {
                    t[0] && r.push({type: "polygon", exterior: t[0], interiors: t.slice(1)})
                })
            }
            var a = new eN(n[e || "name"], r, n.cp);
            return a.properties = n, a
        })
    }

    function Mp(t, e) {
        if ("china" === t) {
            for (var n = 0; n < e.length; n++) if (e[n].name === aN) return;
            e.push(new eN(aN, v(sN, function (t) {
                return {type: "polygon", exterior: t}
            }), oN))
        }
    }

    function Ip(t, e) {
        if ("china" === t) {
            var n = hN[e.name];
            if (n) {
                var i = e.getCenter();
                i[0] += n[0] / 10.5, i[1] += -n[1] / 14, e.setCenter(i)
            }
        }
    }

    function Tp(t, e) {
        if ("world" === t) {
            var n = cN[e.name];
            if (n) {
                var i = [n[0], n[1]];
                e.setCenter(i)
            }
        }
    }

    function Cp(t, e) {
        "china" === t && "台湾" === e.name && e.geometries.push({type: "polygon", exterior: pN[0]})
    }

    function Ap(t) {
        for (var e, n = 0; n < t.length; n++) {
            var i = t[n].getBoundingRect();
            e = e || i.clone(), e.union(i)
        }
        return e
    }

    function Dp(t) {
        return T(t) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(t) : new Function("return (" + t + ");")() : t
    }

    function Lp(t) {
        return function () {
            for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
            return this.isDisposed() ? void 0 : Pp(this, t, e)
        }
    }

    function kp(t) {
        return function () {
            for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
            return Pp(this, t, e)
        }
    }

    function Pp(t, e, n) {
        return n[0] = n[0] && n[0].toLowerCase(), LA.prototype[e].apply(t, n)
    }

    function Op(t, e, n) {
        var i = Np(t);
        if (i) return i;
        var r = new xB(t, e, n);
        return r.id = "ec_" + OB++, kB[r.id] = r, dr(t, zB, r.id), gB(r), mN(TB, function (t) {
            t(r)
        }), r
    }

    function Rp(t) {
        if (M(t)) {
            var e = t;
            t = null, mN(e, function (e) {
                null != e.group && (t = e.group)
            }), t = t || "g_" + RB++, mN(e, function (e) {
                e.group = t
            })
        }
        return PB[t] = !0, t
    }

    function zp(t) {
        PB[t] = !1
    }

    function Ep(t) {
        "string" == typeof t ? t = kB[t] : t instanceof xB || (t = Np(t)), t instanceof xB && !t.isDisposed() && t.dispose()
    }

    function Np(t) {
        return kB[fr(t, zB)]
    }

    function Bp(t) {
        return kB[t]
    }

    function Vp(t, e) {
        DB[t] = e
    }

    function Fp(t) {
        bN(IB, t) < 0 && IB.push(t)
    }

    function Gp(t, e) {
        qp(MB, t, e, DN)
    }

    function Hp(t) {
        bN(TB, t) < 0 && t && TB.push(t)
    }

    function Wp(t) {
        bN(CB, t) < 0 && t && CB.push(t)
    }

    function Xp(t, e, n) {
        "function" == typeof e && (n = e, e = "");
        var i = _N(t) ? t.type : [t, t = {event: e}][0];
        t.event = (t.event || i).toLowerCase(), e = t.event, SB[e] || (vN(YN.test(i) && YN.test(e)), wB[i] || (wB[i] = {
            action: n,
            actionInfo: t
        }), SB[e] = i)
    }

    function Yp(t, e) {
        UR.register(t, e)
    }

    function Zp(t) {
        var e = UR.get(t);
        return e ? e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() : void 0
    }

    function Up(t, e) {
        qp(AB, t, e, kN, "layout")
    }

    function jp(t, e) {
        qp(AB, t, e, RN, "visual")
    }

    function qp(t, e, n, i, r) {
        if ((xN(e) || _N(e)) && (n = e, e = i), !(bN(NB, n) >= 0)) {
            NB.push(n);
            var o = Wz.wrapStageHandler(n, r);
            o.__prio = e, o.__raw = n, t.push(o)
        }
    }

    function Kp(t, e) {
        LB[t] = e
    }

    function $p(t) {
        r("createCanvas", t)
    }

    function Jp(t, e, n) {
        yN.registerMap(t, e, n)
    }

    function Qp(t) {
        return yN.getMapForUser(t)
    }

    function td(t) {
        return null == t ? 0 : t.length || 1
    }

    function ed(t) {
        return t
    }

    function nd(t) {
        var e = {}, n = e.encode = {}, i = Z(), r = [], o = [],
            a = e.userOutput = {dimensionNames: t.dimensions.slice(), encode: {}};
        y(t.dimensions, function (e) {
            var s = t.getDimensionInfo(e), l = s.coordDim;
            if (l) {
                var u = s.coordDimIndex;
                id(n, l)[u] = e, s.isExtraCoord || (i.set(l, 1), od(s.type) && (r[0] = e), id(a.encode, l)[u] = s.index), s.defaultTooltip && o.push(e)
            }
            bR.each(function (t, e) {
                var i = id(n, e), r = s.otherDims[e];
                null != r && r !== !1 && (i[r] = s.name)
            })
        });
        var s = [], l = {};
        i.each(function (t, e) {
            var i = n[e];
            l[e] = i[0], s = s.concat(i)
        }), e.dataDimsOnCoord = s, e.encodeFirstDimNotExtra = l;
        var u = n.label;
        u && u.length && (r = u.slice());
        var h = n.tooltip;
        return h && h.length ? o = h.slice() : o.length || (o = r.slice()), n.defaultedLabel = r, n.defaultedTooltip = o, e
    }

    function id(t, e) {
        return t.hasOwnProperty(e) || (t[e] = []), t[e]
    }

    function rd(t) {
        return "category" === t ? "ordinal" : "time" === t ? "time" : "float"
    }

    function od(t) {
        return !("ordinal" === t || "time" === t)
    }

    function ad(t, e, n) {
        function i(t, e, n) {
            null != bR.get(e) ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, a.set(e, !0))
        }

        Cu(e) || (e = Du(e)), n = n || {}, t = (t || []).slice();
        for (var r = (n.dimsDef || []).slice(), o = Z(), a = Z(), l = [], u = sd(e, t, r, n.dimCount), p = 0; u > p; p++) {
            var d = r[p], f = r[p] = h({}, D(d) ? d : {name: d}), g = f.name, v = l[p] = new eV;
            null != g && null == o.get(g) && (v.name = v.displayName = g, o.set(g, p)), null != f.type && (v.type = f.type), null != f.displayName && (v.displayName = f.displayName)
        }
        var m = n.encodeDef;
        !m && n.encodeDefaulter && (m = n.encodeDefaulter(e, u));
        var x = Z(m);
        x.each(function (t, e) {
            var n = Hi(t).slice();
            if (1 === n.length && !T(n[0]) && n[0] < 0) return void x.set(e, !1);
            var r = x.set(e, []);
            y(n, function (t, n) {
                var a = T(t) ? o.get(t) : t;
                null != a && u > a && (r[n] = a, i(l[a], e, n))
            })
        });
        var _ = 0;
        y(t, function (t) {
            var e, n, r, o;
            if (T(t)) e = t, o = {}; else {
                o = t, e = o.name;
                var a = o.ordinalMeta;
                o.ordinalMeta = null, o = s(o), o.ordinalMeta = a, n = o.dimsDef, r = o.otherDims, o.name = o.coordDim = o.coordDimIndex = o.dimsDef = o.otherDims = null
            }
            var u = x.get(e);
            if (u !== !1) {
                if (u = Hi(u), !u.length) for (var h = 0; h < (n && n.length || 1); h++) {
                    for (; _ < l.length && null != l[_].coordDim;) _++;
                    _ < l.length && u.push(_++)
                }
                y(u, function (t, a) {
                    var s = l[t];
                    if (i(c(s, o), e, a), null == s.name && n) {
                        var u = n[a];
                        !D(u) && (u = {name: u}), s.name = s.displayName = u.name, s.defaultTooltip = u.defaultTooltip
                    }
                    r && c(s.otherDims, r)
                })
            }
        });
        var b = n.generateCoord, w = n.generateCoordCount, S = null != w;
        w = b ? w || 1 : 0;
        for (var M = b || "value", I = 0; u > I; I++) {
            var v = l[I] = l[I] || new eV, C = v.coordDim;
            null == C && (v.coordDim = ld(M, a, S), v.coordDimIndex = 0, (!b || 0 >= w) && (v.isExtraCoord = !0), w--), null == v.name && (v.name = ld(v.coordDim, o, !1)), null != v.type || Xl(e, I) !== LR.Must && (!v.isExtraCoord || null == v.otherDims.itemName && null == v.otherDims.seriesName) || (v.type = "ordinal")
        }
        return l
    }

    function sd(t, e, n, i) {
        var r = Math.max(t.dimensionsDetectedCount || 1, e.length, n.length, i || 0);
        return y(e, function (t) {
            var e;
            D(t) && (e = t.dimsDef) && (r = Math.max(r, e.length))
        }), r
    }

    function ld(t, e, n) {
        if (n || null != e.get(t)) {
            for (var i = 0; null != e.get(t + i);) i++;
            t += i
        }
        return e.set(t, !0), t
    }

    function ud(t, e) {
        return e = e || {}, ad(e.coordDimensions || [], t, {
            dimsDef: e.dimensionsDefine || t.dimensionsDefine,
            encodeDef: e.encodeDefine || t.encodeDefine,
            dimCount: e.dimensionsCount,
            encodeDefaulter: e.encodeDefaulter,
            generateCoord: e.generateCoord,
            generateCoordCount: e.generateCoordCount
        })
    }

    function hd(t) {
        var e = t.get("coordinateSystem"), n = new gV(e), i = yV[e];
        return i ? (i(t, n, n.axisMap, n.categoryAxisMap), n) : void 0
    }

    function cd(t) {
        return "category" === t.get("type")
    }

    function pd(t, e, n) {
        n = n || {};
        var i, r, o, a, s = n.byIndex, l = n.stackedCoordDimension, u = !(!t || !t.get("stack"));
        if (y(e, function (t, n) {
            T(t) && (e[n] = t = {name: t}), u && !t.isExtraCoord && (s || i || !t.ordinalMeta || (i = t), r || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (r = t))
        }), !r || s || i || (s = !0), r) {
            o = "__\x00ecstackresult", a = "__\x00ecstackedover", i && (i.createInvertedIndices = !0);
            var h = r.coordDim, c = r.type, p = 0;
            y(e, function (t) {
                t.coordDim === h && p++
            }), e.push({
                name: o,
                coordDim: h,
                coordDimIndex: p,
                type: c,
                isExtraCoord: !0,
                isCalculationCoord: !0
            }), p++, e.push({name: a, coordDim: a, coordDimIndex: p, type: c, isExtraCoord: !0, isCalculationCoord: !0})
        }
        return {
            stackedDimension: r && r.name,
            stackedByDimension: i && i.name,
            isStackedByIndex: s,
            stackedOverDimension: a,
            stackResultDimension: o
        }
    }

    function dd(t, e) {
        return !!e && e === t.getCalculationInfo("stackedDimension")
    }

    function fd(t, e) {
        return dd(t, e) ? t.getCalculationInfo("stackResultDimension") : e
    }

    function gd(t, e, n) {
        n = n || {}, Cu(t) || (t = Du(t));
        var i, r = e.get("coordinateSystem"), o = UR.get(r), a = hd(e);
        a && a.coordSysDims && (i = v(a.coordSysDims, function (t) {
            var e = {name: t}, n = a.axisMap.get(t);
            if (n) {
                var i = n.get("type");
                e.type = rd(i)
            }
            return e
        })), i || (i = o && (o.getDimensionsInfo ? o.getDimensionsInfo() : o.dimensions.slice()) || ["x", "y"]);
        var s, l, u = n.useEncodeDefaulter, h = ud(t, {
            coordDimensions: i,
            generateCoord: n.generateCoord,
            encodeDefaulter: I(u) ? u : u ? S(Fl, i, e) : null
        });
        a && y(h, function (t, e) {
            var i = t.coordDim, r = a.categoryAxisMap.get(i);
            r && (null == s && (s = e), t.ordinalMeta = r.getOrdinalMeta(), n.createInvertedIndices && (t.createInvertedIndices = !0)), null != t.otherDims.itemName && (l = !0)
        }), l || null == s || (h[s].otherDims.itemName = 0);
        var c = pd(e, h), p = new fV(h, e);
        p.setCalculationInfo(c);
        var d = null != s && yd(t) ? function (t, e, n, i) {
            return i === s ? n : this.defaultDimValueGetter(t, e, n, i)
        } : null;
        return p.hasItemOption = !1, p.initData(t, null, d), p
    }

    function yd(t) {
        if (t.sourceFormat === wR) {
            var e = vd(t.data || []);
            return null != e && !M(Xi(e))
        }
    }

    function vd(t) {
        for (var e = 0; e < t.length && null == t[e];) e++;
        return t[e]
    }

    function md(t) {
        return D(t) && null != t.value ? t.value : t + ""
    }

    function xd(t, e, n, i) {
        var r = {}, o = t[1] - t[0], a = r.interval = Oi(o / e, !0);
        null != n && n > a && (a = r.interval = n), null != i && a > i && (a = r.interval = i);
        var s = r.intervalPrecision = _d(a),
            l = r.niceTickExtent = [xV(Math.ceil(t[0] / a) * a, s), xV(Math.floor(t[1] / a) * a, s)];
        return wd(l, t), r
    }

    function _d(t) {
        return Si(t) + 2
    }

    function bd(t, e, n) {
        t[e] = Math.max(Math.min(t[e], n[1]), n[0])
    }

    function wd(t, e) {
        !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), bd(t, 0, e), bd(t, 1, e), t[0] > t[1] && (t[0] = t[1])
    }

    function Sd(t, e) {
        return t >= e[0] && t <= e[1]
    }

    function Md(t, e) {
        return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0])
    }

    function Id(t, e) {
        return t * (e[1] - e[0]) + e[0]
    }

    function Td(t) {
        return t.get("stack") || SV + t.seriesIndex
    }

    function Cd(t) {
        return t.dim + t.index
    }

    function Ad(t) {
        var e = [], n = t.axis, i = "axis0";
        if ("category" === n.type) {
            for (var r = n.getBandWidth(), o = 0; o < t.count; o++) e.push(c({
                bandWidth: r,
                axisKey: i,
                stackId: SV + o
            }, t));
            for (var a = Pd(e), s = [], o = 0; o < t.count; o++) {
                var l = a[i][SV + o];
                l.offsetCenter = l.offset + l.width / 2, s.push(l)
            }
            return s
        }
    }

    function Dd(t, e) {
        var n = [];
        return e.eachSeriesByType(t, function (t) {
            zd(t) && !Ed(t) && n.push(t)
        }), n
    }

    function Ld(t) {
        var e = {};
        y(t, function (t) {
            var n = t.coordinateSystem, i = n.getBaseAxis();
            if ("time" === i.type || "value" === i.type) for (var r = t.getData(), o = i.dim + "_" + i.index, a = r.mapDimension(i.dim), s = 0, l = r.count(); l > s; ++s) {
                var u = r.get(a, s);
                e[o] ? e[o].push(u) : e[o] = [u]
            }
        });
        var n = {};
        for (var i in e) if (e.hasOwnProperty(i)) {
            var r = e[i];
            if (r) {
                r.sort(function (t, e) {
                    return t - e
                });
                for (var o = null, a = 1; a < r.length; ++a) {
                    var s = r[a] - r[a - 1];
                    s > 0 && (o = null === o ? s : Math.min(o, s))
                }
                n[i] = o
            }
        }
        return n
    }

    function kd(t) {
        var e = Ld(t), n = [];
        return y(t, function (t) {
            var i, r = t.coordinateSystem, o = r.getBaseAxis(), a = o.getExtent();
            if ("category" === o.type) i = o.getBandWidth(); else if ("value" === o.type || "time" === o.type) {
                var s = o.dim + "_" + o.index, l = e[s], u = Math.abs(a[1] - a[0]), h = o.scale.getExtent(),
                    c = Math.abs(h[1] - h[0]);
                i = l ? u / c * l : u
            } else {
                var p = t.getData();
                i = Math.abs(a[1] - a[0]) / p.count()
            }
            var d = _i(t.get("barWidth"), i), f = _i(t.get("barMaxWidth"), i), g = _i(t.get("barMinWidth") || 1, i),
                y = t.get("barGap"), v = t.get("barCategoryGap");
            n.push({
                bandWidth: i,
                barWidth: d,
                barMaxWidth: f,
                barMinWidth: g,
                barGap: y,
                barCategoryGap: v,
                axisKey: Cd(o),
                stackId: Td(t)
            })
        }), Pd(n)
    }

    function Pd(t) {
        var e = {};
        y(t, function (t) {
            var n = t.axisKey, i = t.bandWidth, r = e[n] || {
                bandWidth: i,
                remainedWidth: i,
                autoWidthCount: 0,
                categoryGap: null,
                gap: "20%",
                stacks: {}
            }, o = r.stacks;
            e[n] = r;
            var a = t.stackId;
            o[a] || r.autoWidthCount++, o[a] = o[a] || {width: 0, maxWidth: 0};
            var s = t.barWidth;
            s && !o[a].width && (o[a].width = s, s = Math.min(r.remainedWidth, s), r.remainedWidth -= s);
            var l = t.barMaxWidth;
            l && (o[a].maxWidth = l);
            var u = t.barMinWidth;
            u && (o[a].minWidth = u);
            var h = t.barGap;
            null != h && (r.gap = h);
            var c = t.barCategoryGap;
            null != c && (r.categoryGap = c)
        });
        var n = {};
        return y(e, function (t, e) {
            n[e] = {};
            var i = t.stacks, r = t.bandWidth, o = t.categoryGap;
            if (null == o) {
                var a = b(i).length;
                o = Math.max(35 - 4 * a, 15) + "%"
            }
            var s = _i(o, r), l = _i(t.gap, 1), u = t.remainedWidth, h = t.autoWidthCount,
                c = (u - s) / (h + (h - 1) * l);
            c = Math.max(c, 0), y(i, function (t) {
                var e = t.maxWidth, n = t.minWidth;
                if (t.width) {
                    var i = t.width;
                    e && (i = Math.min(i, e)), n && (i = Math.max(i, n)), t.width = i, u -= i + l * i, h--
                } else {
                    var i = c;
                    e && i > e && (i = Math.min(e, u)), n && n > i && (i = n), i !== c && (t.width = i, u -= i + l * i, h--)
                }
            }), c = (u - s) / (h + (h - 1) * l), c = Math.max(c, 0);
            var p, d = 0;
            y(i, function (t) {
                t.width || (t.width = c), p = t, d += t.width * (1 + l)
            }), p && (d -= p.width * l);
            var f = -d / 2;
            y(i, function (t, i) {
                n[e][i] = n[e][i] || {bandWidth: r, offset: f, width: t.width}, f += t.width * (1 + l)
            })
        }), n
    }

    function Od(t, e, n) {
        if (t && e) {
            var i = t[Cd(e)];
            return null != i && null != n ? i[Td(n)] : i
        }
    }

    function Rd(t, e) {
        var n = Dd(t, e), i = kd(n), r = {};
        y(n, function (t) {
            var e = t.getData(), n = t.coordinateSystem, o = n.getBaseAxis(), a = Td(t), s = i[Cd(o)][a], l = s.offset,
                u = s.width, h = n.getOtherAxis(o), c = t.get("barMinHeight") || 0;
            r[a] = r[a] || [], e.setLayout({bandWidth: s.bandWidth, offset: l, size: u});
            for (var p = e.mapDimension(h.dim), d = e.mapDimension(o.dim), f = dd(e, p), g = h.isHorizontal(), y = Nd(o, h, f), v = 0, m = e.count(); m > v; v++) {
                var x = e.get(p, v), _ = e.get(d, v), b = x >= 0 ? "p" : "n", w = y;
                f && (r[a][_] || (r[a][_] = {p: y, n: y}), w = r[a][_][b]);
                var S = void 0, M = void 0, I = void 0, T = void 0;
                if (g) {
                    var C = n.dataToPoint([x, _]);
                    S = w, M = C[1] + l, I = C[0] - y, T = u, Math.abs(I) < c && (I = (0 > I ? -1 : 1) * c), isNaN(I) || f && (r[a][_][b] += I)
                } else {
                    var C = n.dataToPoint([_, x]);
                    S = C[0] + l, M = w, I = u, T = C[1] - y, Math.abs(T) < c && (T = (0 >= T ? -1 : 1) * c), isNaN(T) || f && (r[a][_][b] += T)
                }
                e.setItemLayout(v, {x: S, y: M, width: I, height: T})
            }
        })
    }

    function zd(t) {
        return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type
    }

    function Ed(t) {
        return t.pipelineContext && t.pipelineContext.large
    }

    function Nd(t, e) {
        return e.toGlobalCoord(e.dataToCoord("log" === e.type ? 1 : 0))
    }

    function Bd(t, e, n, i) {
        var r = Li(e), o = Li(n), a = function (t) {
            return nl(r, t, i) === nl(o, t, i)
        }, s = function () {
            return a("year")
        }, l = function () {
            return s() && a("month")
        }, u = function () {
            return l() && a("day")
        }, h = function () {
            return u() && a("hour")
        }, c = function () {
            return h() && a("minute")
        }, p = function () {
            return c() && a("second")
        }, d = function () {
            return p() && a("millisecond")
        };
        switch (t) {
            case"year":
                return s();
            case"month":
                return l();
            case"day":
                return u();
            case"hour":
                return h();
            case"minute":
                return c();
            case"second":
                return p();
            case"millisecond":
                return d()
        }
    }

    function Vd(t) {
        return t /= JO, t > 16 ? 16 : t > 7.5 ? 7 : t > 3.5 ? 4 : t > 1.5 ? 2 : 1
    }

    function Fd(t) {
        var e = 30 * JO;
        return t /= e, t > 6 ? 6 : t > 3 ? 3 : t > 2 ? 2 : 1
    }

    function Gd(t) {
        return t /= $O, t > 12 ? 12 : t > 6 ? 6 : t > 3.5 ? 4 : t > 2 ? 2 : 1
    }

    function Hd(t, e) {
        return t /= e ? KO : qO, t > 30 ? 30 : t > 20 ? 20 : t > 15 ? 15 : t > 10 ? 10 : t > 5 ? 5 : t > 2 ? 2 : 1
    }

    function Wd(t) {
        return Oi(t, !0)
    }

    function Xd(t, e, n) {
        var i = new Date(t);
        switch (Ks(e)) {
            case"year":
            case"month":
                i[cl(n)](0);
            case"day":
                i[pl(n)](1);
            case"hour":
                i[dl(n)](0);
            case"minute":
                i[fl(n)](0);
            case"second":
                i[gl(n)](0), i[yl(n)](0)
        }
        return i.getTime()
    }

    function Yd(t, e, n, i) {
        function r(t, e, n, r, o, a, s) {
            for (var l = new Date(e), u = e, h = l[r](); n > u && u <= i[1];) s.push({value: u}), h += t, l[o](h), u = l.getTime();
            s.push({value: u, notAdd: !0})
        }

        function o(t, o, a) {
            var s = [], l = !o.length;
            if (!Bd(Ks(t), i[0], i[1], n)) {
                l && (o = [{value: Xd(new Date(i[0]), t, n)}, {value: i[1]}]);
                for (var u = 0; u < o.length - 1; u++) {
                    var h = o[u].value, c = o[u + 1].value;
                    if (h !== c) {
                        var p = void 0, d = void 0, f = void 0, g = !1;
                        switch (t) {
                            case"year":
                                p = Math.max(1, Math.round(e / JO / 365)), d = il(n), f = hl(n);
                                break;
                            case"half-year":
                            case"quarter":
                            case"month":
                                p = Fd(e), d = rl(n), f = cl(n);
                                break;
                            case"week":
                            case"half-week":
                            case"day":
                                p = Vd(e, 31), d = ol(n), f = pl(n), g = !0;
                                break;
                            case"half-day":
                            case"quarter-day":
                            case"hour":
                                p = Gd(e), d = al(n), f = dl(n);
                                break;
                            case"minute":
                                p = Hd(e, !0), d = sl(n), f = fl(n);
                                break;
                            case"second":
                                p = Hd(e, !1), d = ll(n), f = gl(n);
                                break;
                            case"millisecond":
                                p = Wd(e), d = ul(n), f = yl(n)
                        }
                        r(p, h, c, d, f, g, s), "year" === t && a.length > 1 && 0 === u && a.unshift({value: a[0].value - p})
                    }
                }
                for (var u = 0; u < s.length; u++) a.push(s[u]);
                return s
            }
        }

        for (var a = 1e4, s = rR, l = 0, u = [], h = [], c = 0, p = 0, d = 0; d < s.length && l++ < a; ++d) {
            var f = Ks(s[d]);
            if ($s(s[d])) {
                o(s[d], u[u.length - 1] || [], h);
                var g = s[d + 1] ? Ks(s[d + 1]) : null;
                if (f !== g) {
                    if (h.length) {
                        p = c, h.sort(function (t, e) {
                            return t.value - e.value
                        });
                        for (var y = [], m = 0; m < h.length; ++m) {
                            var _ = h[m].value;
                            (0 === m || h[m - 1].value !== _) && (y.push(h[m]), _ >= i[0] && _ <= i[1] && c++)
                        }
                        var b = (i[1] - i[0]) / e;
                        if (c > 1.5 * b && p > b / 1.5) break;
                        if (u.push(y), c > b || t === s[d]) break
                    }
                    h = []
                }
            }
        }
        for (var w = x(v(u, function (t) {
            return x(t, function (t) {
                return t.value >= i[0] && t.value <= i[1] && !t.notAdd
            })
        }), function (t) {
            return t.length > 0
        }), S = [], M = w.length - 1, d = 0; d < w.length; ++d) for (var I = w[d], T = 0; T < I.length; ++T) S.push({
            value: I[T].value,
            level: M - d
        });
        S.sort(function (t, e) {
            return t.value - e.value
        });
        for (var C = [], d = 0; d < S.length; ++d) (0 === d || S[d].value !== S[d - 1].value) && C.push(S[d]);
        return C
    }

    function Zd(t, e) {
        return PV(t, Si(e))
    }

    function Ud(t, e, n) {
        var i = t.rawExtentInfo;
        return i ? i : (i = new VV(t, e, n), t.rawExtentInfo = i, i)
    }

    function jd(t, e) {
        return null == e ? null : E(e) ? 0 / 0 : t.parse(e)
    }

    function qd(t, e) {
        var n = t.type, i = Ud(t, e, t.getExtent()).calculate();
        t.setBlank(i.isBlank);
        var r = i.min, o = i.max, a = e.ecModel;
        if (a && "time" === n) {
            var s = Dd("bar", a), l = !1;
            if (y(s, function (t) {
                l = l || t.getBaseAxis() === e.axis
            }), l) {
                var u = kd(s), h = Kd(r, o, e, u);
                r = h.min, o = h.max
            }
        }
        return {extent: [r, o], fixMin: i.minFixed, fixMax: i.maxFixed}
    }

    function Kd(t, e, n, i) {
        var r = n.axis.getExtent(), o = r[1] - r[0], a = Od(i, n.axis);
        if (void 0 === a) return {min: t, max: e};
        var s = 1 / 0;
        y(a, function (t) {
            s = Math.min(t.offset, s)
        });
        var l = -1 / 0;
        y(a, function (t) {
            l = Math.max(t.offset + t.width, l)
        }), s = Math.abs(s), l = Math.abs(l);
        var u = s + l, h = e - t, c = 1 - (s + l) / o, p = h / c - h;
        return e += p * (l / u), t -= p * (s / u), {min: t, max: e}
    }

    function $d(t, e) {
        var n = qd(t, e), i = n.extent, r = e.get("splitNumber");
        t instanceof NV && (t.base = e.get("logBase"));
        var o = t.type;
        t.setExtent(i[0], i[1]), t.niceExtent({
            splitNumber: r,
            fixMin: n.fixMin,
            fixMax: n.fixMax,
            minInterval: "interval" === o || "time" === o ? e.get("minInterval") : null,
            maxInterval: "interval" === o || "time" === o ? e.get("maxInterval") : null
        });
        var a = e.get("interval");
        null != a && t.setInterval && t.setInterval(a)
    }

    function Jd(t, e) {
        if (e = e || t.get("type")) switch (e) {
            case"category":
                return new _V({
                    ordinalMeta: t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(),
                    extent: [1 / 0, -1 / 0]
                });
            case"time":
                return new AV({locale: t.ecModel.getLocaleModel(), useUTC: t.ecModel.get("useUTC")});
            default:
                return new (vV.getClass(e) || wV)
        }
    }

    function Qd(t) {
        var e = t.scale.getExtent(), n = e[0], i = e[1];
        return !(n > 0 && i > 0 || 0 > n && 0 > i)
    }

    function tf(t) {
        var e = t.getLabelModel().get("formatter"), n = "category" === t.type ? t.scale.getExtent()[0] : null;
        return "time" === t.scale.type ? function (e) {
            return function (n, i) {
                return t.scale.getFormattedLabel(n, i, e)
            }
        }(e) : "string" == typeof e ? function (e) {
            return function (n) {
                var i = t.scale.getLabel(n), r = e.replace("{value}", null != i ? i : "");
                return r
            }
        }(e) : "function" == typeof e ? function (e) {
            return function (i, r) {
                return null != n && (r = i.value - n), e(ef(t, i), r, null != i.level ? {level: i.level} : null)
            }
        }(e) : function (e) {
            return t.scale.getLabel(e)
        }
    }

    function ef(t, e) {
        return "category" === t.type ? t.scale.getLabel(e) : e.value
    }

    function nf(t) {
        var e = t.model, n = t.scale;
        if (e.get(["axisLabel", "show"]) && !n.isBlank()) {
            var i, r, o = n.getExtent();
            n instanceof _V ? r = n.count() : (i = n.getTicks(), r = i.length);
            var a, s = t.getLabelModel(), l = tf(t), u = 1;
            r > 40 && (u = Math.ceil(r / 40));
            for (var h = 0; r > h; h += u) {
                var c = i ? i[h] : {value: o[0] + h}, p = l(c, h), d = s.getTextRect(p),
                    f = rf(d, s.get("rotate") || 0);
                a ? a.union(f) : a = f
            }
            return a
        }
    }

    function rf(t, e) {
        var n = e * Math.PI / 180, i = t.width, r = t.height, o = i * Math.abs(Math.cos(n)) + Math.abs(r * Math.sin(n)),
            a = i * Math.abs(Math.sin(n)) + Math.abs(r * Math.cos(n)), s = new $D(t.x, t.y, o, a);
        return s
    }

    function of(t) {
        var e = t.get("interval");
        return null == e ? "auto" : e
    }

    function af(t) {
        return "category" === t.type && 0 === of(t.getLabelModel())
    }

    function sf(t, e) {
        var n = {};
        return y(t.mapDimensionsAll(e), function (e) {
            n[fd(t, e)] = !0
        }), b(n)
    }

    function lf(t, e, n) {
        e && y(sf(e, n), function (n) {
            var i = e.getApproximateExtent(n);
            i[0] < t[0] && (t[0] = i[0]), i[1] > t[1] && (t[1] = i[1])
        })
    }

    function uf(t) {
        return gd(t.getSource(), t)
    }

    function hf(t, e) {
        var n = e;
        e instanceof VO || (n = new VO(e));
        var i = Jd(n);
        return i.setExtent(t[0], t[1]), $d(i, n), i
    }

    function cf(t) {
        f(t, HV)
    }

    function pf(t, e) {
        return e = e || {}, Os(t, null, null, "normal" !== e.state)
    }

    function df(t) {
        return M(t) ? void y(t, function (t) {
            df(t)
        }) : void (p(YV, t) >= 0 || (YV.push(t), I(t) && (t = {install: t}), t.install(ZV)))
    }

    function ff(t) {
        return "category" === t.type ? yf(t) : xf(t)
    }

    function gf(t, e) {
        return "category" === t.type ? mf(t, e) : {
            ticks: v(t.scale.getTicks(), function (t) {
                return t.value
            })
        }
    }

    function yf(t) {
        var e = t.getLabelModel(), n = vf(t, e);
        return !e.get("show") || t.scale.isBlank() ? {labels: [], labelCategoryInterval: n.labelCategoryInterval} : n
    }

    function vf(t, e) {
        var n = _f(t, "labels"), i = of(e), r = bf(n, i);
        if (r) return r;
        var o, a;
        return I(i) ? o = Cf(t, i) : (a = "auto" === i ? Sf(t) : i, o = Tf(t, a)), wf(n, i, {
            labels: o,
            labelCategoryInterval: a
        })
    }

    function mf(t, e) {
        var n = _f(t, "ticks"), i = of(e), r = bf(n, i);
        if (r) return r;
        var o, a;
        if ((!e.get("show") || t.scale.isBlank()) && (o = []), I(i)) o = Cf(t, i, !0); else if ("auto" === i) {
            var s = vf(t, t.getLabelModel());
            a = s.labelCategoryInterval, o = v(s.labels, function (t) {
                return t.tickValue
            })
        } else a = i, o = Tf(t, a, !0);
        return wf(n, i, {ticks: o, tickCategoryInterval: a})
    }

    function xf(t) {
        var e = t.scale.getTicks(), n = tf(t);
        return {
            labels: v(e, function (e, i) {
                return {formattedLabel: n(e, i), rawLabel: t.scale.getLabel(e), tickValue: e.value}
            })
        }
    }

    function _f(t, e) {
        return JV(t)[e] || (JV(t)[e] = [])
    }

    function bf(t, e) {
        for (var n = 0; n < t.length; n++) if (t[n].key === e) return t[n].value
    }

    function wf(t, e, n) {
        return t.push({key: e, value: n}), n
    }

    function Sf(t) {
        var e = JV(t).autoInterval;
        return null != e ? e : JV(t).autoInterval = t.calculateCategoryInterval()
    }

    function Mf(t) {
        var e = If(t), n = tf(t), i = (e.axisRotate - e.labelRotate) / 180 * Math.PI, r = t.scale, o = r.getExtent(),
            a = r.count();
        if (o[1] - o[0] < 1) return 0;
        var s = 1;
        a > 40 && (s = Math.max(1, Math.floor(a / 40)));
        for (var l = o[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(i)), c = Math.abs(u * Math.sin(i)), p = 0, d = 0; l <= o[1]; l += s) {
            var f = 0, g = 0, y = ti(n({value: l}), e.font, "center", "top");
            f = 1.3 * y.width, g = 1.3 * y.height, p = Math.max(p, f, 7), d = Math.max(d, g, 7)
        }
        var v = p / h, m = d / c;
        isNaN(v) && (v = 1 / 0), isNaN(m) && (m = 1 / 0);
        var x = Math.max(0, Math.floor(Math.min(v, m))), _ = JV(t.model), b = t.getExtent(), w = _.lastAutoInterval,
            S = _.lastTickCount;
        return null != w && null != S && Math.abs(w - x) <= 1 && Math.abs(S - a) <= 1 && w > x && _.axisExtent0 === b[0] && _.axisExtent1 === b[1] ? x = w : (_.lastTickCount = a, _.lastAutoInterval = x, _.axisExtent0 = b[0], _.axisExtent1 = b[1]), x
    }

    function If(t) {
        var e = t.getLabelModel();
        return {
            axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0,
            labelRotate: e.get("rotate") || 0,
            font: e.getFont()
        }
    }

    function Tf(t, e, n) {
        function i(t) {
            var e = {value: t};
            l.push(n ? t : {formattedLabel: r(e), rawLabel: o.getLabel(e), tickValue: t})
        }

        var r = tf(t), o = t.scale, a = o.getExtent(), s = t.getLabelModel(), l = [], u = Math.max((e || 0) + 1, 1),
            h = a[0], c = o.count();
        0 !== h && u > 1 && c / u > 2 && (h = Math.round(Math.ceil(h / u) * u));
        var p = af(t), d = s.get("showMinLabel") || p, f = s.get("showMaxLabel") || p;
        d && h !== a[0] && i(a[0]);
        for (var g = h; g <= a[1]; g += u) i(g);
        return f && g - u !== a[1] && i(a[1]), l
    }

    function Cf(t, e, n) {
        var i = t.scale, r = tf(t), o = [];
        return y(i.getTicks(), function (t) {
            var a = i.getLabel(t), s = t.value;
            e(t.value, a) && o.push(n ? s : {formattedLabel: r(t), rawLabel: a, tickValue: s})
        }), o
    }

    function Af(t, e) {
        var n = t[1] - t[0], i = e, r = n / i / 2;
        t[0] += r, t[1] -= r
    }

    function Df(t, e, n, i) {
        function r(t, e) {
            return t = bi(t), e = bi(e), p ? t > e : e > t
        }

        var o = e.length;
        if (t.onBand && !n && o) {
            var a, s, l = t.getExtent();
            if (1 === o) e[0].coord = l[0], a = e[1] = {coord: l[0]}; else {
                var u = e[o - 1].tickValue - e[0].tickValue, h = (e[o - 1].coord - e[0].coord) / u;
                y(e, function (t) {
                    t.coord -= h / 2
                });
                var c = t.scale.getExtent();
                s = 1 + c[1] - e[o - 1].tickValue, a = {coord: e[o - 1].coord + h * s}, e.push(a)
            }
            var p = l[0] > l[1];
            r(e[0].coord, l[0]) && (i ? e[0].coord = l[0] : e.shift()), i && r(l[0], e[0].coord) && e.unshift({coord: l[0]}), r(l[1], a.coord) && (i ? a.coord = l[1] : e.pop()), i && r(a.coord, l[1]) && e.push({coord: l[1]})
        }
    }

    function Lf(t) {
        var e = gR.extend(t);
        return gR.registerClass(e), e
    }

    function kf(t) {
        var e = Tz.extend(t);
        return Tz.registerClass(e), e
    }

    function Pf(t) {
        var e = Iz.extend(t);
        return Iz.registerClass(e), e
    }

    function Of(t) {
        var e = Dz.extend(t);
        return Dz.registerClass(e), e
    }

    function Rf() {
        return !1
    }

    function zf(t, e, n) {
        var i = mA(), r = e.getWidth(), o = e.getHeight(), a = i.style;
        return a && (a.position = "absolute", a.left = "0", a.top = "0", a.width = r + "px", a.height = o + "px", i.setAttribute("data-zr-dom-id", t)), i.width = r * n, i.height = o * n, i
    }

    function Ef(t) {
        return parseInt(t, 10)
    }

    function Nf(t) {
        return t ? t.__builtin__ ? !0 : "function" != typeof t.resize || "function" != typeof t.refresh ? !1 : !0 : !1
    }

    function Bf(t, e) {
        var n = document.createElement("div");
        return n.style.cssText = ["position:relative", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";", n
    }

    function Vf(t) {
        t.registerPainter("canvas", aF)
    }

    function Ff(t) {
        t.registerComponentModel(sF), t.registerComponentView(lF)
    }

    function Gf(t) {
        return {
            seriesType: t, reset: function (t, e, n) {
                var i = t.getData(), r = t.get("sampling"), o = t.coordinateSystem, a = i.count();
                if (a > 10 && "cartesian2d" === o.type && r) {
                    var s = o.getBaseAxis(), l = o.getOtherAxis(s), u = s.getExtent(), h = n.getDevicePixelRatio(),
                        c = Math.abs(u[1] - u[0]) * (h || 1), p = Math.round(a / c);
                    if (p > 1) {
                        "lttb" === r && t.setData(i.lttbDownSample(i.mapDimension(l.dim), 1 / p));
                        var d = void 0;
                        "string" == typeof r ? d = uF[r] : "function" == typeof r && (d = r), d && t.setData(i.downSample(i.mapDimension(l.dim), 1 / p, d, hF))
                    }
                }
            }
        }
    }

    function Hf(t, e, n, i, r) {
        var o = t.getArea(), a = o.x, s = o.y, l = o.width, u = o.height, h = n.get(["lineStyle", "width"]) || 2;
        a -= h / 2, s -= h / 2, l += h, u += h, a = Math.floor(a), l = Math.round(l);
        var c = new Uk({shape: {x: a, y: s, width: l, height: u}});
        if (e) {
            var p = t.getBaseAxis(), d = p.isHorizontal(), f = p.inverse;
            d ? (f && (c.shape.x += l), c.shape.width = 0) : (f || (c.shape.y += u), c.shape.height = 0);
            var g = "function" == typeof r ? function (t) {
                r(t, c)
            } : null;
            hs(c, {shape: {width: l, height: u, x: a, y: s}}, n, null, i, g)
        }
        return c
    }

    function Wf(t, e, n) {
        var i = t.getArea(), r = bi(i.r0, 1), o = bi(i.r, 1), a = new ZP({
            shape: {
                cx: bi(t.cx, 1),
                cy: bi(t.cy, 1),
                r0: r,
                r: o,
                startAngle: i.startAngle,
                endAngle: i.endAngle,
                clockwise: i.clockwise
            }
        });
        if (e) {
            var s = "angle" === t.getBaseAxis().dim;
            s ? a.shape.endAngle = i.startAngle : a.shape.r = r, hs(a, {shape: {endAngle: i.endAngle, r: o}}, n)
        }
        return a
    }

    function Xf(t, e, n, i, r) {
        return t ? "polar" === t.type ? Wf(t, e, n) : "cartesian2d" === t.type ? Hf(t, e, n, i, r) : null : null
    }

    function Yf(t, e) {
        return t.type === e
    }

    function Zf(t, e) {
        var n = t.mapDimensionsAll("defaultedLabel"), i = n.length;
        if (1 === i) {
            var r = Gu(t, e, n[0]);
            return null != r ? r + "" : null
        }
        if (i) {
            for (var o = [], a = 0; a < n.length; a++) o.push(Gu(t, e, n[a]));
            return o.join(" ")
        }
    }

    function Uf(t, e) {
        var n = t.mapDimensionsAll("defaultedLabel");
        if (!M(e)) return e + "";
        for (var i = [], r = 0; r < n.length; r++) {
            var o = t.getDimensionInfo(n[r]);
            o && i.push(e[o.index])
        }
        return i.join(" ")
    }

    function jf(t, e) {
        var n = t.getArea && t.getArea();
        if (Yf(t, "cartesian2d")) {
            var i = t.getBaseAxis();
            if ("category" !== i.type || !i.onBand) {
                var r = e.getLayout("bandWidth");
                i.isHorizontal() ? (n.x -= r, n.width += 2 * r) : (n.y -= r, n.height += 2 * r)
            }
        }
        return n
    }

    function qf(t, e) {
        var n = t.get("realtimeSort", !0), i = e.getBaseAxis();
        return n && "category" === i.type && "cartesian2d" === e.type ? {
            baseAxis: i,
            otherAxis: e.getOtherAxis(i)
        } : void 0
    }

    function Kf(t, e, n, i, r, o, a, s) {
        var l, u;
        o ? (u = {x: i.x, width: i.width}, l = {y: i.y, height: i.height}) : (u = {
            y: i.y,
            height: i.height
        }, l = {x: i.x, width: i.width}), s || (a ? us : hs)(n, {shape: l}, e, r, null);
        var h = e ? t.baseAxis.model : null;
        (a ? us : hs)(n, {shape: u}, h, r)
    }

    function $f(t) {
        return null != t.startAngle && null != t.endAngle && t.startAngle === t.endAngle
    }

    function Jf(t, e, n, i, r, o, a, s) {
        var l = e.getItemVisual(n, "style");
        s || t.setShape("r", i.get(["itemStyle", "borderRadius"]) || 0), t.useStyle(l);
        var u = i.getShallow("cursor");
        if (u && t.attr("cursor", u), !s) {
            var h = a ? r.height > 0 ? "bottom" : "top" : r.width > 0 ? "left" : "right", c = Ps(i);
            ks(t, c, {
                labelFetcher: o,
                labelDataIndex: n,
                defaultText: Zf(o.getData(), n),
                inheritColor: l.fill,
                defaultOpacity: l.opacity,
                defaultOutsidePosition: h
            });
            var p = t.getTextContent();
            Vs(p, c, o.getRawValue(n), function (t) {
                return Uf(e, t)
            })
        }
        var d = i.getModel(["emphasis"]);
        Sa(t, d.get("focus"), d.get("blurScope")), Ia(t, i), $f(r) && (t.style.fill = "none", t.style.stroke = "none", y(t.states, function (t) {
            t.style && (t.style.fill = t.style.stroke = "none")
        }))
    }

    function Qf(t, e) {
        var n = t.get(["itemStyle", "borderColor"]);
        if (!n || "none" === n) return 0;
        var i = t.get(["itemStyle", "borderWidth"]) || 0, r = isNaN(e.width) ? Number.MAX_VALUE : Math.abs(e.width),
            o = isNaN(e.height) ? Number.MAX_VALUE : Math.abs(e.height);
        return Math.min(i, r, o)
    }

    function tg(t, e, n) {
        var i = t.getData(), r = [], o = i.getLayout("valueAxisHorizontal") ? 1 : 0;
        r[1 - o] = i.getLayout("valueAxisStart");
        var a = i.getLayout("largeDataIndices"), s = i.getLayout("barWidth"), l = t.getModel("backgroundStyle"),
            u = t.get("showBackground", !0);
        if (u) {
            var h = i.getLayout("largeBackgroundPoints"), c = [];
            c[1 - o] = i.getLayout("backgroundStart");
            var p = new SF({shape: {points: h}, incremental: !!n, silent: !0, z2: 0});
            p.__startPoint = c, p.__baseDimIdx = o, p.__largeDataIndices = a, p.__barWidth = s, ig(p, l, i), e.add(p)
        }
        var d = new SF({shape: {points: i.getLayout("largePoints")}, incremental: !!n});
        d.__startPoint = r, d.__baseDimIdx = o, d.__largeDataIndices = a, d.__barWidth = s, e.add(d), ng(d, t, i), tP(d).seriesIndex = t.seriesIndex, t.get("silent") || (d.on("mousedown", MF), d.on("mousemove", MF))
    }

    function eg(t, e, n) {
        var i = t.__baseDimIdx, r = 1 - i, o = t.shape.points, a = t.__largeDataIndices, s = Math.abs(t.__barWidth / 2),
            l = t.__startPoint[r];
        gF[0] = e, gF[1] = n;
        for (var u = gF[i], h = gF[1 - i], c = u - s, p = u + s, d = 0, f = o.length / 2; f > d; d++) {
            var g = 2 * d, y = o[g + i], v = o[g + r];
            if (y >= c && p >= y && (v >= l ? h >= l && v >= h : h >= v && l >= h)) return a[d]
        }
        return -1
    }

    function ng(t, e, n) {
        var i = n.getVisual("style");
        t.useStyle(h({}, i)), t.style.fill = null, t.style.stroke = i.fill, t.style.lineWidth = n.getLayout("barWidth")
    }

    function ig(t, e, n) {
        var i = e.get("borderColor") || e.get("color"), r = e.getItemStyle();
        t.useStyle(r), t.style.fill = null, t.style.stroke = i, t.style.lineWidth = n.getLayout("barWidth")
    }

    function rg(t, e, n) {
        if (Yf(n, "cartesian2d")) {
            var i = e, r = n.getArea();
            return {x: t ? i.x : r.x, y: t ? r.y : i.y, width: t ? i.width : r.width, height: t ? r.height : i.height}
        }
        var r = n.getArea(), o = e;
        return {
            cx: r.cx,
            cy: r.cy,
            r0: t ? r.r0 : o.r0,
            r: t ? r.r : o.r,
            startAngle: t ? o.startAngle : 0,
            endAngle: t ? o.endAngle : 2 * Math.PI
        }
    }

    function og(t, e, n) {
        var i = "polar" === t.type ? ZP : Uk;
        return new i({shape: rg(e, n, t), silent: !0, z2: 0})
    }

    function ag(t) {
        t.registerChartView(mF), t.registerSeriesModel(pF), t.registerLayout(t.PRIORITY.VISUAL.LAYOUT, S(Rd, "bar")), t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, TV), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, Gf("bar")), t.registerAction({
            type: "changeAxisOrder",
            event: "changeAxisOrder",
            update: "update"
        }, function (t, e) {
            var n = t.componentType || "series";
            e.eachComponent({mainType: n, query: t}, function (e) {
                t.sortInfo && e.axis.setCategorySortInfo(t.sortInfo)
            })
        })
    }

    function sg(t, e) {
        this.parent.drift(t, e)
    }

    function lg(t, e, n, i) {
        return !(!e || isNaN(e[0]) || isNaN(e[1]) || i.isIgnore && i.isIgnore(n) || i.clipShape && !i.clipShape.contain(e[0], e[1]) || "none" === t.getItemVisual(n, "symbol"))
    }

    function ug(t) {
        return null == t || D(t) || (t = {isIgnore: t}), t || {}
    }

    function hg(t) {
        var e = t.hostModel, n = e.getModel("emphasis");
        return {
            emphasisItemStyle: n.getModel("itemStyle").getItemStyle(),
            blurItemStyle: e.getModel(["blur", "itemStyle"]).getItemStyle(),
            selectItemStyle: e.getModel(["select", "itemStyle"]).getItemStyle(),
            focus: n.get("focus"),
            blurScope: n.get("blurScope"),
            hoverScale: n.get("scale"),
            labelStatesModels: Ps(e),
            cursorStyle: e.get("cursor")
        }
    }

    function cg(t, e, n) {
        var i = t.getBaseAxis(), r = t.getOtherAxis(i), o = pg(r, n), a = i.dim, s = r.dim, l = e.mapDimension(s),
            u = e.mapDimension(a), h = "x" === s || "radius" === s ? 1 : 0, c = v(t.dimensions, function (t) {
                return e.mapDimension(t)
            }), p = !1, d = e.getCalculationInfo("stackResultDimension");
        return dd(e, c[0]) && (p = !0, c[0] = d), dd(e, c[1]) && (p = !0, c[1] = d), {
            dataDimsForPoint: c,
            valueStart: o,
            valueAxisDim: s,
            baseAxisDim: a,
            stacked: !!p,
            valueDim: l,
            baseDim: u,
            baseDataOffset: h,
            stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
        }
    }

    function pg(t, e) {
        var n = 0, i = t.scale.getExtent();
        return "start" === e ? n = i[0] : "end" === e ? n = i[1] : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]), n
    }

    function dg(t, e, n, i) {
        var r = 0 / 0;
        t.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = t.valueStart);
        var o = t.baseDataOffset, a = [];
        return a[o] = n.get(t.baseDim, i), a[1 - o] = r, e.dataToPoint(a)
    }

    function fg(t) {
        return M(t) ? AF ? new Float32Array(t) : t : new DF(t)
    }

    function gg(t, e) {
        var n = [];
        return e.diff(t).add(function (t) {
            n.push({cmd: "+", idx: t})
        }).update(function (t, e) {
            n.push({cmd: "=", idx: e, idx1: t})
        }).remove(function (t) {
            n.push({cmd: "-", idx: t})
        }).execute(), n
    }

    function yg(t, e, n, i, r, o, a) {
        for (var s = gg(t, e), l = [], u = [], h = [], c = [], p = [], d = [], f = [], g = cg(r, e, a), y = t.getLayout("points") || [], v = e.getLayout("points") || [], m = 0; m < s.length; m++) {
            var x = s[m], _ = !0, b = void 0, w = void 0;
            switch (x.cmd) {
                case"=":
                    b = 2 * x.idx, w = 2 * x.idx1;
                    var S = y[b], M = y[b + 1], I = v[w], T = v[w + 1];
                    (isNaN(S) || isNaN(M)) && (S = I, M = T), l.push(S, M), u.push(I, T), h.push(n[b], n[b + 1]), c.push(i[w], i[w + 1]), f.push(e.getRawIndex(x.idx1));
                    break;
                case"+":
                    var C = x.idx, A = g.dataDimsForPoint, D = r.dataToPoint([e.get(A[0], C), e.get(A[1], C)]);
                    w = 2 * C, l.push(D[0], D[1]), u.push(v[w], v[w + 1]);
                    var L = dg(g, r, e, C);
                    h.push(L[0], L[1]), c.push(i[w], i[w + 1]), f.push(e.getRawIndex(C));
                    break;
                case"-":
                    _ = !1
            }
            _ && (p.push(x), d.push(d.length))
        }
        d.sort(function (t, e) {
            return f[t] - f[e]
        });
        for (var k = l.length, P = fg(k), O = fg(k), R = fg(k), z = fg(k), E = [], m = 0; m < d.length; m++) {
            var N = d[m], B = 2 * m, V = 2 * N;
            P[B] = l[V], P[B + 1] = l[V + 1], O[B] = u[V], O[B + 1] = u[V + 1], R[B] = h[V], R[B + 1] = h[V + 1], z[B] = c[V], z[B + 1] = c[V + 1], E[m] = p[N]
        }
        return {current: P, next: O, stackedOnCurrent: R, stackedOnNext: z, status: E}
    }

    function vg(t, e) {
        return isNaN(t) || isNaN(e)
    }

    function mg(t, e, n, i, r, o, a, s, l) {
        for (var u, h, c, p, d, f, g = n, y = 0; i > y; y++) {
            var v = e[2 * g], m = e[2 * g + 1];
            if (g >= r || 0 > g) break;
            if (vg(v, m)) {
                if (l) {
                    g += o;
                    continue
                }
                break
            }
            if (g === n) t[o > 0 ? "moveTo" : "lineTo"](v, m), c = v, p = m; else {
                var x = v - u, _ = m - h;
                if (.5 > x * x + _ * _) {
                    g += o;
                    continue
                }
                if (a > 0) {
                    var b = g + o, w = e[2 * b], S = e[2 * b + 1], M = y + 1;
                    if (l) for (; vg(w, S) && i > M;) M++, b += o, w = e[2 * b], S = e[2 * b + 1];
                    var I = .5, T = 0, C = 0, A = void 0, D = void 0;
                    if (M >= i || vg(w, S)) d = v, f = m; else {
                        T = w - u, C = S - h;
                        var L = v - u, k = w - v, P = m - h, O = S - m, R = void 0, z = void 0;
                        "x" === s ? (R = Math.abs(L), z = Math.abs(k), d = v - R * a, f = m, A = v + R * a, D = m) : "y" === s ? (R = Math.abs(P), z = Math.abs(O), d = v, f = m - R * a, A = v, D = m + R * a) : (R = Math.sqrt(L * L + P * P), z = Math.sqrt(k * k + O * O), I = z / (z + R), d = v - T * a * (1 - I), f = m - C * a * (1 - I), A = v + T * a * I, D = m + C * a * I, A = LF(A, kF(w, v)), D = LF(D, kF(S, m)), A = kF(A, LF(w, v)), D = kF(D, LF(S, m)), T = A - v, C = D - m, d = v - T * R / z, f = m - C * R / z, d = LF(d, kF(u, v)), f = LF(f, kF(h, m)), d = kF(d, LF(u, v)), f = kF(f, LF(h, m)), T = v - d, C = m - f, A = v + T * z / R, D = m + C * z / R)
                    }
                    t.bezierCurveTo(c, p, d, f, v, m), c = A, p = D
                } else t.lineTo(v, m)
            }
            u = v, h = m, g += o
        }
        return y
    }

    function xg(t, e) {
        if (t.length === e.length) {
            for (var n = 0; n < t.length; n++) if (t[n] !== e[n]) return;
            return !0
        }
    }

    function _g(t) {
        for (var e = 1 / 0, n = 1 / 0, i = -1 / 0, r = -1 / 0, o = 0; o < t.length;) {
            var a = t[o++], s = t[o++];
            isNaN(a) || (e = Math.min(a, e), i = Math.max(a, i)), isNaN(s) || (n = Math.min(s, n), r = Math.max(s, r))
        }
        return [[e, n], [i, r]]
    }

    function bg(t, e) {
        var n = _g(t), i = n[0], r = n[1], o = _g(e), a = o[0], s = o[1];
        return Math.max(Math.abs(i[0] - a[0]), Math.abs(i[1] - a[1]), Math.abs(r[0] - s[0]), Math.abs(r[1] - s[1]))
    }

    function wg(t) {
        return "number" == typeof t ? t : t ? .5 : 0
    }

    function Sg(t, e, n) {
        if (!n.valueDim) return [];
        for (var i = e.count(), r = fg(2 * i), o = 0; i > o; o++) {
            var a = dg(n, t, e, o);
            r[2 * o] = a[0], r[2 * o + 1] = a[1]
        }
        return r
    }

    function Mg(t, e, n) {
        for (var i = e.getBaseAxis(), r = "x" === i.dim || "radius" === i.dim ? 0 : 1, o = [], a = 0, s = [], l = [], u = []; a < t.length - 2; a += 2) switch (u[0] = t[a + 2], u[1] = t[a + 3], l[0] = t[a], l[1] = t[a + 1], o.push(l[0], l[1]), n) {
            case"end":
                s[r] = u[r], s[1 - r] = l[1 - r], o.push(s[0], s[1]);
                break;
            case"middle":
                var h = (l[r] + u[r]) / 2, c = [];
                s[r] = c[r] = h, s[1 - r] = l[1 - r], c[1 - r] = u[1 - r], o.push(s[0], s[1]), o.push(c[0], c[1]);
                break;
            default:
                s[r] = l[r], s[1 - r] = u[1 - r], o.push(s[0], s[1])
        }
        return o.push(t[a++], t[a++]), o
    }

    function Ig(t, e) {
        var n = t.getVisual("visualMeta");
        if (n && n.length && t.count() && "cartesian2d" === e.type) {
            for (var i, r, o = n.length - 1; o >= 0; o--) {
                var a = n[o].dimension, s = t.dimensions[a], l = t.getDimensionInfo(s);
                if (i = l && l.coordDim, "x" === i || "y" === i) {
                    r = n[o];
                    break
                }
            }
            if (r) {
                var u = e.getAxis(i), h = v(r.stops, function (t) {
                    return {offset: 0, coord: u.toGlobalCoord(u.dataToCoord(t.value, !0)), color: t.color}
                }), c = h.length, p = r.outerColors.slice();
                c && h[0].coord > h[c - 1].coord && (h.reverse(), p.reverse());
                var d = 10, f = h[0].coord - d, g = h[c - 1].coord + d, m = g - f;
                if (.001 > m) return "transparent";
                y(h, function (t) {
                    t.offset = (t.coord - f) / m
                }), h.push({
                    offset: c ? h[c - 1].offset : .5,
                    color: p[1] || "transparent"
                }), h.unshift({offset: c ? h[0].offset : .5, color: p[0] || "transparent"});
                var x = new uO(0, 0, 0, 0, h, !0);
                return x[i] = f, x[i + "2"] = g, x
            }
        }
    }

    function Tg(t, e, n) {
        var i = t.get("showAllSymbol"), r = "auto" === i;
        if (!i || r) {
            var o = n.getAxesByScale("ordinal")[0];
            if (o && (!r || !Cg(o, e))) {
                var a = e.mapDimension(o.dim), s = {};
                return y(o.getViewLabels(), function (t) {
                    var e = o.scale.getRawOrdinalNumber(t.tickValue);
                    s[e] = 1
                }), function (t) {
                    return !s.hasOwnProperty(e.get(a, t))
                }
            }
        }
    }

    function Cg(t, e) {
        var n = t.getExtent(), i = Math.abs(n[1] - n[0]) / t.scale.count();
        isNaN(i) && (i = 0);
        for (var r = e.count(), o = Math.max(1, Math.round(r / 5)), a = 0; r > a; a += o) if (1.5 * TF.getSymbolSize(e, a)[t.isHorizontal() ? 1 : 0] > i) return !1;
        return !0
    }

    function Ag(t, e) {
        return isNaN(t) || isNaN(e)
    }

    function Dg(t) {
        for (var e = t.length / 2; e > 0 && Ag(t[2 * e - 2], t[2 * e - 1]); e--) ;
        return e - 1
    }

    function Lg(t, e) {
        return [t[2 * e], t[2 * e + 1]]
    }

    function kg(t, e, n) {
        for (var i, r, o = t.length / 2, a = "x" === n ? 0 : 1, s = 0, l = -1, u = 0; o > u; u++) if (r = t[2 * u + a], !isNaN(r) && !isNaN(t[2 * u + 1 - a])) if (0 !== u) {
            if (e >= i && r >= e || i >= e && e >= r) {
                l = u;
                break
            }
            s = u, i = r
        } else i = r;
        return {range: [s, l], t: (e - i) / (r - i)}
    }

    function Pg(t, e, n, i) {
        if (Yf(e, "cartesian2d")) {
            var r = i.getModel("endLabel"), o = r.get("show"), a = r.get("valueAnimation"), s = i.getData(),
                l = {lastFrameIndex: 0}, u = o ? function (n, i) {
                    t._endLabelOnDuring(n, i, s, l, a, r, e)
                } : null, h = e.getBaseAxis().isHorizontal(), c = Hf(e, n, i, function () {
                    var e = t._endLabel;
                    e && n && null != l.originalX && e.attr({x: l.originalX, y: l.originalY})
                }, u);
            if (!i.get("clip", !0)) {
                var p = c.shape, d = Math.max(p.width, p.height);
                h ? (p.y -= d, p.height += 2 * d) : (p.x -= d, p.width += 2 * d)
            }
            return u && u(1, c), c
        }
        return Wf(e, n, i)
    }

    function Og(t, e) {
        var n = e.getBaseAxis(), i = n.isHorizontal(), r = n.inverse, o = i ? r ? "right" : "left" : "center",
            a = i ? "middle" : r ? "top" : "bottom";
        return {normal: {align: t.get("align") || o, verticalAlign: t.get("verticalAlign") || a}}
    }

    function Rg(t, e) {
        return {
            seriesType: t, plan: Ch(), reset: function (t) {
                var n = t.getData(), i = t.coordinateSystem, r = t.pipelineContext, o = e || r.large;
                if (i) {
                    var a = v(i.dimensions, function (t) {
                        return n.mapDimension(t)
                    }).slice(0, 2), s = a.length, l = n.getCalculationInfo("stackResultDimension");
                    dd(n, a[0]) && (a[0] = l), dd(n, a[1]) && (a[1] = l);
                    var u = n.getDimensionInfo(a[0]), h = n.getDimensionInfo(a[1]), c = u && u.index, p = h && h.index;
                    return s && {
                        progress: function (t, e) {
                            for (var n = t.end - t.start, r = o && fg(n * s), a = [], l = [], u = t.start, h = 0; u < t.end; u++) {
                                var d = void 0;
                                if (1 === s) {
                                    var f = e.getByDimIdx(c, u);
                                    d = i.dataToPoint(f, null, l)
                                } else a[0] = e.getByDimIdx(c, u), a[1] = e.getByDimIdx(p, u), d = i.dataToPoint(a, null, l);
                                o ? (r[h++] = d[0], r[h++] = d[1]) : e.setItemLayout(u, d.slice())
                            }
                            o && e.setLayout("points", r)
                        }
                    }
                }
            }
        }
    }

    function zg(t) {
        t.registerChartView(EF), t.registerSeriesModel(IF), t.registerLayout(Rg("line", !0)), t.registerVisual({
            seriesType: "line",
            reset: function (t) {
                var e = t.getData(), n = t.getModel("lineStyle").getLineStyle();
                n && !n.stroke && (n.stroke = e.getVisual("style").fill), e.setVisual("legendLineStyle", n)
            }
        }), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, Gf("line"))
    }

    function Eg(t, e) {
        return kl(t.getBoxLayoutParams(), {width: e.getWidth(), height: e.getHeight()})
    }

    function Ng(t, e, n) {
        e.eachSeriesByType(t, function (t) {
            var e = t.getData(), i = e.mapDimension("value"), r = Eg(t, n), o = t.get("center"), a = t.get("radius");
            M(a) || (a = [0, a]), M(o) || (o = [o, o]);
            var s = _i(r.width, n.getWidth()), l = _i(r.height, n.getHeight()), u = Math.min(s, l),
                h = _i(o[0], s) + r.x, c = _i(o[1], l) + r.y, p = _i(a[0], u / 2), d = _i(a[1], u / 2),
                f = -t.get("startAngle") * BF, g = t.get("minAngle") * BF, y = 0;
            e.each(i, function (t) {
                !isNaN(t) && y++
            });
            var v = e.getSum(i), m = Math.PI / (v || y) * 2, x = t.get("clockwise"), _ = t.get("roseType"),
                b = t.get("stillShowZeroSum"), w = e.getDataExtent(i);
            w[0] = 0;
            var S = NF, I = 0, T = f, C = x ? 1 : -1;
            if (e.setLayout({viewRect: r, r: d}), e.each(i, function (t, n) {
                var i;
                if (isNaN(t)) return void e.setItemLayout(n, {
                    angle: 0 / 0,
                    startAngle: 0 / 0,
                    endAngle: 0 / 0,
                    clockwise: x,
                    cx: h,
                    cy: c,
                    r0: p,
                    r: _ ? 0 / 0 : d
                });
                i = "area" !== _ ? 0 === v && b ? m : t * m : NF / y, g > i ? (i = g, S -= g) : I += t;
                var r = T + C * i;
                e.setItemLayout(n, {
                    angle: i,
                    startAngle: T,
                    endAngle: r,
                    clockwise: x,
                    cx: h,
                    cy: c,
                    r0: p,
                    r: _ ? xi(t, w, [p, d]) : d
                }), T = r
            }), NF > S && y) if (.001 >= S) {
                var A = NF / y;
                e.each(i, function (t, n) {
                    if (!isNaN(t)) {
                        var i = e.getItemLayout(n);
                        i.angle = A, i.startAngle = f + C * n * A, i.endAngle = f + C * (n + 1) * A
                    }
                })
            } else m = S / I, T = f, e.each(i, function (t, n) {
                if (!isNaN(t)) {
                    var i = e.getItemLayout(n), r = i.angle === g ? g : t * m;
                    i.startAngle = T, i.endAngle = T + C * r, T += C * r
                }
            })
        })
    }

    function Bg(t) {
        return {
            seriesType: t, reset: function (t, e) {
                var n = e.findComponents({mainType: "legend"});
                if (n && n.length) {
                    var i = t.getData();
                    i.filterSelf(function (t) {
                        for (var e = i.getName(t), r = 0; r < n.length; r++) if (!n[r].isSelected(e)) return !1;
                        return !0
                    })
                }
            }
        }
    }

    function Vg(t, e, n, i, r, o, a, s, l, u) {
        function h(t) {
            for (var o = t.rB, a = o * o, s = 0; s < t.list.length; s++) {
                var l = t.list[s], u = Math.abs(l.label.y - n), h = i + l.len, c = h * h,
                    p = Math.sqrt((1 - Math.abs(u * u / a)) * c);
                l.label.x = e + (p + l.len2) * r
            }
        }

        function c(t) {
            for (var o = {list: [], maxY: 0}, a = {
                list: [],
                maxY: 0
            }, s = 0; s < t.length; s++) if ("none" === t[s].labelAlignTo) {
                var l = t[s], u = l.label.y > n ? a : o, c = Math.abs(l.label.y - n);
                if (c > u.maxY) {
                    var p = l.label.x - e - l.len2 * r, d = i + l.len,
                        f = Math.abs(p) < d ? Math.sqrt(c * c / (1 - p * p / d / d)) : d;
                    u.rB = f, u.maxY = c
                }
                u.list.push(l)
            }
            h(o), h(a)
        }

        if (!(t.length < 2)) {
            for (var p = t.length, d = 0; p > d; d++) if ("outer" === t[d].position && "labelLine" === t[d].labelAlignTo) {
                var f = t[d].label.x - u;
                t[d].linePoints[1][0] += f, t[d].label.x = u
            }
            dc(t, l, l + a) && c(t)
        }
    }

    function Fg(t, e, n, i, r, o, a, s) {
        for (var l = [], u = [], h = Number.MAX_VALUE, c = -Number.MAX_VALUE, p = 0; p < t.length; p++) {
            var d = t[p].label;
            Gg(t[p]) || (d.x < e ? (h = Math.min(h, d.x), l.push(t[p])) : (c = Math.max(c, d.x), u.push(t[p])))
        }
        Vg(u, e, n, i, 1, r, o, a, s, c), Vg(l, e, n, i, -1, r, o, a, s, h);
        for (var p = 0; p < t.length; p++) {
            var f = t[p], d = f.label;
            if (!Gg(f)) {
                var g = f.linePoints;
                if (g) {
                    var y = "edge" === f.labelAlignTo, v = f.rect.width, m = void 0;
                    m = y ? d.x < e ? g[2][0] - f.labelDistance - a - f.edgeDistance : a + r - f.edgeDistance - g[2][0] - f.labelDistance : d.x < e ? d.x - a - f.bleedMargin : a + r - d.x - f.bleedMargin, m < f.rect.width && (f.label.style.width = m, "edge" === f.labelAlignTo && (v = m));
                    var x = g[1][0] - g[2][0];
                    y ? g[2][0] = d.x < e ? a + f.edgeDistance + v + f.labelDistance : a + r - f.edgeDistance - v - f.labelDistance : (g[2][0] = d.x < e ? d.x + f.labelDistance : d.x - f.labelDistance, g[1][0] = g[2][0] + x), g[1][1] = g[2][1] = d.y
                }
            }
        }
    }

    function Gg(t) {
        return "center" === t.position
    }

    function Hg(t) {
        function e(t) {
            t.ignore = !0
        }

        function n(t) {
            if (!t.ignore) return !0;
            for (var e in t.states) if (t.states[e].ignore === !1) return !0;
            return !1
        }

        var i, r, o = t.getData(), a = [], s = !1, l = (t.get("minShowLabelAngle") || 0) * VF,
            u = o.getLayout("viewRect"), h = o.getLayout("r"), c = u.width, p = u.x, d = u.y, f = u.height;
        o.each(function (t) {
            var u = o.getItemGraphicEl(t), d = u.shape, f = u.getTextContent(), g = u.getTextGuideLine(),
                v = o.getItemModel(t), m = v.getModel("label"),
                x = m.get("position") || v.get(["emphasis", "label", "position"]), _ = m.get("distanceToLabelLine"),
                b = m.get("alignTo"), w = _i(m.get("edgeDistance"), c), S = m.get("bleedMargin"),
                M = v.getModel("labelLine"), I = M.get("length");
            I = _i(I, c);
            var T = M.get("length2");
            if (T = _i(T, c), Math.abs(d.endAngle - d.startAngle) < l) return y(f.states, e), void (f.ignore = !0);
            if (n(f)) {
                var C, A, D, L, k = (d.startAngle + d.endAngle) / 2, P = Math.cos(k), O = Math.sin(k);
                i = d.cx, r = d.cy;
                var R = "inside" === x || "inner" === x;
                if ("center" === x) C = d.cx, A = d.cy, L = "center"; else {
                    var z = (R ? (d.r + d.r0) / 2 * P : d.r * P) + i, E = (R ? (d.r + d.r0) / 2 * O : d.r * O) + r;
                    if (C = z + 3 * P, A = E + 3 * O, !R) {
                        var N = z + P * (I + h - d.r), B = E + O * (I + h - d.r), V = N + (0 > P ? -1 : 1) * T, F = B;
                        C = "edge" === b ? 0 > P ? p + w : p + c - w : V + (0 > P ? -_ : _), A = F, D = [[z, E], [N, B], [V, F]]
                    }
                    L = R ? "center" : "edge" === b ? P > 0 ? "right" : "left" : P > 0 ? "left" : "right"
                }
                var G, H = m.get("rotate");
                if (G = "number" == typeof H ? H * (Math.PI / 180) : H ? 0 > P ? -k + Math.PI : -k : 0, s = !!G, f.x = C, f.y = A, f.rotation = G, f.setStyle({verticalAlign: "middle"}), R) {
                    f.setStyle({align: L});
                    var W = f.states.select;
                    W && (W.x += f.x, W.y += f.y)
                } else {
                    var X = f.getBoundingRect().clone();
                    X.applyTransform(f.getComputedTransform());
                    var Y = (f.style.margin || 0) + 2.1;
                    X.y -= Y / 2, X.height += Y, a.push({
                        label: f,
                        labelLine: g,
                        position: x,
                        len: I,
                        len2: T,
                        minTurnAngle: M.get("minTurnAngle"),
                        maxSurfaceAngle: M.get("maxSurfaceAngle"),
                        surfaceNormal: new HD(P, O),
                        linePoints: D,
                        textAlign: L,
                        labelDistance: _,
                        labelAlignTo: b,
                        edgeDistance: w,
                        bleedMargin: S,
                        rect: X
                    })
                }
                u.setTextConfig({inside: R})
            }
        }), !s && t.get("avoidLabelOverlap") && Fg(a, i, r, h, c, f, p, d);
        for (var g = 0; g < a.length; g++) {
            var v = a[g], m = v.label, x = v.labelLine, _ = isNaN(m.x) || isNaN(m.y);
            if (m) {
                m.setStyle({align: v.textAlign}), _ && (y(m.states, e), m.ignore = !0);
                var b = m.states.select;
                b && (b.x += m.x, b.y += m.y)
            }
            if (x) {
                var w = v.linePoints;
                _ || !w ? (y(x.states, e), x.ignore = !0) : (rc(w, v.minTurnAngle), oc(w, v.surfaceNormal, v.maxSurfaceAngle), x.setShape({points: w}), m.__hostTarget.textGuideLineConfig = {anchor: new HD(w[0][0], w[0][1])})
            }
        }
    }

    function Wg(t, e) {
        var n = t.get("borderRadius");
        return null == n ? null : (M(n) || (n = [n, n]), {
            innerCornerRadius: ri(n[0], e.r0),
            cornerRadius: ri(n[1], e.r)
        })
    }

    function Xg(t, e, n) {
        e = M(e) && {coordDimensions: e} || h({}, e);
        var i = t.getSource(), r = ud(i, e), o = new fV(r, t);
        return o.initData(i, n), o
    }

    function Yg(t) {
        t.registerChartView(GF), t.registerSeriesModel(WF), mc("pie", t.registerAction), t.registerLayout(S(Ng, "pie")), t.registerProcessor(Bg("pie"))
    }

    function Zg(t, n, i, r) {
        y(rG, function (o, a) {
            var s = l(l({}, iG[a], !0), r, !0), u = function (t) {
                function i() {
                    for (var e = [], i = 0; i < arguments.length; i++) e[i] = arguments[i];
                    var r = t.apply(this, e) || this;
                    return r.type = n + "Axis." + a, r
                }

                return e(i, t), i.prototype.mergeDefaultAndTheme = function (t, e) {
                    var n = Rl(this), i = n ? El(t) : {}, r = e.getTheme();
                    l(t, r.get(a + "Axis")), l(t, this.getDefaultOption()), t.type = Ug(t), n && zl(t, i, n)
                }, i.prototype.optionUpdated = function () {
                    var t = this.option;
                    "category" === t.type && (this.__ordinalMeta = mV.createByAxisModel(this))
                }, i.prototype.getCategories = function (t) {
                    var e = this.option;
                    return "category" === e.type ? t ? e.data : this.__ordinalMeta.categories : void 0
                }, i.prototype.getOrdinalMeta = function () {
                    return this.__ordinalMeta
                }, i.type = n + "Axis." + a, i.defaultOption = s, i
            }(i);
            t.registerComponentModel(u)
        }), t.registerSubTypeDefaulter(n + "Axis", Ug)
    }

    function Ug(t) {
        return t.type || (t.data ? "category" : "value")
    }

    function jg(t) {
        return "interval" === t.type || "time" === t.type
    }

    function qg(t, e, n) {
        n = n || {};
        var i = t.coordinateSystem, r = e.axis, o = {}, a = r.getAxesOnZeroOf()[0], s = r.position,
            l = a ? "onZero" : s, u = r.dim, h = i.getRect(), c = [h.x, h.x + h.width, h.y, h.y + h.height],
            p = {left: 0, right: 1, top: 0, bottom: 1, onZero: 2}, d = e.get("offset") || 0,
            f = "x" === u ? [c[2] - d, c[3] + d] : [c[0] - d, c[1] + d];
        if (a) {
            var g = a.toGlobalCoord(a.dataToCoord(0));
            f[p.onZero] = Math.max(Math.min(g, f[1]), f[0])
        }
        o.position = ["y" === u ? f[p[l]] : c[0], "x" === u ? f[p[l]] : c[3]], o.rotation = Math.PI / 2 * ("x" === u ? 0 : 1);
        var y = {top: -1, bottom: 1, left: -1, right: 1};
        o.labelDirection = o.tickDirection = o.nameDirection = y[s], o.labelOffset = a ? f[p[s]] - f[p.onZero] : 0, e.get(["axisTick", "inside"]) && (o.tickDirection = -o.tickDirection), N(n.labelInside, e.get(["axisLabel", "inside"])) && (o.labelDirection = -o.labelDirection);
        var v = e.get(["axisLabel", "rotate"]);
        return o.labelRotate = "top" === l ? -v : v, o.z2 = 1, o
    }

    function Kg(t) {
        return "cartesian2d" === t.get("coordinateSystem")
    }

    function $g(t) {
        var e = {xAxisModel: null, yAxisModel: null};
        return y(e, function (n, i) {
            var r = i.replace(/Model$/, ""), o = t.getReferringComponents(r, wL).models[0];
            e[i] = o
        }), e
    }

    function Jg(t, e) {
        return t.getCoordSysModel() === e
    }

    function Qg(t, e, n, i) {
        function r(t) {
            return t.dim + "_" + t.index
        }

        n.getAxesOnZeroOf = function () {
            return o ? [o] : []
        };
        var o, a = t[e], s = n.model, l = s.get(["axisLine", "onZero"]), u = s.get(["axisLine", "onZeroAxisIndex"]);
        if (l) {
            if (null != u) ty(a[u]) && (o = a[u]); else for (var h in a) if (a.hasOwnProperty(h) && ty(a[h]) && !i[r(a[h])]) {
                o = a[h];
                break
            }
            o && (i[r(o)] = !0)
        }
    }

    function ty(t) {
        return t && "category" !== t.type && "time" !== t.type && Qd(t)
    }

    function ey(t, e) {
        var n = t.getExtent(), i = n[0] + n[1];
        t.toGlobalCoord = "x" === t.dim ? function (t) {
            return t + e
        } : function (t) {
            return i - t + e
        }, t.toLocalCoord = "x" === t.dim ? function (t) {
            return t - e
        } : function (t) {
            return i - t + e
        }
    }

    function ny(t, e, n, i) {
        var r, o, a = Ai(n - t), s = i[0] > i[1], l = "start" === e && !s || "start" !== e && s;
        return Di(a - hG / 2) ? (o = l ? "bottom" : "top", r = "center") : Di(a - 1.5 * hG) ? (o = l ? "top" : "bottom", r = "center") : (o = "middle", r = 1.5 * hG > a && a > hG / 2 ? l ? "left" : "right" : l ? "right" : "left"), {
            rotation: a,
            textAlign: r,
            textVerticalAlign: o
        }
    }

    function iy(t, e, n) {
        if (!af(t.axis)) {
            var i = t.get(["axisLabel", "showMinLabel"]), r = t.get(["axisLabel", "showMaxLabel"]);
            e = e || [], n = n || [];
            var o = e[0], a = e[1], s = e[e.length - 1], l = e[e.length - 2], u = n[0], h = n[1], c = n[n.length - 1],
                p = n[n.length - 2];
            i === !1 ? (ry(o), ry(u)) : oy(o, a) && (i ? (ry(a), ry(h)) : (ry(o), ry(u))), r === !1 ? (ry(s), ry(c)) : oy(l, s) && (r ? (ry(l), ry(p)) : (ry(s), ry(c)))
        }
    }

    function ry(t) {
        t && (t.ignore = !0)
    }

    function oy(t, e) {
        var n = t && t.getBoundingRect().clone(), i = e && e.getBoundingRect().clone();
        if (n && i) {
            var r = Hn([]);
            return Zn(r, r, -t.rotation), n.applyTransform(Xn([], r, t.getLocalTransform())), i.applyTransform(Xn([], r, e.getLocalTransform())), n.intersect(i)
        }
    }

    function ay(t) {
        return "middle" === t || "center" === t
    }

    function sy(t, e, n, i, r) {
        for (var o = [], a = [], s = [], l = 0; l < t.length; l++) {
            var u = t[l].coord;
            a[0] = u, a[1] = 0, s[0] = u, s[1] = n, e && (ge(a, a, e), ge(s, s, e));
            var h = new eO({
                subPixelOptimize: !0,
                shape: {x1: a[0], y1: a[1], x2: s[0], y2: s[1]},
                style: i,
                z2: 2,
                autoBatch: !0,
                silent: !0
            });
            h.anid = r + "_" + t[l].tickValue, o.push(h)
        }
        return o
    }

    function ly(t, e, n, i) {
        var r = n.axis, o = n.getModel("axisTick"), a = o.get("show");
        if ("auto" === a && i.handleAutoShown && (a = i.handleAutoShown("axisTick")), a && !r.scale.isBlank()) {
            for (var s = o.getModel("lineStyle"), l = i.tickDirection * o.get("length"), u = r.getTicksCoords(), h = sy(u, e.transform, l, c(s.getLineStyle(), {stroke: n.get(["axisLine", "lineStyle", "color"])}), "ticks"), p = 0; p < h.length; p++) t.add(h[p]);
            return h
        }
    }

    function uy(t, e, n, i) {
        var r = n.axis, o = n.getModel("minorTick");
        if (o.get("show") && !r.scale.isBlank()) {
            var a = r.getMinorTicksCoords();
            if (a.length) for (var s = o.getModel("lineStyle"), l = i * o.get("length"), u = c(s.getLineStyle(), c(n.getModel("axisTick").getLineStyle(), {stroke: n.get(["axisLine", "lineStyle", "color"])})), h = 0; h < a.length; h++) for (var p = sy(a[h], e.transform, l, u, "minorticks_" + h), d = 0; d < p.length; d++) t.add(p[d])
        }
    }

    function hy(t, e, n, i) {
        var r = n.axis, o = N(i.axisLabelShow, n.get(["axisLabel", "show"]));
        if (o && !r.scale.isBlank()) {
            var a = n.getModel("axisLabel"), s = a.get("margin"), l = r.getViewLabels(),
                u = (N(i.labelRotate, a.get("rotate")) || 0) * hG / 180,
                h = cG.innerTextLayout(i.rotation, u, i.labelDirection), c = n.getCategories && n.getCategories(!0),
                p = [], d = cG.isLabelSilent(n), f = n.get("triggerEvent");
            return y(l, function (o, l) {
                var u = "ordinal" === r.scale.type ? r.scale.getRawOrdinalNumber(o.tickValue) : o.tickValue,
                    g = o.formattedLabel, y = o.rawLabel, v = a;
                if (c && c[u]) {
                    var m = c[u];
                    D(m) && m.textStyle && (v = new VO(m.textStyle, a, n.ecModel))
                }
                var x = v.getTextColor() || n.get(["axisLine", "lineStyle", "color"]), _ = r.dataToCoord(u),
                    b = new $k({
                        x: _,
                        y: i.labelOffset + i.labelDirection * s,
                        rotation: h.rotation,
                        silent: d,
                        z2: 10,
                        style: Os(v, {
                            text: g,
                            align: v.getShallow("align", !0) || h.textAlign,
                            verticalAlign: v.getShallow("verticalAlign", !0) || v.getShallow("baseline", !0) || h.textVerticalAlign,
                            fill: "function" == typeof x ? x("category" === r.type ? y : "value" === r.type ? u + "" : u, l) : x
                        })
                    });
                if (b.anid = "label_" + u, f) {
                    var w = cG.makeAxisEventDataBase(n);
                    w.targetType = "axisLabel", w.value = y, tP(b).eventData = w
                }
                e.add(b), b.updateTransform(), p.push(b), t.add(b), b.decomposeTransform()
            }), p
        }
    }

    function cy(t, e) {
        var n = {axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {}};
        return py(n, t, e), n.seriesInvolved && fy(n, t), n
    }

    function py(t, e, n) {
        var i = e.getComponent("tooltip"), r = e.getComponent("axisPointer"), o = r.get("link", !0) || [], a = [];
        y(n.getCoordinateSystems(), function (n) {
            function s(i, s, l) {
                var h = l.model.getModel("axisPointer", r), p = h.get("show");
                if (p && ("auto" !== p || i || _y(h))) {
                    null == s && (s = h.get("triggerTooltip")), h = i ? dy(l, c, r, e, i, s) : h;
                    var d = h.get("snap"), f = by(l.model), g = s || d || "category" === l.type, y = t.axesInfo[f] = {
                        key: f,
                        axis: l,
                        coordSys: n,
                        axisPointerModel: h,
                        triggerTooltip: s,
                        involveSeries: g,
                        snap: d,
                        useHandle: _y(h),
                        seriesModels: [],
                        linkGroup: null
                    };
                    u[f] = y, t.seriesInvolved = t.seriesInvolved || g;
                    var v = gy(o, l);
                    if (null != v) {
                        var m = a[v] || (a[v] = {axesInfo: {}});
                        m.axesInfo[f] = y, m.mapper = o[v].mapper, y.linkGroup = m
                    }
                }
            }

            if (n.axisPointerEnabled) {
                var l = by(n.model), u = t.coordSysAxesInfo[l] = {};
                t.coordSysMap[l] = n;
                var h = n.model, c = h.getModel("tooltip", i);
                if (y(n.getAxes(), S(s, !1, null)), n.getTooltipAxes && i && c.get("show")) {
                    var p = "axis" === c.get("trigger"), d = "cross" === c.get(["axisPointer", "type"]),
                        f = n.getTooltipAxes(c.get(["axisPointer", "axis"]));
                    (p || d) && y(f.baseAxes, S(s, d ? "cross" : !0, p)), d && y(f.otherAxes, S(s, "cross", !1))
                }
            }
        })
    }

    function dy(t, e, n, i, r, o) {
        var a = e.getModel("axisPointer"),
            l = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"],
            u = {};
        y(l, function (t) {
            u[t] = s(a.get(t))
        }), u.snap = "category" !== t.type && !!o, "cross" === a.get("type") && (u.type = "line");
        var h = u.label || (u.label = {});
        if (null == h.show && (h.show = !1), "cross" === r) {
            var p = a.get(["label", "show"]);
            if (h.show = null != p ? p : !0, !o) {
                var d = u.lineStyle = a.get("crossStyle");
                d && c(h, d.textStyle)
            }
        }
        return t.model.getModel("axisPointer", new VO(u, n, i))
    }

    function fy(t, e) {
        e.eachSeries(function (e) {
            var n = e.coordinateSystem, i = e.get(["tooltip", "trigger"], !0), r = e.get(["tooltip", "show"], !0);
            n && "none" !== i && i !== !1 && "item" !== i && r !== !1 && e.get(["axisPointer", "show"], !0) !== !1 && y(t.coordSysAxesInfo[by(n.model)], function (t) {
                var i = t.axis;
                n.getAxis(i.dim) === i && (t.seriesModels.push(e), null == t.seriesDataCount && (t.seriesDataCount = 0), t.seriesDataCount += e.getData().count())
            })
        })
    }

    function gy(t, e) {
        for (var n = e.model, i = e.dim, r = 0; r < t.length; r++) {
            var o = t[r] || {};
            if (yy(o[i + "AxisId"], n.id) || yy(o[i + "AxisIndex"], n.componentIndex) || yy(o[i + "AxisName"], n.name)) return r
        }
    }

    function yy(t, e) {
        return "all" === t || M(t) && p(t, e) >= 0 || t === e
    }

    function vy(t) {
        var e = my(t);
        if (e) {
            var n = e.axisPointerModel, i = e.axis.scale, r = n.option, o = n.get("status"), a = n.get("value");
            null != a && (a = i.parse(a));
            var s = _y(n);
            null == o && (r.status = s ? "show" : "hide");
            var l = i.getExtent().slice();
            l[0] > l[1] && l.reverse(), (null == a || a > l[1]) && (a = l[1]), a < l[0] && (a = l[0]), r.value = a, s && (r.status = e.axis.scale.isBlank() ? "hide" : "show")
        }
    }

    function my(t) {
        var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
        return e && e.axesInfo[by(t)]
    }

    function xy(t) {
        var e = my(t);
        return e && e.axisPointerModel
    }

    function _y(t) {
        return !!t.get(["handle", "show"])
    }

    function by(t) {
        return t.type + "||" + t.id
    }

    function wy(t, e, n, i) {
        var r = n.axis;
        if (!r.scale.isBlank()) {
            var o = n.getModel("splitArea"), a = o.getModel("areaStyle"), s = a.get("color"),
                l = i.coordinateSystem.getRect(), u = r.getTicksCoords({tickModel: o, clamp: !0});
            if (u.length) {
                var h = s.length, p = gG(t).splitAreaColors, d = Z(), f = 0;
                if (p) for (var g = 0; g < u.length; g++) {
                    var y = p.get(u[g].tickValue);
                    if (null != y) {
                        f = (y + (h - 1) * g) % h;
                        break
                    }
                }
                var v = r.toGlobalCoord(u[0].coord), m = a.getAreaStyle();
                s = M(s) ? s : [s];
                for (var g = 1; g < u.length; g++) {
                    var x = r.toGlobalCoord(u[g].coord), _ = void 0, b = void 0, w = void 0, S = void 0;
                    r.isHorizontal() ? (_ = v, b = l.y, w = x - _, S = l.height, v = _ + w) : (_ = l.x, b = v, w = l.width, S = x - b, v = b + S);
                    var I = u[g - 1].tickValue;
                    null != I && d.set(I, f), e.add(new Uk({
                        anid: null != I ? "area_" + I : null,
                        shape: {x: _, y: b, width: w, height: S},
                        style: c({fill: s[f]}, m),
                        autoBatch: !0,
                        silent: !0
                    })), f = (f + 1) % h
                }
                gG(t).splitAreaColors = d
            }
        }
    }

    function Sy(t) {
        gG(t).splitAreaColors = null
    }

    function My(t) {
        t.registerComponentView(wG), t.registerComponentModel(KF), t.registerCoordinateSystem("cartesian2d", uG), Zg(t, "x", $F, SG), Zg(t, "y", $F, SG), t.registerComponentView(_G), t.registerComponentView(bG), t.registerPreprocessor(function (t) {
            t.xAxis && t.yAxis && !t.grid && (t.grid = {})
        })
    }

    function Iy(t) {
        df(My), t.registerSeriesModel(XF), t.registerChartView(qF), t.registerLayout(Rg("scatter"))
    }

    function Ty(t) {
        return M(t) || (t = [+t, +t]), t
    }

    function Cy(t, e) {
        var n = e.rippleEffectColor || e.color;
        t.eachChild(function (t) {
            t.attr({
                z: e.z,
                zlevel: e.zlevel,
                style: {stroke: "stroke" === e.brushType ? n : null, fill: "fill" === e.brushType ? n : null}
            })
        })
    }

    function Ay(t) {
        t.registerChartView(TG), t.registerSeriesModel(CG), t.registerLayout(Rg("effectScatter"))
    }

    function Dy(t, e, n) {
        var i = t.ends;
        return new kG({shape: {points: n ? Py(i, t) : i}, z2: 100})
    }

    function Ly(t, e) {
        for (var n = !0, i = 0; i < e.ends.length; i++) if (t.contain(e.ends[i][0], e.ends[i][1])) {
            n = !1;
            break
        }
        return n
    }

    function ky(t, e, n, i) {
        var r = e.getItemModel(n);
        t.useStyle(e.getItemVisual(n, "style")), t.style.strokeNoScale = !0, t.__simpleBox = i, Ia(t, r)
    }

    function Py(t, e) {
        return v(t, function (t) {
            return t = t.slice(), t[1] = e.initBaseline, t
        })
    }

    function Oy(t, e, n) {
        var i = t.getData(), r = i.getLayout("largePoints"), o = new OG({shape: {points: r}, __sign: 1});
        e.add(o);
        var a = new OG({shape: {points: r}, __sign: -1});
        e.add(a), Ry(1, o, t, i), Ry(-1, a, t, i), n && (o.incremental = !0, a.incremental = !0)
    }

    function Ry(t, e, n) {
        var i = n.get(["itemStyle", t > 0 ? "borderColor" : "borderColor0"]) || n.get(["itemStyle", t > 0 ? "color" : "color0"]),
            r = n.getModel("itemStyle").getItemStyle(AG);
        e.useStyle(r), e.style.fill = null, e.style.stroke = i
    }

    function zy(t) {
        t && M(t.series) && y(t.series, function (t) {
            D(t) && "k" === t.type && (t.type = "candlestick")
        })
    }

    function Ey(t, e, n, i, r) {
        var o;
        return o = n > i ? -1 : i > n ? 1 : e > 0 ? t.get(r, e - 1) <= i ? 1 : -1 : 1
    }

    function Ny(t, e) {
        var n, i = t.getBaseAxis(),
            r = "category" === i.type ? i.getBandWidth() : (n = i.getExtent(), Math.abs(n[1] - n[0]) / e.count()),
            o = _i(B(t.get("barMaxWidth"), r), r), a = _i(B(t.get("barMinWidth"), 1), r), s = t.get("barWidth");
        return null != s ? _i(s, r) : Math.max(Math.min(r / 2, o), a)
    }

    function By(t) {
        t.registerChartView(DG), t.registerSeriesModel(zG), t.registerPreprocessor(zy), t.registerVisual(FG), t.registerLayout(HG)
    }

    function Vy(t) {
        t.eachSeriesByType("radar", function (t) {
            var e = t.getData(), n = [], i = t.coordinateSystem;
            if (i) {
                var r = i.getIndicatorAxes();
                y(r, function (t, o) {
                    e.each(e.mapDimension(r[o].dim), function (t, e) {
                        n[e] = n[e] || [];
                        var r = i.dataToPoint(t, o);
                        n[e][o] = Fy(r) ? r : Gy(i)
                    })
                }), e.each(function (t) {
                    var r = _(n[t], function (t) {
                        return Fy(t)
                    }) || Gy(i);
                    n[t].push(r.slice()), e.setItemLayout(t, n[t])
                })
            }
        })
    }

    function Fy(t) {
        return !isNaN(t[0]) && !isNaN(t[1])
    }

    function Gy(t) {
        return [t.cx, t.cy]
    }

    function Hy(t) {
        var e = t.polar;
        if (e) {
            M(e) || (e = [e]);
            var n = [];
            y(e, function (e) {
                e.indicator ? (e.type && !e.shape && (e.shape = e.type), t.radar = t.radar || [], M(t.radar) || (t.radar = [t.radar]), t.radar.push(e)) : n.push(e)
            }), t.polar = n
        }
        y(t.series, function (t) {
            t && "radar" === t.type && t.polarIndex && (t.radarIndex = t.polarIndex)
        })
    }

    function Wy(t) {
        return M(t) || (t = [+t, +t]), t
    }

    function Xy(t, e) {
        return c({show: e}, t)
    }

    function Yy(t) {
        t.registerCoordinateSystem("radar", KG), t.registerComponentModel(ZG), t.registerComponentView(jG), t.registerVisual({
            seriesType: "radar",
            reset: function (t) {
                var e = t.getData();
                e.each(function (t) {
                    e.setItemVisual(t, "legendIcon", "roundRect")
                }), e.setVisual("legendIcon", "roundRect")
            }
        })
    }

    function Zy(t) {
        df(Yy), t.registerChartView(WG), t.registerSeriesModel(XG), t.registerLayout(Vy), t.registerProcessor(Bg("radar")), t.registerPreprocessor(Hy)
    }

    function Uy(t, e, n) {
        var i = t[1] - t[0];
        e = v(e, function (e) {
            return {interval: [(e.interval[0] - t[0]) / i, (e.interval[1] - t[0]) / i]}
        });
        var r = e.length, o = 0;
        return function (t) {
            var i;
            for (i = o; r > i; i++) {
                var a = e[i].interval;
                if (a[0] <= t && t <= a[1]) {
                    o = i;
                    break
                }
            }
            if (i === r) for (i = o - 1; i >= 0; i--) {
                var a = e[i].interval;
                if (a[0] <= t && t <= a[1]) {
                    o = i;
                    break
                }
            }
            return i >= 0 && r > i && n[i]
        }
    }

    function jy(t, e) {
        var n = t[1] - t[0];
        return e = [(e[0] - t[0]) / n, (e[1] - t[0]) / n], function (t) {
            return t >= e[0] && t <= e[1]
        }
    }

    function qy(t) {
        var e = t.dimensions;
        return "lng" === e[0] && "lat" === e[1]
    }

    function Ky(t) {
        t.registerChartView(QG), t.registerSeriesModel(tH)
    }

    function $y(t) {
        var e = t;
        e.hierNode = {
            defaultAncestor: null,
            ancestor: e,
            prelim: 0,
            modifier: 0,
            change: 0,
            shift: 0,
            i: 0,
            thread: null
        };
        for (var n, i, r = [e]; n = r.pop();) if (i = n.children, n.isExpand && i.length) for (var o = i.length, a = o - 1; a >= 0; a--) {
            var s = i[a];
            s.hierNode = {
                defaultAncestor: null,
                ancestor: s,
                prelim: 0,
                modifier: 0,
                change: 0,
                shift: 0,
                i: a,
                thread: null
            }, r.push(s)
        }
    }

    function Jy(t, e) {
        var n = t.isExpand ? t.children : [], i = t.parentNode.children, r = t.hierNode.i ? i[t.hierNode.i - 1] : null;
        if (n.length) {
            iv(t);
            var o = (n[0].hierNode.prelim + n[n.length - 1].hierNode.prelim) / 2;
            r ? (t.hierNode.prelim = r.hierNode.prelim + e(t, r), t.hierNode.modifier = t.hierNode.prelim - o) : t.hierNode.prelim = o
        } else r && (t.hierNode.prelim = r.hierNode.prelim + e(t, r));
        t.parentNode.hierNode.defaultAncestor = rv(t, r, t.parentNode.hierNode.defaultAncestor || i[0], e)
    }

    function Qy(t) {
        var e = t.hierNode.prelim + t.parentNode.hierNode.modifier;
        t.setLayout({x: e}, !0), t.hierNode.modifier += t.parentNode.hierNode.modifier
    }

    function tv(t) {
        return arguments.length ? t : uv
    }

    function ev(t, e) {
        return t -= Math.PI / 2, {x: e * Math.cos(t), y: e * Math.sin(t)}
    }

    function nv(t, e) {
        return kl(t.getBoxLayoutParams(), {width: e.getWidth(), height: e.getHeight()})
    }

    function iv(t) {
        for (var e = t.children, n = e.length, i = 0, r = 0; --n >= 0;) {
            var o = e[n];
            o.hierNode.prelim += i, o.hierNode.modifier += i, r += o.hierNode.change, i += o.hierNode.shift + r
        }
    }

    function rv(t, e, n, i) {
        if (e) {
            for (var r = t, o = t, a = o.parentNode.children[0], s = e, l = r.hierNode.modifier, u = o.hierNode.modifier, h = a.hierNode.modifier, c = s.hierNode.modifier; s = ov(s), o = av(o), s && o;) {
                r = ov(r), a = av(a), r.hierNode.ancestor = t;
                var p = s.hierNode.prelim + c - o.hierNode.prelim - u + i(s, o);
                p > 0 && (lv(sv(s, t, n), t, p), u += p, l += p), c += s.hierNode.modifier, u += o.hierNode.modifier, l += r.hierNode.modifier, h += a.hierNode.modifier
            }
            s && !ov(r) && (r.hierNode.thread = s, r.hierNode.modifier += c - l), o && !av(a) && (a.hierNode.thread = o, a.hierNode.modifier += u - h, n = t)
        }
        return n
    }

    function ov(t) {
        var e = t.children;
        return e.length && t.isExpand ? e[e.length - 1] : t.hierNode.thread
    }

    function av(t) {
        var e = t.children;
        return e.length && t.isExpand ? e[0] : t.hierNode.thread
    }

    function sv(t, e, n) {
        return t.hierNode.ancestor.parentNode === e.parentNode ? t.hierNode.ancestor : n
    }

    function lv(t, e, n) {
        var i = n / (e.hierNode.i - t.hierNode.i);
        e.hierNode.change -= i, e.hierNode.shift += n, e.hierNode.modifier += n, e.hierNode.prelim += n, t.hierNode.change += i
    }

    function uv(t, e) {
        return t.parentNode === e.parentNode ? 1 : 2
    }

    function hv(t) {
        var e = t.seriesModel;
        return e ? e.coordinateSystem : null
    }

    function cv(t, e, n) {
        var i = t.target;
        i.x += e, i.y += n, i.dirty()
    }

    function pv(t, e, n, i) {
        var r = t.target, o = t.zoomLimit, a = t.zoom = t.zoom || 1;
        if (a *= e, o) {
            var s = o.min || 0, l = o.max || 1 / 0;
            a = Math.max(Math.min(l, a), s)
        }
        var u = a / t.zoom;
        t.zoom = a, r.x -= (n - r.x) * (u - 1), r.y -= (i - r.y) * (u - 1), r.scaleX *= u, r.scaleY *= u, r.dirty()
    }

    function dv(t, e, n) {
        var i = yv(t);
        i[e] = n
    }

    function fv(t, e, n) {
        var i = yv(t), r = i[e];
        r === n && (i[e] = null)
    }

    function gv(t, e) {
        return !!yv(t)[e]
    }

    function yv(t) {
        return t[iH] || (t[iH] = {})
    }

    function vv(t, e, n, i, r) {
        t.pointerChecker && t.pointerChecker(i, r.originX, r.originY) && (NA(i.event), mv(t, e, n, i, r))
    }

    function mv(t, e, n, i, r) {
        r.isAvailableBehavior = xA(xv, null, n, i), t.trigger(e, r)
    }

    function xv(t, e, n) {
        var i = n[t];
        return !t || i && (!T(i) || e.event[i + "Key"])
    }

    function _v(t, e, n) {
        var i = e.getComponentByElement(t.topTarget), r = i && i.coordinateSystem;
        return i && i !== n && !oH.hasOwnProperty(i.mainType) && r && r.model !== n
    }

    function bv(t, e) {
        var n = t.getItemLayout(e);
        return n && !isNaN(n.x) && !isNaN(n.y)
    }

    function wv(t, e, n, i, r) {
        var o = !n, a = t.tree.getNodeByDataIndex(e), s = a.getModel(), l = a.getVisual("style").fill,
            u = a.isExpand === !1 && 0 !== a.children.length ? l : "#fff", h = t.tree.root,
            c = a.parentNode === h ? a : a.parentNode || a, p = t.getItemGraphicEl(c.dataIndex), d = c.getLayout(),
            f = p ? {x: p.__oldX, y: p.__oldY, rawX: p.__radialOldRawX, rawY: p.__radialOldRawY} : d, g = a.getLayout();
        o ? (n = new TF(t, e, null, {
            symbolInnerColor: u,
            useNameLabel: !0
        }), n.x = f.x, n.y = f.y) : n.updateData(t, e, null, {
            symbolInnerColor: u,
            useNameLabel: !0
        }), n.__radialOldRawX = n.__radialRawX, n.__radialOldRawY = n.__radialRawY, n.__radialRawX = g.rawX, n.__radialRawY = g.rawY, i.add(n), t.setItemGraphicEl(e, n), n.__oldX = n.x, n.__oldY = n.y, us(n, {
            x: g.x,
            y: g.y
        }, r);
        var y = n.getSymbolPath();
        if ("radial" === r.get("layout")) {
            var v = h.children[0], m = v.getLayout(), x = v.children.length, _ = void 0, b = void 0;
            if (g.x === m.x && a.isExpand === !0) {
                var w = {
                    x: (v.children[0].getLayout().x + v.children[x - 1].getLayout().x) / 2,
                    y: (v.children[0].getLayout().y + v.children[x - 1].getLayout().y) / 2
                };
                _ = Math.atan2(w.y - m.y, w.x - m.x), 0 > _ && (_ = 2 * Math.PI + _), b = w.x < m.x, b && (_ -= Math.PI)
            } else _ = Math.atan2(g.y - m.y, g.x - m.x), 0 > _ && (_ = 2 * Math.PI + _), 0 === a.children.length || 0 !== a.children.length && a.isExpand === !1 ? (b = g.x < m.x, b && (_ -= Math.PI)) : (b = g.x > m.x, b || (_ -= Math.PI));
            var S = b ? "left" : "right", M = s.getModel("label"), I = M.get("rotate"), T = I * (Math.PI / 180),
                C = y.getTextContent();
            C && (y.setTextConfig({
                position: M.get("position") || S,
                rotation: null == I ? -_ : T,
                origin: "center"
            }), C.setStyle("verticalAlign", "middle"))
        }
        var A = s.get(["emphasis", "focus"]),
            D = "ancestor" === A ? a.getAncestorsIndices() : "descendant" === A ? a.getDescendantIndices() : null;
        D && (tP(n).focus = D), Sv(r, a, h, n, f, d, g, i), n.__edge && (n.onHoverStateChange = function (e) {
            if ("blur" !== e) {
                var i = a.parentNode && t.getItemGraphicEl(a.parentNode.dataIndex);
                i && i.hoverState === oP || $o(n.__edge, e)
            }
        })
    }

    function Sv(t, e, n, i, r, o, a, s) {
        var l = e.getModel(), u = t.get("edgeShape"), h = t.get("layout"), p = t.getOrient(),
            d = t.get(["lineStyle", "curveness"]), f = t.get("edgeForkPosition"),
            g = l.getModel("lineStyle").getLineStyle(), y = i.__edge;
        if ("curve" === u) e.parentNode && e.parentNode !== n && (y || (y = i.__edge = new rO({shape: Iv(h, p, d, r, r)})), us(y, {shape: Iv(h, p, d, o, a)}, t)); else if ("polyline" === u && "orthogonal" === h && e !== n && e.children && 0 !== e.children.length && e.isExpand === !0) {
            for (var v = e.children, m = [], x = 0; x < v.length; x++) {
                var _ = v[x].getLayout();
                m.push([_.x, _.y])
            }
            y || (y = i.__edge = new sH({
                shape: {
                    parentPoint: [a.x, a.y],
                    childPoints: [[a.x, a.y]],
                    orient: p,
                    forkPosition: f
                }
            })), us(y, {shape: {parentPoint: [a.x, a.y], childPoints: m}}, t)
        }
        y && (y.useStyle(c({strokeNoScale: !0, fill: null}, g)), Ia(y, l, "lineStyle"), ia(y), s.add(y))
    }

    function Mv(t, e, n, i, r) {
        for (var o, a = t.tree.getNodeByDataIndex(e), s = t.tree.root, l = a.parentNode === s ? a : a.parentNode || a; o = l.getLayout(), null == o;) l = l.parentNode === s ? l : l.parentNode || l;
        var u = {duration: r.get("animationDurationUpdate"), easing: r.get("animationEasingUpdate")};
        cs(n, {x: o.x + 1, y: o.y + 1}, r, {
            cb: function () {
                i.remove(n), t.setItemGraphicEl(e, null)
            }, removeOpt: u
        }), n.fadeOut(null, {fadeLabel: !0, animation: u});
        var h = t.getItemGraphicEl(l.dataIndex), c = h.__edge,
            p = n.__edge || (l.isExpand === !1 || 1 === l.children.length ? c : void 0), d = r.get("edgeShape"),
            f = r.get("layout"), g = r.get("orient"), y = r.get(["lineStyle", "curveness"]);
        p && ("curve" === d ? cs(p, {shape: Iv(f, g, y, o, o), style: {opacity: 0}}, r, {
            cb: function () {
                i.remove(p)
            }, removeOpt: u
        }) : "polyline" === d && "orthogonal" === r.get("layout") && cs(p, {
            shape: {
                parentPoint: [o.x, o.y],
                childPoints: [[o.x, o.y]]
            }, style: {opacity: 0}
        }, r, {
            cb: function () {
                i.remove(p)
            }, removeOpt: u
        }))
    }

    function Iv(t, e, n, i, r) {
        var o, a, s, l, u, h, c, p;
        if ("radial" === t) {
            u = i.rawX, c = i.rawY, h = r.rawX, p = r.rawY;
            var d = ev(u, c), f = ev(u, c + (p - c) * n), g = ev(h, p + (c - p) * n), y = ev(h, p);
            return {
                x1: d.x || 0,
                y1: d.y || 0,
                x2: y.x || 0,
                y2: y.y || 0,
                cpx1: f.x || 0,
                cpy1: f.y || 0,
                cpx2: g.x || 0,
                cpy2: g.y || 0
            }
        }
        return u = i.x, c = i.y, h = r.x, p = r.y, ("LR" === e || "RL" === e) && (o = u + (h - u) * n, a = c, s = h + (u - h) * n, l = p), ("TB" === e || "BT" === e) && (o = u, a = c + (p - c) * n, s = h, l = p + (c - p) * n), {
            x1: u,
            y1: c,
            x2: h,
            y2: p,
            cpx1: o,
            cpy1: a,
            cpx2: s,
            cpy2: l
        }
    }

    function Tv(t) {
        var e = t.mainData, n = t.datas;
        n || (n = {main: e}, t.datasAttr = {main: "data"}), t.datas = t.mainData = null, Ov(e, n, t), y(n, function (n) {
            y(e.TRANSFERABLE_METHODS, function (e) {
                n.wrapMethod(e, S(Cv, t))
            })
        }), e.wrapMethod("cloneShallow", S(Dv, t)), y(e.CHANGABLE_METHODS, function (n) {
            e.wrapMethod(n, S(Av, t))
        }), H(n[e.dataType] === e)
    }

    function Cv(t, e) {
        if (Pv(this)) {
            var n = h({}, uH(this).datas);
            n[this.dataType] = e, Ov(e, n, t)
        } else Rv(e, this.dataType, uH(this).mainData, t);
        return e
    }

    function Av(t, e) {
        return t.struct && t.struct.update(), e
    }

    function Dv(t, e) {
        return y(uH(e).datas, function (n, i) {
            n !== e && Rv(n.cloneShallow(), i, e, t)
        }), e
    }

    function Lv(t) {
        var e = uH(this).mainData;
        return null == t || null == e ? e : uH(e).datas[t]
    }

    function kv() {
        var t = uH(this).mainData;
        return null == t ? [{data: t}] : v(b(uH(t).datas), function (e) {
            return {type: e, data: uH(t).datas[e]}
        })
    }

    function Pv(t) {
        return uH(t).mainData === t
    }

    function Ov(t, e, n) {
        uH(t).datas = {}, y(e, function (e, i) {
            Rv(e, i, t, n)
        })
    }

    function Rv(t, e, n, i) {
        uH(n).datas[e] = t, uH(t).mainData = n, t.dataType = e, i.struct && (t[i.structAttr] = i.struct, i.struct[i.datasAttr[e]] = t), t.getLinkedData = Lv, t.getLinkedDataAll = kv
    }

    function zv(t, e) {
        var n = e.children;
        t.parentNode !== e && (n.push(t), t.parentNode = e)
    }

    function Ev(t, e, n) {
        if (t && p(e, t.type) >= 0) {
            var i = n.getData().tree.root, r = t.targetNode;
            if ("string" == typeof r && (r = i.getNodeById(r)), r && i.contains(r)) return {node: r};
            var o = t.targetNodeId;
            if (null != o && (r = i.getNodeById(o))) return {node: r}
        }
    }

    function Nv(t) {
        for (var e = []; t;) t = t.parentNode, t && e.push(t);
        return e.reverse()
    }

    function Bv(t, e) {
        var n = Nv(t);
        return p(n, e) >= 0
    }

    function Vv(t, e) {
        for (var n = []; t;) {
            var i = t.dataIndex;
            n.push({name: t.name, dataIndex: i, value: e.getRawValue(i)}), t = t.parentNode
        }
        return n.reverse(), n
    }

    function Fv(t, e, n) {
        for (var i, r = [t], o = []; i = r.pop();) if (o.push(i), i.isExpand) {
            var a = i.children;
            if (a.length) for (var s = 0; s < a.length; s++) r.push(a[s])
        }
        for (; i = o.pop();) e(i, n)
    }

    function Gv(t, e) {
        for (var n, i = [t]; n = i.pop();) if (e(n), n.isExpand) {
            var r = n.children;
            if (r.length) for (var o = r.length - 1; o >= 0; o--) i.push(r[o])
        }
    }

    function Hv(t, e) {
        t.eachSeriesByType("tree", function (t) {
            Wv(t, e)
        })
    }

    function Wv(t, e) {
        var n = nv(t, e);
        t.layoutInfo = n;
        var i = t.get("layout"), r = 0, o = 0, a = null;
        "radial" === i ? (r = 2 * Math.PI, o = Math.min(n.height, n.width) / 2, a = tv(function (t, e) {
            return (t.parentNode === e.parentNode ? 1 : 2) / t.depth
        })) : (r = n.width, o = n.height, a = tv());
        var s = t.getData().tree.root, l = s.children[0];
        if (l) {
            $y(s), Fv(l, Jy, a), s.hierNode.modifier = -l.hierNode.prelim, Gv(l, Qy);
            var u = l, h = l, c = l;
            Gv(l, function (t) {
                var e = t.getLayout().x;
                e < u.getLayout().x && (u = t), e > h.getLayout().x && (h = t), t.depth > c.depth && (c = t)
            });
            var p = u === h ? 1 : a(u, h) / 2, d = p - u.getLayout().x, f = 0, g = 0, y = 0, v = 0;
            if ("radial" === i) f = r / (h.getLayout().x + p + d), g = o / (c.depth - 1 || 1), Gv(l, function (t) {
                y = (t.getLayout().x + d) * f, v = (t.depth - 1) * g;
                var e = ev(y, v);
                t.setLayout({x: e.x, y: e.y, rawX: y, rawY: v}, !0)
            }); else {
                var m = t.getOrient();
                "RL" === m || "LR" === m ? (g = o / (h.getLayout().x + p + d), f = r / (c.depth - 1 || 1), Gv(l, function (t) {
                    v = (t.getLayout().x + d) * g, y = "LR" === m ? (t.depth - 1) * f : r - (t.depth - 1) * f, t.setLayout({
                        x: y,
                        y: v
                    }, !0)
                })) : ("TB" === m || "BT" === m) && (f = r / (h.getLayout().x + p + d), g = o / (c.depth - 1 || 1), Gv(l, function (t) {
                    y = (t.getLayout().x + d) * f, v = "TB" === m ? (t.depth - 1) * g : o - (t.depth - 1) * g, t.setLayout({
                        x: y,
                        y: v
                    }, !0)
                }))
            }
        }
    }

    function Xv(t) {
        t.eachSeriesByType("tree", function (t) {
            var e = t.getData(), n = e.tree;
            n.eachNode(function (t) {
                var n = t.getModel(), i = n.getModel("itemStyle").getItemStyle(),
                    r = e.ensureUniqueItemVisual(t.dataIndex, "style");
                h(r, i)
            })
        })
    }

    function Yv(t, e, n) {
        var i = t.getZoom(), r = t.getCenter(), o = e.zoom, a = t.dataToPoint(r);
        if (null != e.dx && null != e.dy && (a[0] -= e.dx, a[1] -= e.dy, t.setCenter(t.pointToData(a))), null != o) {
            if (n) {
                var s = n.min || 0, l = n.max || 1 / 0;
                o = Math.max(Math.min(i * o, l), s) / i
            }
            t.scaleX *= o, t.scaleY *= o;
            var u = (e.originX - t.x) * (o - 1), h = (e.originY - t.y) * (o - 1);
            t.x -= u, t.y -= h, t.updateTransform(), t.setCenter(t.pointToData(a)), t.setZoom(o * i)
        }
        return {center: t.getCenter(), zoom: t.getZoom()}
    }

    function Zv(t) {
        t.registerAction({
            type: "treeExpandAndCollapse",
            event: "treeExpandAndCollapse",
            update: "update"
        }, function (t, e) {
            e.eachComponent({mainType: "series", subType: "tree", query: t}, function (e) {
                var n = t.dataIndex, i = e.getData().tree, r = i.getNodeByDataIndex(n);
                r.isExpand = !r.isExpand
            })
        }), t.registerAction({type: "treeRoam", event: "treeRoam", update: "none"}, function (t, e) {
            e.eachComponent({mainType: "series", subType: "tree", query: t}, function (e) {
                var n = e.coordinateSystem, i = Yv(n, t);
                e.setCenter && e.setCenter(i.center), e.setZoom && e.setZoom(i.zoom)
            })
        })
    }

    function Uv(t) {
        t.registerChartView(lH), t.registerSeriesModel(pH), t.registerLayout(Hv), t.registerVisual(Xv), Zv(t)
    }

    function jv(t) {
        for (var e = 0; e < fH.length; e++) t.registerAction({type: fH[e], update: "updateView"}, dH);
        t.registerAction({type: "treemapRootToNode", update: "updateView"}, function (t, e) {
            function n(e) {
                var n = ["treemapZoomToNode", "treemapRootToNode"], i = Ev(t, n, e);
                if (i) {
                    var r = e.getViewRoot();
                    r && (t.direction = Bv(r, i.node) ? "rollUp" : "drillDown"), e.resetViewRoot(i.node)
                }
            }

            e.eachComponent({mainType: "series", subType: "treemap", query: t}, n)
        })
    }

    function qv(t) {
        var e = t.getData(), n = e.tree, i = {};
        n.eachNode(function (e) {
            for (var n = e; n && n.depth > 1;) n = n.parentNode;
            var r = jl(t.ecModel, n.name || n.dataIndex + "", i);
            e.setVisual("decal", r)
        })
    }

    function Kv(t) {
        var e = 0;
        y(t.children, function (t) {
            Kv(t);
            var n = t.value;
            M(n) && (n = n[0]), e += n
        });
        var n = t.value;
        M(n) && (n = n[0]), (null == n || isNaN(n)) && (n = e), 0 > n && (n = 0), M(t.value) ? t.value[0] = n : t.value = n
    }

    function $v(t, e) {
        var n = Hi(e.get("color")), i = Hi(e.get(["aria", "decal", "decals"]));
        if (n) {
            t = t || [];
            var r, o;
            y(t, function (t) {
                var e = new VO(t), n = e.get("color"), i = e.get("decal");
                (e.get(["itemStyle", "color"]) || n && "none" !== n) && (r = !0), (e.get(["itemStyle", "decal"]) || i && "none" !== i) && (o = !0)
            });
            var a = t[0] || (t[0] = {});
            return r || (a.color = n.slice()), !o && i && (a.decal = i.slice()), t
        }
    }

    function Jv(t, e, n, i, r, o) {
        var a = [[r ? t : t - mH, e], [t + n, e], [t + n, e + i], [r ? t : t - mH, e + i]];
        return !o && a.splice(2, 0, [t + n + mH, e + i / 2]), !r && a.push([t, e + i / 2]), a
    }

    function Qv(t, e, n) {
        tP(t).eventData = {
            componentType: "series",
            componentSubType: "treemap",
            componentIndex: e.componentIndex,
            seriesIndex: e.componentIndex,
            seriesName: e.name,
            seriesType: "treemap",
            selfType: "breadcrumb",
            nodeData: {dataIndex: n && n.dataIndex, name: n && n.name},
            treePathInfo: n && Vv(n, e)
        }
    }

    function tm() {
        return new _H
    }

    function em() {
        return {nodeGroup: [], background: [], content: []}
    }

    function nm(t, e, n, i, r, o, a, s, l, u) {
        function c(e, n, i) {
            var r = tP(n);
            if (r.dataIndex = a.dataIndex, r.seriesIndex = t.seriesIndex, n.setShape({
                x: 0,
                y: 0,
                width: w,
                height: S,
                r: z
            }), I) d(n); else {
                n.invisible = !1;
                var o = a.getVisual("style"), s = o.stroke, l = LH(k);
                l.fill = s;
                var u = DH(P);
                u.fill = P.get("borderColor");
                var h = DH(O);
                h.fill = O.get("borderColor");
                var c = DH(R);
                if (c.fill = R.get("borderColor"), i) {
                    var p = w - 2 * M;
                    f(n, s, o.opacity, {x: M, y: 0, width: p, height: D})
                } else n.removeTextContent();
                n.setStyle(l), n.ensureState("emphasis").style = u, n.ensureState("blur").style = h, n.ensureState("select").style = c, ia(n)
            }
            e.add(n)
        }

        function p(e, n) {
            var i = tP(n);
            i.dataIndex = a.dataIndex, i.seriesIndex = t.seriesIndex;
            var r = Math.max(w - 2 * M, 0), o = Math.max(S - 2 * M, 0);
            if (n.culling = !0, n.setShape({x: M, y: M, width: r, height: o, r: z}), I) d(n); else {
                n.invisible = !1;
                var s = a.getVisual("style"), l = s.fill, u = LH(k);
                u.fill = l, u.decal = s.decal;
                var h = DH(P), c = DH(O), p = DH(R);
                f(n, l, s.opacity, null), n.setStyle(u), n.ensureState("emphasis").style = h, n.ensureState("blur").style = c, n.ensureState("select").style = p, ia(n)
            }
            e.add(n)
        }

        function d(t) {
            !t.invisible && o.push(t)
        }

        function f(e, n, i, r) {
            var o = b.getModel(r ? IH : MH), s = er(b.get("name"), null), l = o.getShallow("show");
            ks(e, Ps(b, r ? IH : MH), {
                defaultText: l ? s : null,
                inheritColor: n,
                defaultOpacity: i,
                labelFetcher: t,
                labelDataIndex: a.dataIndex
            });
            var u = e.getTextContent(), h = u.style, c = G(h.padding || 0);
            r && (e.setTextConfig({layoutRect: r}), u.disableLabelLayout = !0), u.beforeUpdate = function () {
                var t = Math.max((r ? r.width : e.shape.width) - c[1] - c[3], 0),
                    n = Math.max((r ? r.height : e.shape.height) - c[0] - c[2], 0);
                (h.width !== t || h.height !== n) && u.setStyle({width: t, height: n})
            }, h.truncateMinChar = 2, h.lineOverflow = "truncate", g(h, r, x);
            var p = u.getState("emphasis");
            g(p ? p.style : null, r, x)
        }

        function g(e, n, i) {
            var r = e ? e.text : null;
            if (!n && i.isLeafRoot && null != r) {
                var o = t.get("drillDownIcon", !0);
                e.text = o ? o + " " + r : r
            }
        }

        function y(t, i, o, a) {
            var s = null != C && n[t][C], l = r[t];
            return s ? (n[t][C] = null, v(l, s)) : I || (s = new i, s instanceof HL && (s.z2 = im(o, a)), m(l, s)), e[t][T] = s
        }

        function v(t, e) {
            var n = t[T] = {};
            e instanceof bH ? (n.oldX = e.x, n.oldY = e.y) : n.oldShape = h({}, e.shape)
        }

        function m(t, e) {
            var n = t[T] = {}, o = a.parentNode, s = e instanceof sL;
            if (o && (!i || "drillDown" === i.direction)) {
                var l = 0, u = 0, h = r.background[o.getRawIndex()];
                !i && h && h.oldShape && (l = h.oldShape.width, u = h.oldShape.height), s ? (n.oldX = 0, n.oldY = u) : n.oldShape = {
                    x: l,
                    y: u,
                    width: 0,
                    height: 0
                }
            }
            n.fadein = !s
        }

        if (a) {
            var x = a.getLayout(), _ = t.getData(), b = a.getModel();
            if (_.setItemGraphicEl(a.dataIndex, null), x && x.isInView) {
                var w = x.width, S = x.height, M = x.borderWidth, I = x.invisible, T = a.getRawIndex(),
                    C = s && s.getRawIndex(), A = a.viewChildren, D = x.upperHeight, L = A && A.length,
                    k = b.getModel("itemStyle"), P = b.getModel(["emphasis", "itemStyle"]),
                    O = b.getModel(["blur", "itemStyle"]), R = b.getModel(["select", "itemStyle"]),
                    z = k.get("borderRadius") || 0, E = y("nodeGroup", bH);
                if (E) {
                    if (l.add(E), E.x = x.x || 0, E.y = x.y || 0, E.markRedraw(), kH(E).nodeWidth = w, kH(E).nodeHeight = S, x.isAboveViewRoot) return E;
                    var N = y("background", wH, u, CH);
                    N && c(E, N, L && x.upperLabelHeight);
                    var B = b.get(["emphasis", "focus"]), V = b.get(["emphasis", "blurScope"]),
                        F = "ancestor" === B ? a.getAncestorsIndices() : "descendant" === B ? a.getDescendantIndices() : B;
                    if (L) Ca(E) && Ta(E, !1), N && (Ta(N, !0), _.setItemGraphicEl(a.dataIndex, N), Ma(N, F, V)); else {
                        var H = y("content", wH, u, AH);
                        H && p(E, H), N && Ca(N) && Ta(N, !1), Ta(E, !0), _.setItemGraphicEl(a.dataIndex, E), Ma(E, F, V)
                    }
                    return E
                }
            }
        }
    }

    function im(t, e) {
        return t * TH + e
    }

    function rm(t) {
        var e = t.pieceList;
        t.hasSpecialVisual = !1, y(e, function (e, n) {
            e.originIndex = n, null != e.visual && (t.hasSpecialVisual = !0)
        })
    }

    function om(t) {
        var e = t.categories, n = t.categoryMap = {}, i = t.visual;
        if (OH(e, function (t, e) {
            n[t] = e
        }), !M(i)) {
            var r = [];
            D(i) ? OH(i, function (t, e) {
                var i = n[e];
                r[null != i ? i : zH] = t
            }) : r[zH] = i, i = fm(t, r)
        }
        for (var o = e.length - 1; o >= 0; o--) null == i[o] && (delete n[e[o]], e.pop())
    }

    function am(t, e) {
        var n = t.visual, i = [];
        D(n) ? OH(n, function (t) {
            i.push(t)
        }) : null != n && i.push(n);
        var r = {color: 1, symbol: 1};
        e || 1 !== i.length || r.hasOwnProperty(t.type) || (i[1] = i[0]), fm(t, i)
    }

    function sm(t) {
        return {
            applyVisual: function (e, n, i) {
                var r = this.mapValueToVisual(e);
                i("color", t(n("color"), r))
            }, _normalizedToVisual: pm([0, 1])
        }
    }

    function lm(t) {
        var e = this.option.visual;
        return e[Math.round(xi(t, [0, 1], [0, e.length - 1], !0))] || {}
    }

    function um(t) {
        return function (e, n, i) {
            i(t, this.mapValueToVisual(e))
        }
    }

    function hm(t) {
        var e = this.option.visual;
        return e[this.option.loop && t !== zH ? t % e.length : t]
    }

    function cm() {
        return this.option.visual[0]
    }

    function pm(t) {
        return {
            linear: function (e) {
                return xi(e, t, this.option.visual, !0)
            }, category: hm, piecewise: function (e, n) {
                var i = dm.call(this, n);
                return null == i && (i = xi(e, t, this.option.visual, !0)), i
            }, fixed: cm
        }
    }

    function dm(t) {
        var e = this.option, n = e.pieceList;
        if (e.hasSpecialVisual) {
            var i = EH.findPieceIndex(t, n), r = n[i];
            if (r && r.visual) return r.visual[this.type]
        }
    }

    function fm(t, e) {
        return t.visual = e, "color" === t.type && (t.parsedVisual = v(e, function (t) {
            return an(t)
        })), e
    }

    function gm(t, e, n) {
        return t ? n >= e : n > e
    }

    function ym(t, e, n, i) {
        var r = t.getModel(), o = t.getLayout(), a = t.hostTree.data;
        if (o && !o.invisible && o.isInView) {
            var s, l = r.getModel(BH), u = vm(l, e, i), h = a.ensureUniqueItemVisual(t.dataIndex, "style"),
                c = l.get("borderColor"), p = l.get("borderColorSaturation");
            null != p && (s = mm(u), c = xm(p, s)), h.stroke = c;
            var d = t.viewChildren;
            if (d && d.length) {
                var f = bm(t, r, o, l, u, d);
                y(d, function (t, e) {
                    if (t.depth >= n.length || t === n[t.depth]) {
                        var o = Sm(r, u, t, e, f, i);
                        ym(t, o, n, i)
                    }
                })
            } else s = mm(u), h.fill = s
        }
    }

    function vm(t, e, n) {
        var i = h({}, e), r = n.designatedVisualItemStyle;
        return y(["color", "colorAlpha", "colorSaturation"], function (n) {
            r[n] = e[n];
            var o = t.get(n);
            r[n] = null, null != o && (i[n] = o)
        }), i
    }

    function mm(t) {
        var e = _m(t, "color");
        if (e) {
            var n = _m(t, "colorAlpha"), i = _m(t, "colorSaturation");
            return i && (e = dn(e, null, null, i)), n && (e = fn(e, n)), e
        }
    }

    function xm(t, e) {
        return null != e ? dn(e, null, null, t) : null
    }

    function _m(t, e) {
        var n = t[e];
        return null != n && "none" !== n ? n : void 0
    }

    function bm(t, e, n, i, r, o) {
        if (o && o.length) {
            var a = wm(e, "color") || null != r.color && "none" !== r.color && (wm(e, "colorAlpha") || wm(e, "colorSaturation"));
            if (a) {
                var s = e.get("visualMin"), l = e.get("visualMax"), u = n.dataExtent.slice();
                null != s && s < u[0] && (u[0] = s), null != l && l > u[1] && (u[1] = l);
                var h = e.get("colorMappingBy"), c = {type: a.name, dataExtent: u, visual: a.range};
                "color" !== c.type || "index" !== h && "id" !== h ? c.mappingMethod = "linear" : (c.mappingMethod = "category", c.loop = !0);
                var p = new EH(c);
                return VH(p).drColorMappingBy = h, p
            }
        }
    }

    function wm(t, e) {
        var n = t.get(e);
        return M(n) && n.length ? {name: e, range: n} : null
    }

    function Sm(t, e, n, i, r, o) {
        var a = h({}, e);
        if (r) {
            var s = r.type, l = "color" === s && VH(r).drColorMappingBy,
                u = "index" === l ? i : "id" === l ? o.mapIdToIndex(n.getId()) : n.getValue(t.get("visualDimension"));
            a[s] = r.mapValueToVisual(u)
        }
        return a
    }

    function Mm(t, e, n, i) {
        var r, o;
        if (!t.isRemoved()) {
            var a = t.getLayout();
            r = a.width, o = a.height;
            var s = t.getModel(), l = s.get(YH), u = s.get(ZH) / 2, h = Rm(s), c = Math.max(l, h), p = l - u, d = c - u;
            t.setLayout({
                borderWidth: l,
                upperHeight: c,
                upperLabelHeight: h
            }, !0), r = GH(r - 2 * p, 0), o = GH(o - p - d, 0);
            var f = r * o, g = Im(t, s, f, e, n, i);
            if (g.length) {
                var y = {x: p, y: d, width: r, height: o}, v = HH(r, o), m = 1 / 0, x = [];
                x.area = 0;
                for (var _ = 0, b = g.length; b > _;) {
                    var w = g[_];
                    x.push(w), x.area += w.getLayout().area;
                    var S = Dm(x, v, e.squareRatio);
                    m >= S ? (_++, m = S) : (x.area -= x.pop().getLayout().area, Lm(x, v, y, u, !1), v = HH(y.width, y.height), x.length = x.area = 0, m = 1 / 0)
                }
                if (x.length && Lm(x, v, y, u, !0), !n) {
                    var M = s.get("childrenVisibleMin");
                    null != M && M > f && (n = !0)
                }
                for (var _ = 0, b = g.length; b > _; _++) Mm(g[_], e, n, i + 1)
            }
        }
    }

    function Im(t, e, n, i, r, o) {
        var a = t.children || [], s = i.sort;
        "asc" !== s && "desc" !== s && (s = null);
        var l = null != i.leafDepth && i.leafDepth <= o;
        if (r && !l) return t.viewChildren = [];
        a = x(a, function (t) {
            return !t.isRemoved()
        }), Cm(a, s);
        var u = Am(e, a, s);
        if (0 === u.sum) return t.viewChildren = [];
        if (u.sum = Tm(e, n, u.sum, s, a), 0 === u.sum) return t.viewChildren = [];
        for (var h = 0, c = a.length; c > h; h++) {
            var p = a[h].getValue() / u.sum * n;
            a[h].setLayout({area: p})
        }
        return l && (a.length && t.setLayout({isLeafRoot: !0}, !0), a.length = 0), t.viewChildren = a, t.setLayout({dataExtent: u.dataExtent}, !0), a
    }

    function Tm(t, e, n, i, r) {
        if (!i) return n;
        for (var o = t.get("visibleMin"), a = r.length, s = a, l = a - 1; l >= 0; l--) {
            var u = r["asc" === i ? a - l - 1 : l].getValue();
            o > u / n * e && (s = l, n -= u)
        }
        return "asc" === i ? r.splice(0, a - s) : r.splice(s, a - s), n
    }

    function Cm(t, e) {
        return e && t.sort(function (t, n) {
            var i = "asc" === e ? t.getValue() - n.getValue() : n.getValue() - t.getValue();
            return 0 === i ? "asc" === e ? t.dataIndex - n.dataIndex : n.dataIndex - t.dataIndex : i
        }), t
    }

    function Am(t, e, n) {
        for (var i = 0, r = 0, o = e.length; o > r; r++) i += e[r].getValue();
        var a, s = t.get("visualDimension");
        return e && e.length ? "value" === s && n ? (a = [e[e.length - 1].getValue(), e[0].getValue()], "asc" === n && a.reverse()) : (a = [1 / 0, -1 / 0], XH(e, function (t) {
            var e = t.getValue(s);
            e < a[0] && (a[0] = e), e > a[1] && (a[1] = e)
        })) : a = [0 / 0, 0 / 0], {sum: i, dataExtent: a}
    }

    function Dm(t, e, n) {
        for (var i = 0, r = 1 / 0, o = 0, a = void 0, s = t.length; s > o; o++) a = t[o].getLayout().area, a && (r > a && (r = a), a > i && (i = a));
        var l = t.area * t.area, u = e * e * n;
        return l ? GH(u * i / l, l / (u * r)) : 1 / 0
    }

    function Lm(t, e, n, i, r) {
        var o = e === n.width ? 0 : 1, a = 1 - o, s = ["x", "y"], l = ["width", "height"], u = n[s[o]],
            h = e ? t.area / e : 0;
        (r || h > n[l[a]]) && (h = n[l[a]]);
        for (var c = 0, p = t.length; p > c; c++) {
            var d = t[c], f = {}, g = h ? d.getLayout().area / h : 0, y = f[l[a]] = GH(h - 2 * i, 0),
                v = n[s[o]] + n[l[o]] - u, m = c === p - 1 || g > v ? v : g, x = f[l[o]] = GH(m - 2 * i, 0);
            f[s[a]] = n[s[a]] + HH(i, y / 2), f[s[o]] = u + HH(i, x / 2), u += m, d.setLayout(f, !0)
        }
        n[s[a]] += h, n[l[a]] -= h
    }

    function km(t, e, n, i, r) {
        var o = (e || {}).node, a = [i, r];
        if (!o || o === n) return a;
        for (var s, l = i * r, u = l * t.option.zoomToNodeRatio; s = o.parentNode;) {
            for (var h = 0, c = s.children, p = 0, d = c.length; d > p; p++) h += c[p].getValue();
            var f = o.getValue();
            if (0 === f) return a;
            u *= h / f;
            var g = s.getModel(), y = g.get(YH), v = Math.max(y, Rm(g));
            u += 4 * y * y + (3 * y + v) * Math.pow(u, .5), u > yL && (u = yL), o = s
        }
        l > u && (u = l);
        var m = Math.pow(u / l, .5);
        return [i * m, r * m]
    }

    function Pm(t, e, n) {
        if (e) return {x: e.x, y: e.y};
        var i = {x: 0, y: 0};
        if (!n) return i;
        var r = n.node, o = r.getLayout();
        if (!o) return i;
        for (var a = [o.width / 2, o.height / 2], s = r; s;) {
            var l = s.getLayout();
            a[0] += l.x, a[1] += l.y, s = s.parentNode
        }
        return {x: t.width / 2 - a[0], y: t.height / 2 - a[1]}
    }

    function Om(t, e, n, i, r) {
        var o = t.getLayout(), a = n[r], s = a && a === t;
        if (!(a && !s || r === n.length && t !== i)) {
            t.setLayout({isInView: !0, invisible: !s && !e.intersect(o), isAboveViewRoot: s}, !0);
            var l = new $D(e.x - o.x, e.y - o.y, e.width, e.height);
            XH(t.viewChildren || [], function (t) {
                Om(t, l, n, i, r + 1)
            })
        }
    }

    function Rm(t) {
        return t.get(UH) ? t.get(jH) : 0
    }

    function zm(t) {
        t.registerSeriesModel(gH), t.registerChartView(PH), t.registerVisual(FH), t.registerLayout(qH), jv(t)
    }

    function Em(t) {
        t.registerAction({type: QH, update: "updateView"}, function (t, e) {
            function n(e) {
                var n = Ev(t, [QH], e);
                if (n) {
                    var i = e.getViewRoot();
                    i && (t.direction = Bv(i, n.node) ? "rollUp" : "drillDown"), e.resetViewRoot(n.node)
                }
            }

            e.eachComponent({mainType: "series", subType: "sunburst", query: t}, n)
        }), t.registerAction({type: tW, update: "none"}, function (t, e, n) {
            function i(e) {
                var n = Ev(t, [tW], e);
                n && (t.dataIndex = n.node.dataIndex)
            }

            t = h({}, t), e.eachComponent({
                mainType: "series",
                subType: "sunburst",
                query: t
            }, i), n.dispatchAction(h(t, {type: "highlight"}))
        }), t.registerAction({type: eW, update: "updateView"}, function (t, e, n) {
            t = h({}, t), n.dispatchAction(h(t, {type: "downplay"}))
        })
    }

    function Nm(t) {
        var e = 0;
        y(t.children, function (t) {
            Nm(t);
            var n = t.value;
            M(n) && (n = n[0]), e += n
        });
        var n = t.value;
        M(n) && (n = n[0]), (null == n || isNaN(n)) && (n = e), 0 > n && (n = 0), M(t.value) ? t.value[0] = n : t.value = n
    }

    function Bm(t, e, n) {
        e.eachSeriesByType(t, function (t) {
            var e = t.get("center"), i = t.get("radius");
            M(i) || (i = [0, i]), M(e) || (e = [e, e]);
            var r = n.getWidth(), o = n.getHeight(), a = Math.min(r, o), s = _i(e[0], r), l = _i(e[1], o),
                u = _i(i[0], a / 2), h = _i(i[1], a / 2), c = -t.get("startAngle") * rW, p = t.get("minAngle") * rW,
                d = t.getData().tree.root, f = t.getViewRoot(), g = f.depth, v = t.get("sort");
            null != v && Vm(f, v);
            var m = 0;
            y(f.children, function (t) {
                !isNaN(t.getValue()) && m++
            });
            var x = f.getValue(), _ = Math.PI / (x || m) * 2, b = f.depth > 0, w = f.height - (b ? -1 : 1),
                S = (h - u) / (w || 1), I = t.get("clockwise"), T = t.get("stillShowZeroSum"), C = I ? 1 : -1,
                A = function (t, e) {
                    if (t) {
                        var n = e;
                        if (t !== d) {
                            var i = t.getValue(), r = 0 === x && T ? _ : i * _;
                            p > r && (r = p), n = e + C * r;
                            var o = t.depth - g - (b ? -1 : 1), h = u + S * o, c = u + S * (o + 1), f = t.getModel();
                            null != f.get("r0") && (h = _i(f.get("r0"), a / 2)), null != f.get("r") && (c = _i(f.get("r"), a / 2)), t.setLayout({
                                angle: r,
                                startAngle: e,
                                endAngle: n,
                                clockwise: I,
                                cx: s,
                                cy: l,
                                r0: h,
                                r: c
                            })
                        }
                        if (t.children && t.children.length) {
                            var v = 0;
                            y(t.children, function (t) {
                                v += A(t, e + v)
                            })
                        }
                        return n - e
                    }
                };
            if (b) {
                var D = u, L = u + S, k = 2 * Math.PI;
                d.setLayout({angle: k, startAngle: c, endAngle: c + k, clockwise: I, cx: s, cy: l, r0: D, r: L})
            }
            A(f, c)
        })
    }

    function Vm(t, e) {
        var n = t.children || [];
        t.children = Fm(n, e), n.length && y(t.children, function (t) {
            Vm(t, e)
        })
    }

    function Fm(t, e) {
        if ("function" == typeof e) {
            var n = v(t, function (t, e) {
                var n = t.getValue();
                return {
                    params: {
                        depth: t.depth, height: t.height, dataIndex: t.dataIndex, getValue: function () {
                            return n
                        }
                    }, index: e
                }
            });
            return n.sort(function (t, n) {
                return e(t.params, n.params)
            }), v(n, function (e) {
                return t[e.index]
            })
        }
        var i = "asc" === e;
        return t.sort(function (t, e) {
            var n = (t.getValue() - e.getValue()) * (i ? 1 : -1);
            return 0 === n ? (t.dataIndex - e.dataIndex) * (i ? -1 : 1) : n
        })
    }

    function Gm(t) {
        function e(t, e, i) {
            for (var r = t; r && r.depth > 1;) r = r.parentNode;
            var o = e.getColorFromPalette(r.name || r.dataIndex + "", n);
            return t.depth > 1 && "string" == typeof o && (o = un(o, (t.depth - 1) / (i - 1) * .5)), o
        }

        var n = {};
        t.eachSeriesByType("sunburst", function (t) {
            var n = t.getData(), i = n.tree;
            i.eachNode(function (r) {
                var o = r.getModel(), a = o.getModel("itemStyle").getItemStyle();
                a.fill || (a.fill = e(r, t, i.root.height));
                var s = n.ensureUniqueItemVisual(r.dataIndex, "style");
                h(s, a)
            })
        })
    }

    function Hm(t) {
        t.registerChartView(nW), t.registerSeriesModel(iW), t.registerLayout(S(Bm, "sunburst")), t.registerProcessor(S(Bg, "sunburst")), t.registerVisual(Gm), Em(t)
    }

    function Wm(t) {
        return isNaN(+t.cpx1) || isNaN(+t.cpy1)
    }

    function Xm(t) {
        return "_" + t + "Type"
    }

    function Ym(t, e, n) {
        var i = e.getItemVisual(n, t);
        if (i && "none" !== i) {
            var r = e.getItemVisual(n, t + "Size"), o = e.getItemVisual(n, t + "Rotate"),
                a = e.getItemVisual(n, t + "Offset") || 0, s = e.getItemVisual(n, t + "KeepAspect"),
                l = M(r) ? r : [r, r], u = M(a) ? a : [a, a];
            u[0] = _i(u[0], l[0]), u[1] = _i(B(u[1], u[0]), l[1]);
            var h = Sc(i, -l[0] / 2 + u[0], -l[1] / 2 + u[1], l[0], l[1], null, s);
            return h.__specifiedRotation = null == o || isNaN(o) ? void 0 : +o * Math.PI / 180 || 0, h.name = t, h
        }
    }

    function Zm(t) {
        var e = new lW({name: "line", subPixelOptimize: !0});
        return Um(e.shape, t), e
    }

    function Um(t, e) {
        t.x1 = e[0][0], t.y1 = e[0][1], t.x2 = e[1][0], t.y2 = e[1][1], t.percent = 1;
        var n = e[2];
        n ? (t.cpx1 = n[0], t.cpy1 = n[1]) : (t.cpx1 = 0 / 0, t.cpy1 = 0 / 0)
    }

    function jm(t) {
        return t.animators && t.animators.length > 0
    }

    function qm(t) {
        var e = t.hostModel;
        return {
            lineStyle: e.getModel("lineStyle").getLineStyle(),
            emphasisLineStyle: e.getModel(["emphasis", "lineStyle"]).getLineStyle(),
            blurLineStyle: e.getModel(["blur", "lineStyle"]).getLineStyle(),
            selectLineStyle: e.getModel(["select", "lineStyle"]).getLineStyle(),
            labelStatesModels: Ps(e)
        }
    }

    function Km(t) {
        return isNaN(t[0]) || isNaN(t[1])
    }

    function $m(t) {
        return !Km(t[0]) && !Km(t[1])
    }

    function Jm(t) {
        var e = t.data;
        e && e[0] && e[0][0] && e[0][0].coord && (t.data = v(e, function (t) {
            var e = [t[0].coord, t[1].coord], n = {coords: e};
            return t[0].name && (n.fromName = t[0].name), t[1].name && (n.toName = t[1].name), u([n, t[0], t[1]])
        }))
    }

    function Qm(t) {
        return t instanceof Array || (t = [t, t]), t
    }

    function tx(t) {
        t.registerChartView(xW), t.registerSeriesModel(wW), t.registerLayout(mW), t.registerVisual(SW)
    }

    function ex(t) {
        var e = t.findComponents({mainType: "legend"});
        e && e.length && t.eachSeriesByType("graph", function (t) {
            var n = t.getCategoriesData(), i = t.getGraph(), r = i.data, o = n.mapArray(n.getName);
            r.filterSelf(function (t) {
                var n = r.getItemModel(t), i = n.getShallow("category");
                if (null != i) {
                    "number" == typeof i && (i = o[i]);
                    for (var a = 0; a < e.length; a++) if (!e[a].isSelected(i)) return !1
                }
                return !0
            })
        })
    }

    function nx(t) {
        var e = {};
        t.eachSeriesByType("graph", function (t) {
            var n = t.getCategoriesData(), i = t.getData(), r = {};
            n.each(function (i) {
                var o = n.getName(i);
                r["ec-" + o] = i;
                var a = n.getItemModel(i), s = a.getModel("itemStyle").getItemStyle();
                s.fill || (s.fill = t.getColorFromPalette(o, e)), n.setItemVisual(i, "style", s);
                for (var l = ["symbol", "symbolSize", "symbolKeepAspect"], u = 0; u < l.length; u++) {
                    var h = a.getShallow(l[u], !0);
                    null != h && n.setItemVisual(i, l[u], h)
                }
            }), n.count() && i.each(function (t) {
                var e = i.getItemModel(t), o = e.getShallow("category");
                if (null != o) {
                    "string" == typeof o && (o = r["ec-" + o]);
                    var a = n.getItemVisual(o, "style"), s = i.ensureUniqueItemVisual(t, "style");
                    h(s, a);
                    for (var l = ["symbol", "symbolSize", "symbolKeepAspect"], u = 0; u < l.length; u++) i.setItemVisual(t, l[u], n.getItemVisual(o, l[u]))
                }
            })
        })
    }

    function ix(t) {
        return t instanceof Array || (t = [t, t]), t
    }

    function rx(t) {
        t.eachSeriesByType("graph", function (t) {
            var e = t.getGraph(), n = t.getEdgeData(), i = ix(t.get("edgeSymbol")), r = ix(t.get("edgeSymbolSize"));
            n.setVisual("fromSymbol", i && i[0]), n.setVisual("toSymbol", i && i[1]), n.setVisual("fromSymbolSize", r && r[0]), n.setVisual("toSymbolSize", r && r[1]), n.setVisual("style", t.getModel("lineStyle").getLineStyle()), n.each(function (t) {
                var i = n.getItemModel(t), r = e.getEdgeByIndex(t), o = ix(i.getShallow("symbol", !0)),
                    a = ix(i.getShallow("symbolSize", !0)), s = i.getModel("lineStyle").getLineStyle(),
                    l = n.ensureUniqueItemVisual(t, "style");
                switch (h(l, s), l.stroke) {
                    case"source":
                        var u = r.node1.getVisual("style");
                        l.stroke = u && u.fill;
                        break;
                    case"target":
                        var u = r.node2.getVisual("style");
                        l.stroke = u && u.fill
                }
                o[0] && r.setVisual("fromSymbol", o[0]), o[1] && r.setVisual("toSymbol", o[1]), a[0] && r.setVisual("fromSymbolSize", a[0]), a[1] && r.setVisual("toSymbolSize", a[1])
            })
        })
    }

    function ox(t) {
        IW(t) && (t.__curvenessList = [], t.__edgeMap = {}, TW(t))
    }

    function ax(t, e, n, i) {
        if (IW(n)) {
            var r = CW(t, e, n), o = n.__edgeMap, a = o[AW(r)];
            o[r] && !a ? o[r].isForward = !0 : a && o[r] && (a.isForward = !0, o[r].isForward = !1), o[r] = o[r] || [], o[r].push(i)
        }
    }

    function sx(t, e, n, i) {
        var r = IW(e), o = M(r);
        if (!r) return null;
        var a = DW(t, e);
        if (!a) return null;
        for (var s = -1, l = 0; l < a.length; l++) if (a[l] === n) {
            s = l;
            break
        }
        var u = LW(t, e);
        TW(e, u), t.lineStyle = t.lineStyle || {};
        var h = CW(t.node1, t.node2, e), c = e.__curvenessList, p = o ? 0 : u % 2 ? 0 : 1;
        if (a.isForward) return c[p + s];
        var d = AW(h), f = kW(d, e), g = c[s + f + p];
        return i ? o ? r && 0 === r[0] ? (f + p) % 2 ? g : -g : ((f % 2 ? 0 : 1) + p) % 2 ? g : -g : (f + p) % 2 ? g : -g : c[s + f + p]
    }

    function lx(t) {
        var e = t.coordinateSystem;
        if (!e || "view" === e.type) {
            var n = t.getGraph();
            n.eachNode(function (t) {
                var e = t.getModel();
                t.setLayout([+e.get("x"), +e.get("y")])
            }), ux(n, t)
        }
    }

    function ux(t, e) {
        t.eachEdge(function (t, n) {
            var i = V(t.getModel().get(["lineStyle", "curveness"]), -sx(t, e, n, !0), 0), r = Q(t.node1.getLayout()),
                o = Q(t.node2.getLayout()), a = [r, o];
            +i && a.push([(r[0] + o[0]) / 2 - (r[1] - o[1]) * i, (r[1] + o[1]) / 2 - (o[0] - r[0]) * i]), t.setLayout(a)
        })
    }

    function hx(t) {
        t.eachSeriesByType("graph", function (t) {
            var e = t.get("layout"), n = t.coordinateSystem;
            if (n && "view" !== n.type) {
                var i = t.getData(), r = [];
                y(n.dimensions, function (t) {
                    r = r.concat(i.mapDimensionsAll(t))
                });
                for (var o = 0; o < i.count(); o++) {
                    for (var a = [], s = !1, l = 0; l < r.length; l++) {
                        var u = i.get(r[l], o);
                        isNaN(u) || (s = !0), a.push(u)
                    }
                    s ? i.setItemLayout(o, n.dataToPoint(a)) : i.setItemLayout(o, [0 / 0, 0 / 0])
                }
                ux(i.graph, t)
            } else e && "none" !== e || lx(t)
        })
    }

    function cx(t) {
        var e = t.coordinateSystem;
        if ("view" !== e.type) return 1;
        var n = t.option.nodeScaleRatio, i = e.scaleX, r = e.getZoom(), o = (r - 1) * n + 1;
        return o / i
    }

    function px(t) {
        var e = t.getVisual("symbolSize");
        return e instanceof Array && (e = (e[0] + e[1]) / 2), +e
    }

    function dx(t, e) {
        var n = t.coordinateSystem;
        if (!n || "view" === n.type) {
            var i = n.getBoundingRect(), r = t.getData(), o = r.graph, a = i.width / 2 + i.x, s = i.height / 2 + i.y,
                l = Math.min(i.width, i.height) / 2, u = r.count();
            r.setLayout({cx: a, cy: s}), u && (RW[e](t, o, r, l, a, s, u), o.eachEdge(function (e, n) {
                var i, r = V(e.getModel().get(["lineStyle", "curveness"]), sx(e, t, n), 0), o = Q(e.node1.getLayout()),
                    l = Q(e.node2.getLayout()), u = (o[0] + l[0]) / 2, h = (o[1] + l[1]) / 2;
                +r && (r *= 3, i = [a * r + u * (1 - r), s * r + h * (1 - r)]), e.setLayout([o, l, i])
            }))
        }
    }

    function fx(t) {
        t.eachSeriesByType("graph", function (t) {
            "circular" === t.get("layout") && dx(t, "symbolSize")
        })
    }

    function gx(t, e, n) {
        for (var i = t, r = e, o = n.rect, a = o.width, s = o.height, l = [o.x + a / 2, o.y + s / 2], u = null == n.gravity ? .1 : n.gravity, h = 0; h < i.length; h++) {
            var c = i[h];
            c.p || (c.p = $(a * (Math.random() - .5) + l[0], s * (Math.random() - .5) + l[1])), c.pp = Q(c.p), c.edges = null
        }
        var p, d, f = null == n.friction ? .6 : n.friction, g = f;
        return {
            warmUp: function () {
                g = .8 * f
            }, setFixed: function (t) {
                i[t].fixed = !0
            }, setUnfixed: function (t) {
                i[t].fixed = !1
            }, beforeStep: function (t) {
                p = t
            }, afterStep: function (t) {
                d = t
            }, step: function (t) {
                p && p(i, r);
                for (var e = [], n = i.length, o = 0; o < r.length; o++) {
                    var a = r[o];
                    if (!a.ignoreForceLayout) {
                        var s = a.n1, h = a.n2;
                        ie(e, h.p, s.p);
                        var c = re(e) - a.d, f = h.w / (s.w + h.w);
                        isNaN(f) && (f = 0), he(e, e), !s.fixed && zW(s.p, s.p, e, f * c * g), !h.fixed && zW(h.p, h.p, e, -(1 - f) * c * g)
                    }
                }
                for (var o = 0; n > o; o++) {
                    var y = i[o];
                    y.fixed || (ie(e, l, y.p), zW(y.p, y.p, e, u * g))
                }
                for (var o = 0; n > o; o++) for (var s = i[o], v = o + 1; n > v; v++) {
                    var h = i[v];
                    ie(e, h.p, s.p);
                    var c = re(e);
                    0 === c && (te(e, Math.random() - .5, Math.random() - .5), c = 1);
                    var m = (s.rep + h.rep) / c / c;
                    !s.fixed && zW(s.pp, s.pp, e, m), !h.fixed && zW(h.pp, h.pp, e, -m)
                }
                for (var x = [], o = 0; n > o; o++) {
                    var y = i[o];
                    y.fixed || (ie(x, y.p, y.pp), zW(y.p, y.p, x, g), J(y.pp, y.p))
                }
                g = .992 * g;
                var _ = .01 > g;
                d && d(i, r, _), t && t(_)
            }
        }
    }

    function yx(t) {
        t.eachSeriesByType("graph", function (t) {
            var e = t.coordinateSystem;
            if (!e || "view" === e.type) if ("force" === t.get("layout")) {
                var n = t.preservedPoints || {}, i = t.getGraph(), r = i.data, o = i.edgeData, a = t.getModel("force"),
                    s = a.get("initLayout");
                t.preservedPoints ? r.each(function (t) {
                    var e = r.getId(t);
                    r.setItemLayout(t, n[e] || [0 / 0, 0 / 0])
                }) : s && "none" !== s ? "circular" === s && dx(t, "value") : lx(t);
                var l = r.getDataExtent("value"), u = o.getDataExtent("value"), h = a.get("repulsion"),
                    c = a.get("edgeLength"), p = M(h) ? h : [h, h], d = M(c) ? c : [c, c];
                d = [d[1], d[0]];
                var f = r.mapArray("value", function (t, e) {
                        var n = r.getItemLayout(e), i = xi(t, l, p);
                        return isNaN(i) && (i = (p[0] + p[1]) / 2), {
                            w: i,
                            rep: i,
                            fixed: r.getItemModel(e).get("fixed"),
                            p: !n || isNaN(n[0]) || isNaN(n[1]) ? null : n
                        }
                    }), g = o.mapArray("value", function (e, n) {
                        var r = i.getEdgeByIndex(n), o = xi(e, u, d);
                        isNaN(o) && (o = (d[0] + d[1]) / 2);
                        var a = r.getModel(), s = V(r.getModel().get(["lineStyle", "curveness"]), -sx(r, t, n, !0), 0);
                        return {
                            n1: f[r.node1.dataIndex],
                            n2: f[r.node2.dataIndex],
                            d: o,
                            curveness: s,
                            ignoreForceLayout: a.get("ignoreForceLayout")
                        }
                    }), y = e.getBoundingRect(),
                    v = gx(f, g, {rect: y, gravity: a.get("gravity"), friction: a.get("friction")});
                v.beforeStep(function (t) {
                    for (var e = 0, n = t.length; n > e; e++) t[e].fixed && J(t[e].p, i.getNodeByIndex(e).getLayout())
                }), v.afterStep(function (t, e) {
                    for (var o = 0, a = t.length; a > o; o++) t[o].fixed || i.getNodeByIndex(o).setLayout(t[o].p), n[r.getId(o)] = t[o].p;
                    for (var o = 0, a = e.length; a > o; o++) {
                        var s = e[o], l = i.getEdgeByIndex(o), u = s.n1.p, h = s.n2.p, c = l.getLayout();
                        c = c ? c.slice() : [], c[0] = c[0] || [], c[1] = c[1] || [], J(c[0], u), J(c[1], h), +s.curveness && (c[2] = [(u[0] + h[0]) / 2 - (u[1] - h[1]) * s.curveness, (u[1] + h[1]) / 2 - (h[0] - u[0]) * s.curveness]), l.setLayout(c)
                    }
                }), t.forceLayout = v, t.preservedPoints = n, v.step()
            } else t.forceLayout = null
        })
    }

    function vx(t, e, n) {
        var i = h(t.getBoxLayoutParams(), {aspect: n});
        return kl(i, {width: e.getWidth(), height: e.getHeight()})
    }

    function mx(t, e) {
        var n = [];
        return t.eachSeriesByType("graph", function (t) {
            var i = t.get("coordinateSystem");
            if (!i || "view" === i) {
                var r = t.getData(), o = r.mapArray(function (t) {
                    var e = r.getItemModel(t);
                    return [+e.get("x"), +e.get("y")]
                }), a = [], s = [];
                ao(o, a, s), s[0] - a[0] === 0 && (s[0] += 1, a[0] -= 1), s[1] - a[1] === 0 && (s[1] += 1, a[1] -= 1);
                var l = (s[0] - a[0]) / (s[1] - a[1]), u = vx(t, e, l);
                isNaN(l) && (a = [u.x, u.y], s = [u.x + u.width, u.y + u.height]);
                var h = s[0] - a[0], c = s[1] - a[1], p = u.width, d = u.height, f = t.coordinateSystem = new nH;
                f.zoomLimit = t.get("scaleLimit"), f.setBoundingRect(a[0], a[1], h, c), f.setViewRect(u.x, u.y, p, d), f.setCenter(t.get("center")), f.setZoom(t.get("zoom")), n.push(f)
            }
        }), n
    }

    function xx(t, e, n) {
        for (var i, r = t[0], o = t[1], a = t[2], s = 1 / 0, l = n * n, u = .1, h = .1; .9 >= h; h += .1) {
            EW[0] = VW(r[0], o[0], a[0], h), EW[1] = VW(r[1], o[1], a[1], h);
            var c = GW(FW(EW, e) - l);
            s > c && (s = c, i = h)
        }
        for (var p = 0; 32 > p; p++) {
            var d = i + u;
            NW[0] = VW(r[0], o[0], a[0], i), NW[1] = VW(r[1], o[1], a[1], i), BW[0] = VW(r[0], o[0], a[0], d), BW[1] = VW(r[1], o[1], a[1], d);
            var c = FW(NW, e) - l;
            if (GW(c) < .01) break;
            var f = FW(BW, e) - l;
            u /= 2, 0 > c ? f >= 0 ? i += u : i -= u : f >= 0 ? i -= u : i += u
        }
        return i
    }

    function _x(t, e) {
        var n = [], i = io, r = [[], [], []], o = [[], []], a = [];
        e /= 2, t.eachEdge(function (t) {
            var s = t.getLayout(), l = t.getVisual("fromSymbol"), u = t.getVisual("toSymbol");
            s.__original || (s.__original = [Q(s[0]), Q(s[1])], s[2] && s.__original.push(Q(s[2])));
            var h = s.__original;
            if (null != s[2]) {
                if (J(r[0], h[0]), J(r[1], h[2]), J(r[2], h[1]), l && "none" !== l) {
                    var c = px(t.node1), p = xx(r, h[0], c * e);
                    i(r[0][0], r[1][0], r[2][0], p, n), r[0][0] = n[3], r[1][0] = n[4], i(r[0][1], r[1][1], r[2][1], p, n), r[0][1] = n[3], r[1][1] = n[4]
                }
                if (u && "none" !== u) {
                    var c = px(t.node2), p = xx(r, h[1], c * e);
                    i(r[0][0], r[1][0], r[2][0], p, n), r[1][0] = n[1], r[2][0] = n[2], i(r[0][1], r[1][1], r[2][1], p, n), r[1][1] = n[1], r[2][1] = n[2]
                }
                J(s[0], r[0]), J(s[1], r[2]), J(s[2], r[1])
            } else {
                if (J(o[0], h[0]), J(o[1], h[1]), ie(a, o[1], o[0]), he(a, a), l && "none" !== l) {
                    var c = px(t.node1);
                    ne(o[0], o[0], a, c * e)
                }
                if (u && "none" !== u) {
                    var c = px(t.node2);
                    ne(o[1], o[1], a, -c * e)
                }
                J(s[0], o[0]), J(s[1], o[1])
            }
        })
    }

    function bx(t) {
        return "view" === t.type
    }

    function Sx(t) {
        return "_EC_" + t
    }

    function Mx(t, e) {
        return {
            getValue: function (n) {
                var i = this[t][e];
                return i.get(i.getDimension(n || "value"), this.dataIndex)
            }, setVisual: function (n, i) {
                this.dataIndex >= 0 && this[t][e].setItemVisual(this.dataIndex, n, i)
            }, getVisual: function (n) {
                return this[t][e].getItemVisual(this.dataIndex, n)
            }, setLayout: function (n, i) {
                this.dataIndex >= 0 && this[t][e].setItemLayout(this.dataIndex, n, i)
            }, getLayout: function () {
                return this[t][e].getItemLayout(this.dataIndex)
            }, getGraphicEl: function () {
                return this[t][e].getItemGraphicEl(this.dataIndex)
            }, getRawIndex: function () {
                return this[t][e].getRawIndex(this.dataIndex)
            }
        }
    }

    function Ix(t, e, n, i, r) {
        for (var o = new WW(i), a = 0; a < t.length; a++) o.addNode(N(t[a].id, t[a].name, a), a);
        for (var s = [], l = [], u = 0, a = 0; a < e.length; a++) {
            var h = e[a], c = h.source, d = h.target;
            o.addEdge(c, d, u) && (l.push(h), s.push(N(er(h.id, null), c + " > " + d)), u++)
        }
        var f, g = n.get("coordinateSystem");
        if ("cartesian2d" === g || "polar" === g) f = gd(t, n); else {
            var y = UR.get(g), v = y ? y.dimensions || [] : [];
            p(v, "value") < 0 && v.concat(["value"]);
            var m = ud(t, {coordDimensions: v});
            f = new fV(m, n), f.initData(t)
        }
        var x = new fV(["value"], n);
        return x.initData(l, s), r && r(f, x), Tv({
            mainData: f,
            struct: o,
            structAttr: "graph",
            datas: {node: f, edge: x},
            datasAttr: {node: "data", edge: "edgeData"}
        }), o.update(), o
    }

    function Tx(t) {
        t.registerChartView(HW), t.registerSeriesModel(ZW), t.registerProcessor(ex), t.registerVisual(nx), t.registerVisual(rx), t.registerLayout(hx), t.registerLayout(t.PRIORITY.VISUAL.POST_CHART_LAYOUT, fx), t.registerLayout(yx), t.registerCoordinateSystem("graphView", {
            dimensions: nH.dimensions,
            create: mx
        }), t.registerAction({
            type: "focusNodeAdjacency",
            event: "focusNodeAdjacency",
            update: "series:focusNodeAdjacency"
        }, function () {
        }), t.registerAction({
            type: "unfocusNodeAdjacency",
            event: "unfocusNodeAdjacency",
            update: "series:unfocusNodeAdjacency"
        }, function () {
        }), t.registerAction(UW, function (t, e) {
            e.eachComponent({mainType: "series", query: t}, function (e) {
                var n = e.coordinateSystem, i = Yv(n, t);
                e.setCenter && e.setCenter(i.center), e.setZoom && e.setZoom(i.zoom)
            })
        })
    }

    function Cx(t, e, n, i, r) {
        var o = t.ends, a = new $W({shape: {points: r ? Dx(o, i, t) : o}});
        return Ax(t, a, e, n, r), a
    }

    function Ax(t, e, n, i, r) {
        var o = n.hostModel, a = MO[r ? "initProps" : "updateProps"];
        a(e, {shape: {points: t.ends}}, o, i), e.useStyle(n.getItemVisual(i, "style")), e.style.strokeNoScale = !0, e.z2 = 100;
        var s = n.getItemModel(i);
        Ia(e, s), Sa(e, s.get(["emphasis", "focus"]), s.get(["emphasis", "blurScope"]))
    }

    function Dx(t, e, n) {
        return v(t, function (t) {
            return t = t.slice(), t[e] = n.initBaseline, t
        })
    }

    function Lx() {
    }

    function kx(t) {
        var e = Px(t);
        JW(e, function (t) {
            var e = t.seriesModels;
            e.length && (Ox(t), JW(e, function (e, n) {
                Rx(e, t.boxOffsetList[n], t.boxWidthList[n])
            }))
        })
    }

    function Px(t) {
        var e = [], n = [];
        return t.eachSeriesByType("boxplot", function (t) {
            var i = t.getBaseAxis(), r = p(n, i);
            0 > r && (r = n.length, n[r] = i, e[r] = {axis: i, seriesModels: []}), e[r].seriesModels.push(t)
        }), e
    }

    function Ox(t) {
        var e, n, i = t.axis, r = t.seriesModels, o = r.length, a = t.boxWidthList = [], s = t.boxOffsetList = [],
            l = [];
        if ("category" === i.type) n = i.getBandWidth(); else {
            var u = 0;
            JW(r, function (t) {
                u = Math.max(u, t.getData().count())
            }), e = i.getExtent(), Math.abs(e[1] - e[0]) / u
        }
        JW(r, function (t) {
            var e = t.get("boxWidth");
            M(e) || (e = [e, e]), l.push([_i(e[0], n) || 0, _i(e[1], n) || 0])
        });
        var h = .8 * n - 2, c = h / o * .3, p = (h - c * (o - 1)) / o, d = p / 2 - h / 2;
        JW(r, function (t, e) {
            s.push(d), d += c + p, a.push(Math.min(Math.max(p, l[e][0]), l[e][1]))
        })
    }

    function Rx(t, e, n) {
        function i(t, n, i) {
            var r = s.get(n, i), o = [];
            o[u] = t, o[h] = r;
            var l;
            return isNaN(t) || isNaN(r) ? l = [0 / 0, 0 / 0] : (l = a.dataToPoint(o), l[u] += e), l
        }

        function r(t, e, n) {
            var i = e.slice(), r = e.slice();
            i[u] += l, r[u] -= l, n ? t.push(i, r) : t.push(r, i)
        }

        function o(t, e) {
            var n = e.slice(), i = e.slice();
            n[u] -= l, i[u] += l, t.push(n, i)
        }

        var a = t.coordinateSystem, s = t.getData(), l = n / 2, u = "horizontal" === t.get("layout") ? 0 : 1, h = 1 - u,
            c = ["x", "y"], p = s.mapDimension(c[u]), d = s.mapDimensionsAll(c[h]);
        if (!(null == p || d.length < 5)) for (var f = 0; f < s.count(); f++) {
            var g = s.get(p, f), y = i(g, d[2], f), v = i(g, d[0], f), m = i(g, d[1], f), x = i(g, d[3], f),
                _ = i(g, d[4], f), b = [];
            r(b, m, !1), r(b, x, !0), b.push(v, m, _, x), o(b, v), o(b, _), o(b, y), s.setItemLayout(f, {
                initBaseline: y[h],
                ends: b
            })
        }
    }

    function zx(t, e) {
        e = e || {};
        for (var n = [], i = [], r = e.boundIQR, o = "none" === r || 0 === r, a = 0; a < t.length; a++) {
            var s = wi(t[a].slice()), l = Ri(s, .25), u = Ri(s, .5), h = Ri(s, .75), c = s[0], p = s[s.length - 1],
                d = (null == r ? 1.5 : r) * (h - l), f = o ? c : Math.max(c, l - d), g = o ? p : Math.min(p, h + d),
                y = e.itemNameFormatter, v = I(y) ? y({value: a}) : T(y) ? y.replace("{value}", a + "") : a + "";
            n.push([v, f, l, u, h, g]);
            for (var m = 0; m < s.length; m++) {
                var x = s[m];
                if (f > x || x > g) {
                    var _ = [v, x];
                    i.push(_)
                }
            }
        }
        return {boxData: n, outliers: i}
    }

    function Ex(t) {
        t.registerSeriesModel(jW), t.registerChartView(qW), t.registerVisual(Lx), t.registerLayout(kx), t.registerTransform(QW)
    }

    function Nx(t, e, n) {
        var i = t.model, r = t.getRect(), o = new Uk({shape: {x: r.x, y: r.y, width: r.width, height: r.height}}),
            a = "horizontal" === i.get("layout") ? "width" : "height";
        return o.setShape(a, 0), hs(o, {shape: {width: r.width, height: r.height}}, e, n), o
    }

    function Bx(t, e, n, i) {
        for (var r = [], o = 0; o < n.length; o++) {
            var a = n[o], s = t.get(t.mapDimension(a), e);
            Hx(s, i.getAxis(a).type) || r.push(i.dataToPoint(s, a))
        }
        return r
    }

    function Vx(t, e, n, i, r) {
        var o = Bx(t, n, i, r), a = new JP({shape: {points: o}, z2: 10});
        return e.add(a), t.setItemGraphicEl(n, a), a
    }

    function Fx(t) {
        var e = t.get("smooth", !0);
        return e === !0 && (e = tX), e = Ei(e), E(e) && (e = 0), {smooth: e}
    }

    function Gx(t, e, n, i) {
        t.useStyle(e.getItemVisual(n, "style")), t.style.fill = null, t.setShape("smooth", i.smooth);
        var r = e.getItemModel(n), o = r.getModel("emphasis");
        Ia(t, r, "lineStyle"), Sa(t, o.get("focus"), o.get("blurScope"))
    }

    function Hx(t, e) {
        return "category" === e ? null == t : null == t || isNaN(t)
    }

    function Wx(t) {
        var e = t.ecModel.getComponent("parallel", t.get("parallelIndex"));
        if (e) {
            var n = {};
            return y(e.dimensions, function (t) {
                var e = Xx(t);
                n[t] = e
            }), n
        }
    }

    function Xx(t) {
        return +t.replace("dim", "")
    }

    function Yx(t) {
        Zx(t), Ux(t)
    }

    function Zx(t) {
        if (!t.parallel) {
            var e = !1;
            y(t.series, function (t) {
                t && "parallel" === t.type && (e = !0)
            }), e && (t.parallel = [{}])
        }
    }

    function Ux(t) {
        var e = Hi(t.parallelAxis);
        y(e, function (e) {
            if (D(e)) {
                var n = e.parallelIndex || 0, i = Hi(t.parallel)[n];
                i && i.parallelAxisDefault && l(e, i.parallelAxisDefault, !1)
            }
        })
    }

    function jx(t, e) {
        var n = t._model;
        return n.get("axisExpandable") && n.get("axisExpandTriggerOn") === e
    }

    function qx(t, e, n, i, r, o) {
        t = t || 0;
        var a = n[1] - n[0];
        if (null != r && (r = $x(r, [0, a])), null != o && (o = Math.max(o, null != r ? r : 0)), "all" === i) {
            var s = Math.abs(e[1] - e[0]);
            s = $x(s, [0, a]), r = o = $x(s, [r, o]), i = 0
        }
        e[0] = $x(e[0], n), e[1] = $x(e[1], n);
        var l = Kx(e, i);
        e[i] += t;
        var u = r || 0, h = n.slice();
        l.sign < 0 ? h[0] += u : h[1] -= u, e[i] = $x(e[i], h);
        var c;
        return c = Kx(e, i), null != r && (c.sign !== l.sign || c.span < r) && (e[1 - i] = e[i] + l.sign * r), c = Kx(e, i), null != o && c.span > o && (e[1 - i] = e[i] + c.sign * o), e
    }

    function Kx(t, e) {
        var n = t[e] - t[1 - e];
        return {span: Math.abs(n), sign: n > 0 ? -1 : 0 > n ? 1 : e ? -1 : 1}
    }

    function $x(t, e) {
        return Math.min(null != e[1] ? e[1] : 1 / 0, Math.max(null != e[0] ? e[0] : -1 / 0, t))
    }

    function Jx(t, e) {
        return cX(pX(t, e[0]), e[1])
    }

    function Qx(t, e) {
        var n = e.layoutLength / (e.axisCount - 1);
        return {position: n * t, axisNameAvailableWidth: n, axisLabelShow: !0}
    }

    function t_(t, e) {
        var n, i, r = e.layoutLength, o = e.axisExpandWidth, a = e.axisCount, s = e.axisCollapseWidth,
            l = e.winInnerIndices, u = s, h = !1;
        return t < l[0] ? (n = t * s, i = s) : t <= l[1] ? (n = e.axisExpandWindow0Pos + t * o - e.axisExpandWindow[0], u = o, h = !0) : (n = r - (a - 1 - t) * s, i = s), {
            position: n,
            axisNameAvailableWidth: u,
            axisLabelShow: h,
            nameTruncateMaxWidth: i
        }
    }

    function e_(t, e) {
        var n = [];
        return t.eachComponent("parallel", function (i, r) {
            var o = new vX(i, t, e);
            o.name = "parallel_" + r, o.resize(i, e), i.coordinateSystem = o, o.model = i, n.push(o)
        }), t.eachSeries(function (t) {
            if ("parallel" === t.get("coordinateSystem")) {
                var e = t.getReferringComponents("parallel", wL).models[0];
                t.coordinateSystem = e.coordinateSystem
            }
        }), n
    }

    function n_(t, e) {
        var n = RX[e.brushType].createCover(t, e);
        return n.__brushOption = e, o_(n, e), t.group.add(n), n
    }

    function i_(t, e) {
        var n = s_(e);
        return n.endCreating && (n.endCreating(t, e), o_(e, e.__brushOption)), e
    }

    function r_(t, e) {
        var n = e.__brushOption;
        s_(e).updateCoverShape(t, e, n.range, n)
    }

    function o_(t, e) {
        var n = e.z;
        null == n && (n = MX), t.traverse(function (t) {
            t.z = n, t.z2 = n
        })
    }

    function a_(t, e) {
        s_(e).updateCommon(t, e), r_(t, e)
    }

    function s_(t) {
        return RX[t.__brushOption.brushType]
    }

    function l_(t, e, n) {
        var i = t._panels;
        if (!i) return _X;
        var r, o = t._transform;
        return y(i, function (t) {
            t.isTargetByCursor(e, n, o) && (r = t)
        }), r
    }

    function u_(t, e) {
        var n = t._panels;
        if (!n) return _X;
        var i = e.__brushOption.panelId;
        return null != i ? n[i] : _X
    }

    function h_(t) {
        var e = t._covers, n = e.length;
        return y(e, function (e) {
            t.group.remove(e)
        }, t), e.length = 0, !!n
    }

    function c_(t, e) {
        var n = v(t._covers, function (t) {
            var e = t.__brushOption, n = s(e.range);
            return {brushType: e.brushType, panelId: e.panelId, range: n}
        });
        t.trigger("brush", {areas: n, isEnd: !!e.isEnd, removeOnClick: !!e.removeOnClick})
    }

    function p_(t) {
        var e = t._track;
        if (!e.length) return !1;
        var n = e[e.length - 1], i = e[0], r = n[0] - i[0], o = n[1] - i[1], a = SX(r * r + o * o, .5);
        return a > IX
    }

    function d_(t) {
        var e = t.length - 1;
        return 0 > e && (e = 0), [t[0], t[e]]
    }

    function f_(t, e, n, i) {
        var r = new sL;
        return r.add(new Uk({
            name: "main",
            style: m_(n),
            silent: !0,
            draggable: !0,
            cursor: "move",
            drift: S(S_, t, e, r, ["n", "s", "w", "e"]),
            ondragend: S(c_, e, {isEnd: !0})
        })), y(i, function (n) {
            r.add(new Uk({
                name: n.join(""),
                style: {opacity: 0},
                draggable: !0,
                silent: !0,
                invisible: !0,
                drift: S(S_, t, e, r, n),
                ondragend: S(c_, e, {isEnd: !0})
            }))
        }), r
    }

    function g_(t, e, n, i) {
        var r = i.brushStyle.lineWidth || 0, o = wX(r, TX), a = n[0][0], s = n[1][0], l = a - r / 2, u = s - r / 2,
            h = n[0][1], c = n[1][1], p = h - o + r / 2, d = c - o + r / 2, f = h - a, g = c - s, y = f + r, v = g + r;
        v_(t, e, "main", a, s, f, g), i.transformable && (v_(t, e, "w", l, u, o, v), v_(t, e, "e", p, u, o, v), v_(t, e, "n", l, u, y, o), v_(t, e, "s", l, d, y, o), v_(t, e, "nw", l, u, o, o), v_(t, e, "ne", p, u, o, o), v_(t, e, "sw", l, d, o, o), v_(t, e, "se", p, d, o, o))
    }

    function y_(t, e) {
        var n = e.__brushOption, i = n.transformable, r = e.childAt(0);
        r.useStyle(m_(n)), r.attr({
            silent: !i,
            cursor: i ? "move" : "default"
        }), y([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function (n) {
            var r = e.childOfName(n.join("")), o = 1 === n.length ? b_(t, n[0]) : w_(t, n);
            r && r.attr({silent: !i, invisible: !i, cursor: i ? DX[o] + "-resize" : null})
        })
    }

    function v_(t, e, n, i, r, o, a) {
        var s = e.childOfName(n);
        s && s.setShape(C_(T_(t, e, [[i, r], [i + o, r + a]])))
    }

    function m_(t) {
        return c({strokeNoScale: !0}, t.brushStyle)
    }

    function x_(t, e, n, i) {
        var r = [bX(t, n), bX(e, i)], o = [wX(t, n), wX(e, i)];
        return [[r[0], o[0]], [r[1], o[1]]]
    }

    function __(t) {
        return gs(t.group)
    }

    function b_(t, e) {
        var n = {w: "left", e: "right", n: "top", s: "bottom"}, i = {left: "w", right: "e", top: "n", bottom: "s"},
            r = vs(n[e], __(t));
        return i[r]
    }

    function w_(t, e) {
        var n = [b_(t, e[0]), b_(t, e[1])];
        return ("e" === n[0] || "w" === n[0]) && n.reverse(), n.join("")
    }

    function S_(t, e, n, i, r, o) {
        var a = n.__brushOption, s = t.toRectRange(a.range), l = I_(e, r, o);
        y(i, function (t) {
            var e = AX[t];
            s[e[0]][e[1]] += l[e[0]]
        }), a.range = t.fromRectRange(x_(s[0][0], s[1][0], s[0][1], s[1][1])), a_(e, n), c_(e, {isEnd: !1})
    }

    function M_(t, e, n, i) {
        var r = e.__brushOption.range, o = I_(t, n, i);
        y(r, function (t) {
            t[0] += o[0], t[1] += o[1]
        }), a_(t, e), c_(t, {isEnd: !1})
    }

    function I_(t, e, n) {
        var i = t.group, r = i.transformCoordToLocal(e, n), o = i.transformCoordToLocal(0, 0);
        return [r[0] - o[0], r[1] - o[1]]
    }

    function T_(t, e, n) {
        var i = u_(t, e);
        return i && i !== _X ? i.clipPath(n, t._transform) : s(n)
    }

    function C_(t) {
        var e = bX(t[0][0], t[1][0]), n = bX(t[0][1], t[1][1]), i = wX(t[0][0], t[1][0]), r = wX(t[0][1], t[1][1]);
        return {x: e, y: n, width: i - e, height: r - n}
    }

    function A_(t, e, n) {
        if (t._brushType && !R_(t, e.offsetX, e.offsetY)) {
            var i = t._zr, r = t._covers, o = l_(t, e, n);
            if (!t._dragging) for (var a = 0; a < r.length; a++) {
                var s = r[a].__brushOption;
                if (o && (o === _X || s.panelId === o.panelId) && RX[s.brushType].contain(r[a], n[0], n[1])) return
            }
            o && i.setCursorStyle("crosshair")
        }
    }

    function D_(t) {
        var e = t.event;
        e.preventDefault && e.preventDefault()
    }

    function L_(t, e, n) {
        return t.childOfName("main").contain(e, n)
    }

    function k_(t, e, n, i) {
        var r, o = t._creatingCover, a = t._creatingPanel, l = t._brushOption;
        if (t._track.push(n.slice()), p_(t) || o) {
            if (a && !o) {
                "single" === l.brushMode && h_(t);
                var u = s(l);
                u.brushType = P_(u.brushType, a), u.panelId = a === _X ? null : a.panelId, o = t._creatingCover = n_(t, u), t._covers.push(o)
            }
            if (o) {
                var h = RX[P_(t._brushType, a)], c = o.__brushOption;
                c.range = h.getCreatingRange(T_(t, o, t._track)), i && (i_(t, o), h.updateCommon(t, o)), r_(t, o), r = {isEnd: i}
            }
        } else i && "single" === l.brushMode && l.removeOnClick && l_(t, e, n) && h_(t) && (r = {
            isEnd: i,
            removeOnClick: !0
        });
        return r
    }

    function P_(t, e) {
        return "auto" === t ? e.defaultBrushType : t
    }

    function O_(t, e) {
        if (t._dragging) {
            D_(e);
            var n = e.offsetX, i = e.offsetY, r = t.group.transformCoordToLocal(n, i), o = k_(t, e, r, !0);
            t._dragging = !1, t._track = [], t._creatingCover = null, o && c_(t, o)
        }
    }

    function R_(t, e, n) {
        var i = t._zr;
        return 0 > e || e > i.getWidth() || 0 > n || n > i.getHeight()
    }

    function z_(t) {
        return {
            createCover: function (e, n) {
                return f_({
                    toRectRange: function (e) {
                        var n = [e, [0, 100]];
                        return t && n.reverse(), n
                    }, fromRectRange: function (e) {
                        return e[t]
                    }
                }, e, n, [[["w"], ["e"]], [["n"], ["s"]]][t])
            }, getCreatingRange: function (e) {
                var n = d_(e), i = bX(n[0][t], n[1][t]), r = wX(n[0][t], n[1][t]);
                return [i, r]
            }, updateCoverShape: function (e, n, i, r) {
                var o, a = u_(e, n);
                if (a !== _X && a.getLinearBrushOtherExtent) o = a.getLinearBrushOtherExtent(t); else {
                    var s = e._zr;
                    o = [0, [s.getWidth(), s.getHeight()][1 - t]]
                }
                var l = [i, o];
                t && l.reverse(), g_(e, n, l, r)
            }, updateCommon: y_, contain: L_
        }
    }

    function E_(t) {
        return t = V_(t), function (e) {
            return bs(e, t)
        }
    }

    function N_(t, e) {
        return t = V_(t), function (n) {
            var i = null != e ? e : n, r = i ? t.width : t.height, o = i ? t.x : t.y;
            return [o, o + (r || 0)]
        }
    }

    function B_(t, e, n) {
        var i = V_(t);
        return function (t, r) {
            return i.contain(r[0], r[1]) && !_v(t, e, n)
        }
    }

    function V_(t) {
        return $D.create(t)
    }

    function F_(t, e, n) {
        return n && "axisAreaSelect" === n.type && e.findComponents({mainType: "parallelAxis", query: n})[0] === t
    }

    function G_(t) {
        var e = t.axis;
        return v(t.activeIntervals, function (t) {
            return {brushType: "lineX", panelId: "pl", range: [e.dataToCoord(t[0], !0), e.dataToCoord(t[1], !0)]}
        })
    }

    function H_(t, e) {
        return e.getComponent("parallel", t.get("parallelIndex"))
    }

    function W_(t) {
        t.registerAction(NX, function (t, e) {
            e.eachComponent({mainType: "parallelAxis", query: t}, function (e) {
                e.axis.model.setActiveIntervals(t.intervals)
            })
        }), t.registerAction("parallelAxisExpand", function (t, e) {
            e.eachComponent({mainType: "parallel", query: t}, function (e) {
                e.setAxisExpand(t)
            })
        })
    }

    function X_(t) {
        t.registerComponentView(aX), t.registerComponentModel(lX), t.registerCoordinateSystem("parallel", mX), t.registerPreprocessor(Yx), t.registerComponentModel(xX), t.registerComponentView(EX), Zg(t, "parallel", xX, BX), W_(t)
    }

    function Y_(t) {
        df(X_), t.registerChartView(eX), t.registerSeriesModel(nX), t.registerVisual(t.PRIORITY.VISUAL.BRUSH, rX)
    }

    function Z_(t, e) {
        var n = t.get("center"), i = e.getWidth(), r = e.getHeight(), o = Math.min(i, r), a = _i(n[0], e.getWidth()),
            s = _i(n[1], e.getHeight()), l = _i(t.get("radius"), o / 2);
        return {cx: a, cy: s, r: l}
    }

    function U_(t, e) {
        var n = null == t ? "" : t + "";
        return e && ("string" == typeof e ? n = e.replace("{value}", n) : "function" == typeof e && (n = e(t))), n
    }

    function j_(t) {
        t.registerChartView(HX), t.registerSeriesModel(WX)
    }

    function q_(t, e) {
        return kl(t.getBoxLayoutParams(), {width: e.getWidth(), height: e.getHeight()})
    }

    function K_(t, e) {
        for (var n = t.mapDimension("value"), i = t.mapArray(n, function (t) {
            return t
        }), r = [], o = "ascending" === e, a = 0, s = t.count(); s > a; a++) r[a] = a;
        return "function" == typeof e ? r.sort(e) : "none" !== e && r.sort(function (t, e) {
            return o ? i[t] - i[e] : i[e] - i[t]
        }), r
    }

    function $_(t) {
        var e = t.hostModel, n = e.get("orient");
        t.each(function (e) {
            var i, r, o, a, s = t.getItemModel(e), l = s.getModel("label"), u = l.get("position"),
                h = s.getModel("labelLine"), c = t.getItemLayout(e), p = c.points,
                d = "inner" === u || "inside" === u || "center" === u || "insideLeft" === u || "insideRight" === u;
            if (d) "insideLeft" === u ? (r = (p[0][0] + p[3][0]) / 2 + 5, o = (p[0][1] + p[3][1]) / 2, i = "left") : "insideRight" === u ? (r = (p[1][0] + p[2][0]) / 2 - 5, o = (p[1][1] + p[2][1]) / 2, i = "right") : (r = (p[0][0] + p[1][0] + p[2][0] + p[3][0]) / 4, o = (p[0][1] + p[1][1] + p[2][1] + p[3][1]) / 4, i = "center"), a = [[r, o], [r, o]]; else {
                var f = void 0, g = void 0, y = void 0, v = void 0, m = h.get("length");
                "left" === u ? (f = (p[3][0] + p[0][0]) / 2, g = (p[3][1] + p[0][1]) / 2, y = f - m, r = y - 5, i = "right") : "right" === u ? (f = (p[1][0] + p[2][0]) / 2, g = (p[1][1] + p[2][1]) / 2, y = f + m, r = y + 5, i = "left") : "top" === u ? (f = (p[3][0] + p[0][0]) / 2, g = (p[3][1] + p[0][1]) / 2, v = g - m, o = v - 5, i = "center") : "bottom" === u ? (f = (p[1][0] + p[2][0]) / 2, g = (p[1][1] + p[2][1]) / 2, v = g + m, o = v + 5, i = "center") : "rightTop" === u ? (f = "horizontal" === n ? p[3][0] : p[1][0], g = "horizontal" === n ? p[3][1] : p[1][1], "horizontal" === n ? (v = g - m, o = v - 5, i = "center") : (y = f + m, r = y + 5, i = "top")) : "rightBottom" === u ? (f = p[2][0], g = p[2][1], "horizontal" === n ? (v = g + m, o = v + 5, i = "center") : (y = f + m, r = y + 5, i = "bottom")) : "leftTop" === u ? (f = p[0][0], g = "horizontal" === n ? p[0][1] : p[1][1], "horizontal" === n ? (v = g - m, o = v - 5, i = "center") : (y = f - m, r = y - 5, i = "right")) : "leftBottom" === u ? (f = "horizontal" === n ? p[1][0] : p[3][0], g = "horizontal" === n ? p[1][1] : p[2][1], "horizontal" === n ? (v = g + m, o = v + 5, i = "center") : (y = f - m, r = y - 5, i = "right")) : (f = (p[1][0] + p[2][0]) / 2, g = (p[1][1] + p[2][1]) / 2, "horizontal" === n ? (v = g + m, o = v + 5, i = "center") : (y = f + m, r = y + 5, i = "left")), "horizontal" === n ? (y = f, r = y) : (v = g, o = v), a = [[f, g], [y, v]]
            }
            c.label = {linePoints: a, x: r, y: o, verticalAlign: "middle", textAlign: i, inside: d}
        })
    }

    function J_(t, e) {
        t.eachSeriesByType("funnel", function (t) {
            var n = t.getData(), i = n.mapDimension("value"), r = t.get("sort"), o = q_(t, e), a = t.get("orient"),
                s = o.width, l = o.height, u = K_(n, r), h = o.x, c = o.y,
                p = "horizontal" === a ? [_i(t.get("minSize"), l), _i(t.get("maxSize"), l)] : [_i(t.get("minSize"), s), _i(t.get("maxSize"), s)],
                d = n.getDataExtent(i), f = t.get("min"), g = t.get("max");
            null == f && (f = Math.min(d[0], 0)), null == g && (g = d[1]);
            var y = t.get("funnelAlign"), v = t.get("gap"), m = "horizontal" === a ? s : l,
                x = (m - v * (n.count() - 1)) / n.count(), _ = function (t, e) {
                    if ("horizontal" === a) {
                        var r = n.get(i, t) || 0, o = xi(r, [f, g], p, !0), u = void 0;
                        switch (y) {
                            case"top":
                                u = c;
                                break;
                            case"center":
                                u = c + (l - o) / 2;
                                break;
                            case"bottom":
                                u = c + (l - o)
                        }
                        return [[e, u], [e, u + o]]
                    }
                    var d, v = n.get(i, t) || 0, m = xi(v, [f, g], p, !0);
                    switch (y) {
                        case"left":
                            d = h;
                            break;
                        case"center":
                            d = h + (s - m) / 2;
                            break;
                        case"right":
                            d = h + s - m
                    }
                    return [[d, e], [d + m, e]]
                };
            "ascending" === r && (x = -x, v = -v, "horizontal" === a ? h += s : c += l, u = u.reverse());
            for (var b = 0; b < u.length; b++) {
                var w = u[b], S = u[b + 1], M = n.getItemModel(w);
                if ("horizontal" === a) {
                    var I = M.get(["itemStyle", "width"]);
                    null == I ? I = x : (I = _i(I, s), "ascending" === r && (I = -I));
                    var T = _(w, h), C = _(S, h + I);
                    h += I + v, n.setItemLayout(w, {points: T.concat(C.slice().reverse())})
                } else {
                    var A = M.get(["itemStyle", "height"]);
                    null == A ? A = x : (A = _i(A, l), "ascending" === r && (A = -A));
                    var T = _(w, c), C = _(S, c + A);
                    c += A + v, n.setItemLayout(w, {points: T.concat(C.slice().reverse())})
                }
            }
            $_(n)
        })
    }

    function Q_(t) {
        t.registerChartView(ZX), t.registerSeriesModel(UX), t.registerLayout(J_), t.registerProcessor(Bg("funnel"))
    }

    function tb(t, e, n) {
        var i = new Uk({shape: {x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20}});
        return hs(i, {shape: {width: t.width + 20}}, e, n), i
    }

    function eb(t, e) {
        t.eachSeriesByType("sankey", function (t) {
            var n = t.get("nodeWidth"), i = t.get("nodeGap"), r = nb(t, e);
            t.layoutInfo = r;
            var o = r.width, a = r.height, s = t.getGraph(), l = s.nodes, u = s.edges;
            rb(l);
            var h = x(l, function (t) {
                return 0 === t.getLayout().value
            }), c = 0 !== h.length ? 0 : t.get("layoutIterations"), p = t.get("orient"), d = t.get("nodeAlign");
            ib(l, u, n, i, o, a, c, p, d)
        })
    }

    function nb(t, e) {
        return kl(t.getBoxLayoutParams(), {width: e.getWidth(), height: e.getHeight()})
    }

    function ib(t, e, n, i, r, o, a, s, l) {
        ob(t, e, n, r, o, s, l), hb(t, e, o, r, i, a, s), Sb(t, s)
    }

    function rb(t) {
        y(t, function (t) {
            var e = bb(t.outEdges, _b), n = bb(t.inEdges, _b), i = t.getValue() || 0, r = Math.max(e, n, i);
            t.setLayout({value: r}, !0)
        })
    }

    function ob(t, e, n, i, r, o, a) {
        for (var s = [], l = [], u = [], h = [], c = 0, p = 0; p < e.length; p++) s[p] = 1;
        for (var p = 0; p < t.length; p++) l[p] = t[p].inEdges.length, 0 === l[p] && u.push(t[p]);
        for (var d = -1; u.length;) {
            for (var f = 0; f < u.length; f++) {
                var g = u[f], y = g.hostGraph.data.getRawDataItem(g.dataIndex), v = null != y.depth && y.depth >= 0;
                v && y.depth > d && (d = y.depth), g.setLayout({depth: v ? y.depth : c}, !0), "vertical" === o ? g.setLayout({dy: n}, !0) : g.setLayout({dx: n}, !0);
                for (var m = 0; m < g.outEdges.length; m++) {
                    var x = g.outEdges[m], _ = e.indexOf(x);
                    s[_] = 0;
                    var b = x.node2, w = t.indexOf(b);
                    0 === --l[w] && h.indexOf(b) < 0 && h.push(b)
                }
            }
            ++c, u = h, h = []
        }
        for (var p = 0; p < s.length; p++) if (1 === s[p]) throw new Error("Sankey is a DAG, the original data has cycle!");
        var S = d > c - 1 ? d : c - 1;
        a && "left" !== a && sb(t, a, o, S);
        var M = "vertical" === o ? (r - n) / S : (i - n) / S;
        ub(t, M, o)
    }

    function ab(t) {
        var e = t.hostGraph.data.getRawDataItem(t.dataIndex);
        return null != e.depth && e.depth >= 0
    }

    function sb(t, e, n, i) {
        if ("right" === e) {
            for (var r = [], o = t, a = 0; o.length;) {
                for (var s = 0; s < o.length; s++) {
                    var l = o[s];
                    l.setLayout({skNodeHeight: a}, !0);
                    for (var u = 0; u < l.inEdges.length; u++) {
                        var h = l.inEdges[u];
                        r.indexOf(h.node1) < 0 && r.push(h.node1)
                    }
                }
                o = r, r = [], ++a
            }
            y(t, function (t) {
                ab(t) || t.setLayout({depth: Math.max(0, i - t.getLayout().skNodeHeight)}, !0)
            })
        } else "justify" === e && lb(t, i)
    }

    function lb(t, e) {
        y(t, function (t) {
            ab(t) || t.outEdges.length || t.setLayout({depth: e}, !0)
        })
    }

    function ub(t, e, n) {
        y(t, function (t) {
            var i = t.getLayout().depth * e;
            "vertical" === n ? t.setLayout({y: i}, !0) : t.setLayout({x: i}, !0)
        })
    }

    function hb(t, e, n, i, r, o, a) {
        var s = cb(t, a);
        pb(s, e, n, i, r, a), db(s, r, n, i, a);
        for (var l = 1; o > 0; o--) l *= .99, fb(s, l, a), db(s, r, n, i, a), wb(s, l, a), db(s, r, n, i, a)
    }

    function cb(t, e) {
        var n = [], i = "vertical" === e ? "y" : "x", r = yr(t, function (t) {
            return t.getLayout()[i]
        });
        return r.keys.sort(function (t, e) {
            return t - e
        }), y(r.keys, function (t) {
            n.push(r.buckets.get(t))
        }), n
    }

    function pb(t, e, n, i, r, o) {
        var a = 1 / 0;
        y(t, function (t) {
            var e = t.length, s = 0;
            y(t, function (t) {
                s += t.getLayout().value
            });
            var l = "vertical" === o ? (i - (e - 1) * r) / s : (n - (e - 1) * r) / s;
            a > l && (a = l)
        }), y(t, function (t) {
            y(t, function (t, e) {
                var n = t.getLayout().value * a;
                "vertical" === o ? (t.setLayout({x: e}, !0), t.setLayout({dx: n}, !0)) : (t.setLayout({y: e}, !0), t.setLayout({dy: n}, !0))
            })
        }), y(e, function (t) {
            var e = +t.getValue() * a;
            t.setLayout({dy: e}, !0)
        })
    }

    function db(t, e, n, i, r) {
        var o = "vertical" === r ? "x" : "y";
        y(t, function (t) {
            t.sort(function (t, e) {
                return t.getLayout()[o] - e.getLayout()[o]
            });
            for (var a, s, l, u = 0, h = t.length, c = "vertical" === r ? "dx" : "dy", p = 0; h > p; p++) s = t[p], l = u - s.getLayout()[o], l > 0 && (a = s.getLayout()[o] + l, "vertical" === r ? s.setLayout({x: a}, !0) : s.setLayout({y: a}, !0)), u = s.getLayout()[o] + s.getLayout()[c] + e;
            var d = "vertical" === r ? i : n;
            if (l = u - e - d, l > 0) {
                a = s.getLayout()[o] - l, "vertical" === r ? s.setLayout({x: a}, !0) : s.setLayout({y: a}, !0), u = a;
                for (var p = h - 2; p >= 0; --p) s = t[p], l = s.getLayout()[o] + s.getLayout()[c] + e - u, l > 0 && (a = s.getLayout()[o] - l, "vertical" === r ? s.setLayout({x: a}, !0) : s.setLayout({y: a}, !0)), u = s.getLayout()[o]
            }
        })
    }

    function fb(t, e, n) {
        y(t.slice().reverse(), function (t) {
            y(t, function (t) {
                if (t.outEdges.length) {
                    var i = bb(t.outEdges, gb, n) / bb(t.outEdges, _b);
                    if (isNaN(i)) {
                        var r = t.outEdges.length;
                        i = r ? bb(t.outEdges, yb, n) / r : 0
                    }
                    if ("vertical" === n) {
                        var o = t.getLayout().x + (i - xb(t, n)) * e;
                        t.setLayout({x: o}, !0)
                    } else {
                        var a = t.getLayout().y + (i - xb(t, n)) * e;
                        t.setLayout({y: a}, !0)
                    }
                }
            })
        })
    }

    function gb(t, e) {
        return xb(t.node2, e) * t.getValue()
    }

    function yb(t, e) {
        return xb(t.node2, e)
    }

    function vb(t, e) {
        return xb(t.node1, e) * t.getValue()
    }

    function mb(t, e) {
        return xb(t.node1, e)
    }

    function xb(t, e) {
        return "vertical" === e ? t.getLayout().x + t.getLayout().dx / 2 : t.getLayout().y + t.getLayout().dy / 2
    }

    function _b(t) {
        return t.getValue()
    }

    function bb(t, e, n) {
        for (var i = 0, r = t.length, o = -1; ++o < r;) {
            var a = +e(t[o], n);
            isNaN(a) || (i += a)
        }
        return i
    }

    function wb(t, e, n) {
        y(t, function (t) {
            y(t, function (t) {
                if (t.inEdges.length) {
                    var i = bb(t.inEdges, vb, n) / bb(t.inEdges, _b);
                    if (isNaN(i)) {
                        var r = t.inEdges.length;
                        i = r ? bb(t.inEdges, mb, n) / r : 0
                    }
                    if ("vertical" === n) {
                        var o = t.getLayout().x + (i - xb(t, n)) * e;
                        t.setLayout({x: o}, !0)
                    } else {
                        var a = t.getLayout().y + (i - xb(t, n)) * e;
                        t.setLayout({y: a}, !0)
                    }
                }
            })
        })
    }

    function Sb(t, e) {
        var n = "vertical" === e ? "x" : "y";
        y(t, function (t) {
            t.outEdges.sort(function (t, e) {
                return t.node2.getLayout()[n] - e.node2.getLayout()[n]
            }), t.inEdges.sort(function (t, e) {
                return t.node1.getLayout()[n] - e.node1.getLayout()[n]
            })
        }), y(t, function (t) {
            var e = 0, n = 0;
            y(t.outEdges, function (t) {
                t.setLayout({sy: e}, !0), e += t.getLayout().dy
            }), y(t.inEdges, function (t) {
                t.setLayout({ty: n}, !0), n += t.getLayout().dy
            })
        })
    }

    function Mb(t) {
        t.eachSeriesByType("sankey", function (t) {
            var e = t.getGraph(), n = e.nodes;
            if (n.length) {
                var i = 1 / 0, r = -1 / 0;
                y(n, function (t) {
                    var e = t.getLayout().value;
                    i > e && (i = e), e > r && (r = e)
                }), y(n, function (e) {
                    var n = new EH({
                        type: "color",
                        mappingMethod: "linear",
                        dataExtent: [i, r],
                        visual: t.get("color")
                    }), o = n.mapValueToVisual(e.getLayout().value), a = e.getModel().get(["itemStyle", "color"]);
                    null != a ? (e.setVisual("color", a), e.setVisual("style", {fill: a})) : (e.setVisual("color", o), e.setVisual("style", {fill: o}))
                })
            }
        })
    }

    function Ib(t) {
        t.registerChartView(KX), t.registerSeriesModel($X), t.registerLayout(eb), t.registerVisual(Mb), t.registerAction({
            type: "dragNode",
            event: "dragnode",
            update: "update"
        }, function (t, e) {
            e.eachComponent({mainType: "series", subType: "sankey", query: t}, function (e) {
                e.setNodePosition(t.dataIndex, [t.localX, t.localY])
            })
        })
    }

    function Tb(t, e, n) {
        var i = new Uk({shape: {x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20}});
        return hs(i, {shape: {x: t.x - 50, width: t.width + 100, height: t.height + 20}}, e, n), i
    }

    function Cb(t) {
        t.eachSeriesByType("themeRiver", function (t) {
            var e = t.getData(), n = t.coordinateSystem, i = {}, r = n.getRect();
            i.rect = r;
            var o = t.get("boundaryGap"), a = n.getAxis();
            if (i.boundaryGap = o, "horizontal" === a.orient) {
                o[0] = _i(o[0], r.height), o[1] = _i(o[1], r.height);
                var s = r.height - o[0] - o[1];
                Ab(e, t, s)
            } else {
                o[0] = _i(o[0], r.width), o[1] = _i(o[1], r.width);
                var l = r.width - o[0] - o[1];
                Ab(e, t, l)
            }
            e.setLayout("layoutInfo", i)
        })
    }

    function Ab(t, e, n) {
        if (t.count()) for (var i, r = e.coordinateSystem, o = e.getLayerSeries(), a = t.mapDimension("single"), s = t.mapDimension("value"), l = v(o, function (e) {
            return v(e.indices, function (e) {
                var n = r.dataToPoint(t.get(a, e));
                return n[1] = t.get(s, e), n
            })
        }), u = Db(l), h = u.y0, c = n / u.max, p = o.length, d = o[0].indices.length, f = 0; d > f; ++f) {
            i = h[f] * c, t.setItemLayout(o[0].indices[f], {layerIndex: 0, x: l[0][f][0], y0: i, y: l[0][f][1] * c});
            for (var g = 1; p > g; ++g) i += l[g - 1][f][1] * c, t.setItemLayout(o[g].indices[f], {
                layerIndex: g,
                x: l[g][f][0],
                y0: i,
                y: l[g][f][1] * c
            })
        }
    }

    function Db(t) {
        for (var e = t.length, n = t[0].length, i = [], r = [], o = 0, a = 0; n > a; ++a) {
            for (var s = 0, l = 0; e > l; ++l) s += t[l][a][1];
            s > o && (o = s), i.push(s)
        }
        for (var u = 0; n > u; ++u) r[u] = (o - i[u]) / 2;
        o = 0;
        for (var h = 0; n > h; ++h) {
            var c = i[h] + r[h];
            c > o && (o = c)
        }
        return {y0: r, max: o}
    }

    function Lb(t) {
        t.registerChartView(JX), t.registerSeriesModel(tY), t.registerLayout(Cb), t.registerProcessor(Bg("themeRiver"))
    }

    function kb(t, e, n, i) {
        var r = t.getItemLayout(e), o = n.get("symbolRepeat"), a = n.get("symbolClip"),
            s = n.get("symbolPosition") || "start", l = n.get("symbolRotate"), u = (l || 0) * Math.PI / 180 || 0,
            h = n.get("symbolPatternSize") || 2, c = n.isAnimationEnabled(), p = {
                dataIndex: e,
                layout: r,
                itemModel: n,
                symbolType: t.getItemVisual(e, "symbol") || "circle",
                style: t.getItemVisual(e, "style"),
                symbolClip: a,
                symbolRepeat: o,
                symbolRepeatDirection: n.get("symbolRepeatDirection"),
                symbolPatternSize: h,
                rotation: u,
                animationModel: c ? n : null,
                hoverScale: c && n.get(["emphasis", "scale"]),
                z2: n.getShallow("z", !0) || 0
            };
        Pb(n, o, r, i, p), Rb(t, e, r, o, a, p.boundingLength, p.pxSign, h, i, p), zb(n, p.symbolScale, u, i, p);
        var d = p.symbolSize, f = n.get("symbolOffset");
        return M(f) && (f = [_i(f[0], d[0]), _i(f[1], d[1])]), Eb(n, d, r, o, a, f, s, p.valueLineWidth, p.boundingLength, p.repeatCutLength, i, p), p
    }

    function Pb(t, e, n, i, r) {
        var o, a = i.valueDim, s = t.get("symbolBoundingData"), l = i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()),
            u = l.toGlobalCoord(l.dataToCoord(0)), h = 1 - +(n[a.wh] <= 0);
        if (M(s)) {
            var c = [Ob(l, s[0]) - u, Ob(l, s[1]) - u];
            c[1] < c[0] && c.reverse(), o = c[h]
        } else o = null != s ? Ob(l, s) - u : e ? i.coordSysExtent[a.index][h] - u : n[a.wh];
        r.boundingLength = o, e && (r.repeatCutLength = n[a.wh]), r.pxSign = o > 0 ? 1 : 0 > o ? -1 : 0
    }

    function Ob(t, e) {
        return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))
    }

    function Rb(t, e, n, i, r, o, a, s, l, u) {
        var h, c = l.valueDim, p = l.categoryDim, d = Math.abs(n[p.wh]), f = t.getItemVisual(e, "symbolSize");
        h = M(f) ? f.slice() : null == f ? ["100%", "100%"] : [f, f], h[p.index] = _i(h[p.index], d), h[c.index] = _i(h[c.index], i ? d : Math.abs(o)), u.symbolSize = h;
        var g = u.symbolScale = [h[0] / s, h[1] / s];
        g[c.index] *= (l.isHorizontal ? -1 : 1) * a
    }

    function zb(t, e, n, i, r) {
        var o = t.get(eY) || 0;
        o && (iY.attr({
            scaleX: e[0],
            scaleY: e[1],
            rotation: n
        }), iY.updateTransform(), o /= iY.getLineScale(), o *= e[i.valueDim.index]), r.valueLineWidth = o
    }

    function Eb(t, e, n, i, r, o, a, s, l, u, c, p) {
        var d = c.categoryDim, f = c.valueDim, g = p.pxSign, y = Math.max(e[f.index] + s, 0), v = y;
        if (i) {
            var m = Math.abs(l), x = N(t.get("symbolMargin"), "15%") + "", _ = !1;
            x.lastIndexOf("!") === x.length - 1 && (_ = !0, x = x.slice(0, x.length - 1));
            var b = _i(x, e[f.index]), w = Math.max(y + 2 * b, 0), S = _ ? 0 : 2 * b, M = Ni(i),
                I = M ? i : Jb((m + S) / w), T = m - I * y;
            b = T / 2 / (_ ? I : I - 1), w = y + 2 * b, S = _ ? 0 : 2 * b, M || "fixed" === i || (I = u ? Jb((Math.abs(u) + S) / w) : 0), v = I * w - S, p.repeatTimes = I, p.symbolMargin = b
        }
        var C = g * (v / 2), A = p.pathPosition = [];
        A[d.index] = n[d.wh] / 2, A[f.index] = "start" === a ? C : "end" === a ? l - C : l / 2, o && (A[0] += o[0], A[1] += o[1]);
        var D = p.bundlePosition = [];
        D[d.index] = n[d.xy], D[f.index] = n[f.xy];
        var L = p.barRectShape = h({}, n);
        L[f.wh] = g * Math.max(Math.abs(n[f.wh]), Math.abs(A[f.index] + C)), L[d.wh] = n[d.wh];
        var k = p.clipShape = {};
        k[d.xy] = -n[d.xy], k[d.wh] = c.ecSize[d.wh], k[f.xy] = 0, k[f.wh] = n[f.wh]
    }

    function Nb(t) {
        var e = t.symbolPatternSize, n = Sc(t.symbolType, -e / 2, -e / 2, e, e);
        return n.attr({culling: !0}), "image" !== n.type && n.setStyle({strokeNoScale: !0}), n
    }

    function Bb(t, e, n, i) {
        function r(t) {
            var e = l.slice(), i = n.pxSign, r = t;
            return ("start" === n.symbolRepeatDirection ? i > 0 : 0 > i) && (r = h - 1 - t), e[u.index] = p * (r - h / 2 + .5) + l[u.index], {
                x: e[0],
                y: e[1],
                scaleX: n.symbolScale[0],
                scaleY: n.symbolScale[1],
                rotation: n.rotation
            }
        }

        var o = t.__pictorialBundle, a = n.symbolSize, s = n.valueLineWidth, l = n.pathPosition, u = e.valueDim,
            h = n.repeatTimes || 0, c = 0, p = a[e.valueDim.index] + s + 2 * n.symbolMargin;
        for (qb(t, function (t) {
            t.__pictorialAnimationIndex = c, t.__pictorialRepeatTimes = h, h > c ? Kb(t, null, r(c), n, i) : Kb(t, null, {
                scaleX: 0,
                scaleY: 0
            }, n, i, function () {
                o.remove(t)
            }), c++
        }); h > c; c++) {
            var d = Nb(n);
            d.__pictorialAnimationIndex = c, d.__pictorialRepeatTimes = h, o.add(d);
            var f = r(c);
            Kb(d, {x: f.x, y: f.y, scaleX: 0, scaleY: 0}, {
                scaleX: f.scaleX,
                scaleY: f.scaleY,
                rotation: f.rotation
            }, n, i)
        }
    }

    function Vb(t, e, n, i) {
        var r = t.__pictorialBundle, o = t.__pictorialMainPath;
        o ? Kb(o, null, {
            x: n.pathPosition[0],
            y: n.pathPosition[1],
            scaleX: n.symbolScale[0],
            scaleY: n.symbolScale[1],
            rotation: n.rotation
        }, n, i) : (o = t.__pictorialMainPath = Nb(n), r.add(o), Kb(o, {
            x: n.pathPosition[0],
            y: n.pathPosition[1],
            scaleX: 0,
            scaleY: 0,
            rotation: n.rotation
        }, {scaleX: n.symbolScale[0], scaleY: n.symbolScale[1]}, n, i))
    }

    function Fb(t, e, n) {
        var i = h({}, e.barRectShape), r = t.__pictorialBarRect;
        r ? Kb(r, null, {shape: i}, e, n) : (r = t.__pictorialBarRect = new Uk({
            z2: 2,
            shape: i,
            silent: !0,
            style: {stroke: "transparent", fill: "transparent", lineWidth: 0}
        }), t.add(r))
    }

    function Gb(t, e, n, i) {
        if (n.symbolClip) {
            var r = t.__pictorialClipPath, o = h({}, n.clipShape), a = e.valueDim, s = n.animationModel,
                l = n.dataIndex;
            if (r) us(r, {shape: o}, s, l); else {
                o[a.wh] = 0, r = new Uk({shape: o}), t.__pictorialBundle.setClipPath(r), t.__pictorialClipPath = r;
                var u = {};
                u[a.wh] = n.clipShape[a.wh], MO[i ? "updateProps" : "initProps"](r, {shape: u}, s, l)
            }
        }
    }

    function Hb(t, e) {
        var n = t.getItemModel(e);
        return n.getAnimationDelayParams = Wb, n.isAnimationEnabled = Xb, n
    }

    function Wb(t) {
        return {index: t.__pictorialAnimationIndex, count: t.__pictorialRepeatTimes}
    }

    function Xb() {
        return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation")
    }

    function Yb(t, e, n, i) {
        var r = new sL, o = new sL;
        return r.add(o), r.__pictorialBundle = o, o.x = n.bundlePosition[0], o.y = n.bundlePosition[1], n.symbolRepeat ? Bb(r, e, n) : Vb(r, e, n), Fb(r, n, i), Gb(r, e, n, i), r.__pictorialShapeStr = jb(t, n), r.__pictorialSymbolMeta = n, r
    }

    function Zb(t, e, n) {
        var i = n.animationModel, r = n.dataIndex, o = t.__pictorialBundle;
        us(o, {
            x: n.bundlePosition[0],
            y: n.bundlePosition[1]
        }, i, r), n.symbolRepeat ? Bb(t, e, n, !0) : Vb(t, e, n, !0), Fb(t, n, !0), Gb(t, e, n, !0)
    }

    function Ub(t, e, n, i) {
        var r = i.__pictorialBarRect;
        r && r.removeTextContent();
        var o = [];
        qb(i, function (t) {
            o.push(t)
        }), i.__pictorialMainPath && o.push(i.__pictorialMainPath), i.__pictorialClipPath && (n = null), y(o, function (t) {
            cs(t, {scaleX: 0, scaleY: 0}, n, e, function () {
                i.parent && i.parent.remove(i)
            })
        }), t.setItemGraphicEl(e, null)
    }

    function jb(t, e) {
        return [t.getItemVisual(e.dataIndex, "symbol") || "none", !!e.symbolRepeat, !!e.symbolClip].join(":")
    }

    function qb(t, e, n) {
        y(t.__pictorialBundle.children(), function (i) {
            i !== t.__pictorialBarRect && e.call(n, i)
        })
    }

    function Kb(t, e, n, i, r, o) {
        e && t.attr(e), i.symbolClip && !r ? n && t.attr(n) : n && MO[r ? "updateProps" : "initProps"](t, n, i.animationModel, i.dataIndex, o)
    }

    function $b(t, e, n) {
        var i = n.dataIndex, r = n.itemModel, o = r.getModel("emphasis"), a = o.getModel("itemStyle").getItemStyle(),
            s = r.getModel(["blur", "itemStyle"]).getItemStyle(),
            l = r.getModel(["select", "itemStyle"]).getItemStyle(), u = r.getShallow("cursor"), c = o.get("focus"),
            p = o.get("blurScope"), d = o.get("scale");
        qb(t, function (t) {
            if (t instanceof Wk) {
                var e = t.style;
                t.useStyle(h({image: e.image, x: e.x, y: e.y, width: e.width, height: e.height}, n.style))
            } else t.useStyle(n.style);
            var i = t.ensureState("emphasis");
            i.style = a, d && (i.scaleX = 1.1 * t.scaleX, i.scaleY = 1.1 * t.scaleY), t.ensureState("blur").style = s, t.ensureState("select").style = l, u && (t.cursor = u), t.z2 = n.z2
        });
        var f = e.valueDim.posDesc[+(n.boundingLength > 0)], g = t.__pictorialBarRect;
        ks(g, Ps(r), {
            labelFetcher: e.seriesModel,
            labelDataIndex: i,
            defaultText: Zf(e.seriesModel.getData(), i),
            inheritColor: n.style.fill,
            defaultOpacity: n.style.opacity,
            defaultOutsidePosition: f
        }), Sa(t, c, p)
    }

    function Jb(t) {
        var e = Math.round(t);
        return Math.abs(t - e) < 1e-4 ? e : Math.ceil(t)
    }

    function Qb(t) {
        t.registerChartView(rY), t.registerSeriesModel(oY), t.registerLayout(S(Rd, "pictorialBar"))
    }

    function tw(t, e) {
        return e = e || [0, 0], v(["x", "y"], function (n, i) {
            var r = this.getAxis(n), o = e[i], a = t[i] / 2;
            return "category" === r.type ? r.getBandWidth() : Math.abs(r.dataToCoord(o - a) - r.dataToCoord(o + a))
        }, this)
    }

    function ew(t) {
        var e = t.master.getRect();
        return {
            coordSys: {type: "cartesian2d", x: e.x, y: e.y, width: e.width, height: e.height},
            api: {
                coord: function (e) {
                    return t.dataToPoint(e)
                }, size: xA(tw, t)
            }
        }
    }

    function nw(t, e) {
        return e = e || [0, 0], v([0, 1], function (n) {
            var i = e[n], r = t[n] / 2, o = [], a = [];
            return o[n] = i - r, a[n] = i + r, o[1 - n] = a[1 - n] = e[1 - n], Math.abs(this.dataToPoint(o)[n] - this.dataToPoint(a)[n])
        }, this)
    }

    function iw(t) {
        var e = t.getBoundingRect();
        return {
            coordSys: {type: "geo", x: e.x, y: e.y, width: e.width, height: e.height, zoom: t.getZoom()},
            api: {
                coord: function (e) {
                    return t.dataToPoint(e)
                }, size: xA(nw, t)
            }
        }
    }

    function rw(t, e) {
        var n = this.getAxis(), i = e instanceof Array ? e[0] : e, r = (t instanceof Array ? t[0] : t) / 2;
        return "category" === n.type ? n.getBandWidth() : Math.abs(n.dataToCoord(i - r) - n.dataToCoord(i + r))
    }

    function ow(t) {
        var e = t.getRect();
        return {
            coordSys: {type: "singleAxis", x: e.x, y: e.y, width: e.width, height: e.height},
            api: {
                coord: function (e) {
                    return t.dataToPoint(e)
                }, size: xA(rw, t)
            }
        }
    }

    function aw(t, e) {
        return e = e || [0, 0], v(["Radius", "Angle"], function (n, i) {
            var r = "get" + n + "Axis", o = this[r](), a = e[i], s = t[i] / 2,
                l = "category" === o.type ? o.getBandWidth() : Math.abs(o.dataToCoord(a - s) - o.dataToCoord(a + s));
            return "Angle" === n && (l = l * Math.PI / 180), l
        }, this)
    }

    function sw(t) {
        var e = t.getRadiusAxis(), n = t.getAngleAxis(), i = e.getExtent();
        return i[0] > i[1] && i.reverse(), {
            coordSys: {type: "polar", cx: t.cx, cy: t.cy, r: i[1], r0: i[0]},
            api: {
                coord: function (i) {
                    var r = e.dataToRadius(i[0]), o = n.dataToAngle(i[1]), a = t.coordToPoint([r, o]);
                    return a.push(r, o * Math.PI / 180), a
                }, size: xA(aw, t)
            }
        }
    }

    function lw(t) {
        var e = t.getRect(), n = t.getRangeInfo();
        return {
            coordSys: {
                type: "calendar",
                x: e.x,
                y: e.y,
                width: e.width,
                height: e.height,
                cellWidth: t.getCellWidth(),
                cellHeight: t.getCellHeight(),
                rangeInfo: {start: n.start, end: n.end, weeks: n.weeks, dayCount: n.allDay}
            }, api: {
                coord: function (e, n) {
                    return t.dataToPoint(e, n)
                }
            }
        }
    }

    function uw(t, e, n, i) {
        return t && (t.legacy || t.legacy !== !1 && !n && !i && "tspan" !== e && ("text" === e || q(t, "text")))
    }

    function hw(t, e, n) {
        var i, r, o, a = t;
        if ("text" === e) o = a; else {
            o = {}, q(a, "text") && (o.text = a.text), q(a, "rich") && (o.rich = a.rich), q(a, "textFill") && (o.fill = a.textFill), q(a, "textStroke") && (o.stroke = a.textStroke), r = {
                type: "text",
                style: o,
                silent: !0
            }, i = {};
            var s = q(a, "textPosition");
            n ? i.position = s ? a.textPosition : "inside" : s && (i.position = a.textPosition), q(a, "textPosition") && (i.position = a.textPosition), q(a, "textOffset") && (i.offset = a.textOffset), q(a, "textRotation") && (i.rotation = a.textRotation), q(a, "textDistance") && (i.distance = a.textDistance)
        }
        return cw(o, t), y(o.rich, function (t) {
            cw(t, t)
        }), {textConfig: i, textContent: r}
    }

    function cw(t, e) {
        e && (e.font = e.textFont || e.font, q(e, "textStrokeWidth") && (t.lineWidth = e.textStrokeWidth), q(e, "textAlign") && (t.align = e.textAlign), q(e, "textVerticalAlign") && (t.verticalAlign = e.textVerticalAlign), q(e, "textLineHeight") && (t.lineHeight = e.textLineHeight), q(e, "textWidth") && (t.width = e.textWidth), q(e, "textHeight") && (t.height = e.textHeight), q(e, "textBackgroundColor") && (t.backgroundColor = e.textBackgroundColor), q(e, "textPadding") && (t.padding = e.textPadding), q(e, "textBorderColor") && (t.borderColor = e.textBorderColor), q(e, "textBorderWidth") && (t.borderWidth = e.textBorderWidth), q(e, "textBorderRadius") && (t.borderRadius = e.textBorderRadius), q(e, "textBoxShadowColor") && (t.shadowColor = e.textBoxShadowColor), q(e, "textBoxShadowBlur") && (t.shadowBlur = e.textBoxShadowBlur), q(e, "textBoxShadowOffsetX") && (t.shadowOffsetX = e.textBoxShadowOffsetX), q(e, "textBoxShadowOffsetY") && (t.shadowOffsetY = e.textBoxShadowOffsetY))
    }

    function pw(t, e, n) {
        var i = t;
        i.textPosition = i.textPosition || n.position || "inside", null != n.offset && (i.textOffset = n.offset), null != n.rotation && (i.textRotation = n.rotation), null != n.distance && (i.textDistance = n.distance);
        var r = i.textPosition.indexOf("inside") >= 0, o = t.fill || "#000";
        dw(i, e);
        var a = null == i.textFill;
        return r ? a && (i.textFill = n.insideFill || "#fff", !i.textStroke && n.insideStroke && (i.textStroke = n.insideStroke), !i.textStroke && (i.textStroke = o), null == i.textStrokeWidth && (i.textStrokeWidth = 2)) : (a && (i.textFill = t.fill || n.outsideFill || "#000"), !i.textStroke && n.outsideStroke && (i.textStroke = n.outsideStroke)), i.text = e.text, i.rich = e.rich, y(e.rich, function (t) {
            dw(t, t)
        }), i
    }

    function dw(t, e) {
        e && (q(e, "fill") && (t.textFill = e.fill), q(e, "stroke") && (t.textStroke = e.fill), q(e, "lineWidth") && (t.textStrokeWidth = e.lineWidth), q(e, "font") && (t.font = e.font), q(e, "fontStyle") && (t.fontStyle = e.fontStyle), q(e, "fontWeight") && (t.fontWeight = e.fontWeight), q(e, "fontSize") && (t.fontSize = e.fontSize), q(e, "fontFamily") && (t.fontFamily = e.fontFamily), q(e, "align") && (t.textAlign = e.align), q(e, "verticalAlign") && (t.textVerticalAlign = e.verticalAlign), q(e, "lineHeight") && (t.textLineHeight = e.lineHeight), q(e, "width") && (t.textWidth = e.width), q(e, "height") && (t.textHeight = e.height), q(e, "backgroundColor") && (t.textBackgroundColor = e.backgroundColor), q(e, "padding") && (t.textPadding = e.padding), q(e, "borderColor") && (t.textBorderColor = e.borderColor), q(e, "borderWidth") && (t.textBorderWidth = e.borderWidth), q(e, "borderRadius") && (t.textBorderRadius = e.borderRadius), q(e, "shadowColor") && (t.textBoxShadowColor = e.shadowColor), q(e, "shadowBlur") && (t.textBoxShadowBlur = e.shadowBlur), q(e, "shadowOffsetX") && (t.textBoxShadowOffsetX = e.shadowOffsetX), q(e, "shadowOffsetY") && (t.textBoxShadowOffsetY = e.shadowOffsetY), q(e, "textShadowColor") && (t.textShadowColor = e.textShadowColor), q(e, "textShadowBlur") && (t.textShadowBlur = e.textShadowBlur), q(e, "textShadowOffsetX") && (t.textShadowOffsetX = e.textShadowOffsetX), q(e, "textShadowOffsetY") && (t.textShadowOffsetY = e.textShadowOffsetY))
    }

    function fw(t, e) {
        return Math.abs(t - e) < 1e-5
    }

    function gw(t) {
        function e(t, e) {
            r && r.length > 2 && c.push(r), r = [t, e]
        }

        function n(t, e, n, i) {
            fw(t, n) && fw(e, i) || r.push(t, e, n, i, n, i)
        }

        function i(t, e, n, i, o, a) {
            var s = Math.abs(e - t), l = 4 * Math.tan(s / 4) / 3, u = t > e ? -1 : 1, h = Math.cos(t), c = Math.sin(t),
                p = Math.cos(e), d = Math.sin(e), f = h * o + n, g = c * a + i, y = p * o + n, v = d * a + i,
                m = o * l * u, x = a * l * u;
            r.push(f - m * c, g + x * h, y + m * d, v - x * p, y, v)
        }

        for (var r, o, a, s, l, u = t.data, h = t.len(), c = [], p = 0, d = 0, f = 0, g = 0, y = 0; h > y;) {
            var v = u[y++], m = 1 === y;
            switch (m && (p = u[y], d = u[y + 1], f = p, g = d, (v === aY.L || v === aY.C || v === aY.Q) && (r = [f, g])), v) {
                case aY.M:
                    p = f = u[y++], d = g = u[y++], e(f, g);
                    break;
                case aY.L:
                    o = u[y++], a = u[y++], n(p, d, o, a), p = o, d = a;
                    break;
                case aY.C:
                    r.push(u[y++], u[y++], u[y++], u[y++], p = u[y++], d = u[y++]);
                    break;
                case aY.Q:
                    o = u[y++], a = u[y++], s = u[y++], l = u[y++], r.push(p + 2 / 3 * (o - p), d + 2 / 3 * (a - d), s + 2 / 3 * (o - s), l + 2 / 3 * (a - l), s, l), p = s, d = l;
                    break;
                case aY.A:
                    var x = u[y++], _ = u[y++], b = u[y++], w = u[y++], S = u[y++], M = u[y++] + S;
                    y += 1;
                    var I = !u[y++];
                    o = Math.cos(S) * b + x, a = Math.sin(S) * w + _, m ? (f = o, g = a, e(f, g)) : n(p, d, o, a), p = Math.cos(M) * b + x, d = Math.sin(M) * w + _;
                    for (var T = (I ? -1 : 1) * Math.PI / 2, C = S; I ? C > M : M > C; C += T) {
                        var A = I ? Math.max(C + T, M) : Math.min(C + T, M);
                        i(C, A, x, _, b, w)
                    }
                    break;
                case aY.R:
                    f = p = u[y++], g = d = u[y++], o = f + u[y++], a = g + u[y++], e(o, g), n(o, g, o, a), n(o, a, f, a), n(f, a, f, g), n(f, g, o, g);
                    break;
                case aY.Z:
                    r && n(p, d, f, g), p = f, d = g
            }
        }
        return r && r.length > 2 && c.push(r), c
    }

    function yw(t, e) {
        var n = t.length, i = e.length;
        if (n === i) return [t, e];
        for (var r = i > n ? t : e, o = Math.min(n, i), a = Math.abs(i - n) / 6, s = (o - 2) / 6, l = Math.ceil(a / s) + 1, u = [r[0], r[1]], h = a, c = [], p = [], d = 2; o > d;) {
            var f = r[d - 2], g = r[d - 1], y = r[d++], v = r[d++], m = r[d++], x = r[d++], _ = r[d++], b = r[d++];
            if (0 >= h) u.push(y, v, m, x, _, b); else {
                for (var w = Math.min(h, l - 1) + 1, S = 1; w >= S; S++) {
                    var M = S / w;
                    Kr(f, y, m, _, M, c), Kr(g, v, x, b, M, p), f = c[3], g = p[3], u.push(c[1], p[1], c[2], p[2], f, g), y = c[5], v = p[5], m = c[6], x = p[6]
                }
                h -= w - 1
            }
        }
        return r === t ? [u, e] : [t, u]
    }

    function vw(t, e) {
        for (var n = t.length, i = t[n - 2], r = t[n - 1], o = [], a = 0; a < e.length;) o[a++] = i, o[a++] = r;
        return o
    }

    function mw(t, e) {
        for (var n, i, r, o = [], a = [], s = 0; s < Math.max(t.length, e.length); s++) {
            var l = t[s], u = e[s], h = void 0, c = void 0;
            l ? u ? (n = yw(l, u), h = n[0], c = n[1], i = h, r = c) : (c = vw(r || l, l), h = l) : (h = vw(i || u, u), c = u), o.push(h), a.push(c)
        }
        return [o, a]
    }

    function xw(t) {
        for (var e = 0, n = 0, i = 0, r = t.length, o = 0, a = r - 2; r > o; a = o, o += 2) {
            var s = t[a], l = t[a + 1], u = t[o], h = t[o + 1], c = s * h - u * l;
            e += c, n += (s + u) * c, i += (l + h) * c
        }
        return 0 === e ? [t[0] || 0, t[1] || 0] : [n / e / 3, i / e / 3, e]
    }

    function _w(t, e, n, i) {
        for (var r = (t.length - 2) / 6, o = 1 / 0, a = 0, s = t.length, l = s - 2, u = 0; r > u; u++) {
            for (var h = 6 * u, c = 0, p = 0; s > p; p += 2) {
                var d = 0 === p ? h : (h + p - 2) % l + 2, f = t[d] - n[0], g = t[d + 1] - n[1], y = e[p] - i[0],
                    v = e[p + 1] - i[1], m = y - f, x = v - g;
                c += m * m + x * x
            }
            o > c && (o = c, a = u)
        }
        return a
    }

    function bw(t) {
        for (var e = [], n = t.length, i = 0; n > i; i += 2) e[i] = t[n - i - 2], e[i + 1] = t[n - i - 1];
        return e
    }

    function ww(t, e, n, i) {
        for (var r, o = [], a = 0; a < t.length; a++) {
            var s = t[a], l = e[a], u = xw(s), h = xw(l);
            null == r && (r = u[2] < 0 != h[2] < 0);
            var c = [], p = [], d = 0, f = 1 / 0, g = [], y = s.length;
            r && (s = bw(s));
            for (var v = 6 * _w(s, l, u, h), m = y - 2, x = 0; m > x; x += 2) {
                var _ = (v + x) % m + 2;
                c[x + 2] = s[_] - u[0], c[x + 3] = s[_ + 1] - u[1]
            }
            if (c[0] = s[v] - u[0], c[1] = s[v + 1] - u[1], n > 0) for (var b = i / n, w = -i / 2; i / 2 >= w; w += b) {
                for (var S = Math.sin(w), M = Math.cos(w), I = 0, x = 0; x < s.length; x += 2) {
                    var T = c[x], C = c[x + 1], A = l[x] - h[0], D = l[x + 1] - h[1], L = A * M - D * S,
                        k = A * S + D * M;
                    g[x] = L, g[x + 1] = k;
                    var P = L - T, O = k - C;
                    I += P * P + O * O
                }
                if (f > I) {
                    f = I, d = w;
                    for (var R = 0; R < g.length; R++) p[R] = g[R]
                }
            } else for (var z = 0; y > z; z += 2) p[z] = l[z] - h[0], p[z + 1] = l[z + 1] - h[1];
            o.push({from: c, to: p, fromCp: u, toCp: h, rotation: -d})
        }
        return o
    }

    function Sw(t, e, n) {
        var i, r;
        if (!t || !e) return e;
        !t.path && t.createPathProxy(), i = t.path, i.beginPath(), t.buildPath(i, t.shape), !e.path && e.createPathProxy(), r = e.path, r === i && (r = new Ck(!1)), r.beginPath(), Aw(e) ? e.__oldBuildPath(r, e.shape) : e.buildPath(r, e.shape);
        var o = mw(gw(i), gw(r)), a = o[0], s = o[1], l = ww(a, s, 10, Math.PI);
        Iw(e, l, 0);
        var u = n && n.done, h = n && n.aborted, p = n && n.during;
        return e.animateTo({__morphT: 1}, c({
            during: function (t) {
                e.dirtyShape(), p && p(t)
            }, done: function () {
                Cw(e), e.createPathProxy(), e.dirtyShape(), u && u()
            }, aborted: function () {
                h && h()
            }
        }, n)), e
    }

    function Mw(t) {
        for (var e = this.__morphingData, n = this.__morphT, i = 1 - n, r = [], o = 0; o < e.length; o++) {
            var a = e[o], s = a.from, l = a.to, u = a.rotation * n, h = a.fromCp, c = a.toCp, p = Math.sin(u),
                d = Math.cos(u);
            fe(r, h, c, n);
            for (var f = 0; f < s.length; f += 2) {
                var g = s[f], y = s[f + 1], v = l[f], m = l[f + 1], x = g * i + v * n, _ = y * i + m * n;
                hY[f] = x * d - _ * p + r[0], hY[f + 1] = x * p + _ * d + r[1]
            }
            for (var f = 0; f < s.length;) 0 === f && t.moveTo(hY[f++], hY[f++]), t.bezierCurveTo(hY[f++], hY[f++], hY[f++], hY[f++], hY[f++], hY[f++])
        }
    }

    function Iw(t, e, n) {
        if (Aw(t)) return void Tw(t, e, n);
        var i = t;
        i.__oldBuildPath = i.buildPath, i.buildPath = Mw, Tw(i, e, n)
    }

    function Tw(t, e, n) {
        t.__morphingData = e, t.__morphT = n
    }

    function Cw(t) {
        Aw(t) && (t.buildPath = t.__oldBuildPath, t.__oldBuildPath = t.__morphingData = null)
    }

    function Aw(t) {
        return null != t.__oldBuildPath
    }

    function Dw(t) {
        return !!t.__combiningSubList
    }

    function Lw(t) {
        return Aw(t) || Dw(t)
    }

    function kw(t, e, n, i) {
        for (var r = [], o = 0, a = 0; a < t.length; a++) {
            var s = t[a];
            if (Dw(s)) {
                for (var l = s.__combiningSubList, u = 0; u < l.length; u++) r.push(l[u]);
                o += l.length
            } else r.push(s), o++
        }
        if (o) {
            var h = n ? n.dividingMethod : null, p = Fw(e, o, h);
            H(p.length === o);
            for (var d = n && n.done, f = n && n.aborted, g = n && n.during, y = 0, v = !1, m = c({
                during: function (t) {
                    g && g(t)
                }, done: function () {
                    y++, y === p.length && (Ow(e), d && d())
                }, aborted: function () {
                    v || (v = !0, f && f())
                }
            }, n), a = 0; o > a; a++) {
                var x = r[a], _ = p[a];
                i && i(e, _, !0), Sw(x, _, m)
            }
            return Pw(e, p), {fromIndividuals: r, toIndividuals: p, count: o}
        }
    }

    function Pw(t, e) {
        if (Dw(t)) return void Rw(t, e);
        var n = t;
        Rw(n, e), n.__oldAddSelfToZr = t.addSelfToZr, n.__oldRemoveSelfFromZr = t.removeSelfFromZr, n.addSelfToZr = zw, n.removeSelfFromZr = Nw, n.__oldBuildPath = n.buildPath, n.buildPath = K, n.childrenRef = Bw
    }

    function Ow(t) {
        if (Dw(t)) {
            var e = t;
            Rw(e, null), e.addSelfToZr = e.__oldAddSelfToZr, e.removeSelfFromZr = e.__oldRemoveSelfFromZr, e.buildPath = e.__oldBuildPath, e.childrenRef = e.__combiningSubList = e.__oldAddSelfToZr = e.__oldRemoveSelfFromZr = e.__oldBuildPath = null
        }
    }

    function Rw(t, e) {
        if (t.__combiningSubList !== e) {
            if (Ew(t, "removeSelfFromZr"), t.__combiningSubList = e, e) for (var n = 0; n < e.length; n++) e[n].parent = t;
            Ew(t, "addSelfToZr")
        }
    }

    function zw(t) {
        this.__oldAddSelfToZr(t), Ew(this, "addSelfToZr")
    }

    function Ew(t, e) {
        var n = t.__combiningSubList, i = t.__zr;
        if (n && i) for (var r = 0; r < n.length; r++) {
            var o = n[r];
            o[e](i)
        }
    }

    function Nw(t) {
        this.__oldRemoveSelfFromZr(t);
        for (var e = this.__combiningSubList, n = 0; n < e.length; n++) {
            var i = e[n];
            i.removeSelfFromZr(t)
        }
    }

    function Bw() {
        return this.__combiningSubList
    }

    function Vw(t, e, n, i) {
        var r, o = e.length, a = n ? n.dividingMethod : null, s = !1;
        if (Dw(t)) {
            var l = t.__combiningSubList;
            l.length === o ? r = l : (r = Fw(t, o, a), s = !0)
        } else r = Fw(t, o, a), s = !0;
        H(r.length === o);
        for (var u = 0; o > u; u++) s && i && i(t, r[u], !1), Sw(r[u], e[u], n);
        return {fromIndividuals: r, toIndividuals: e, count: o}
    }

    function Fw(t, e, n) {
        return "duplicate" === n ? Hw(t, e) : Gw(t, e)
    }

    function Gw(t, e) {
        var n = [];
        if (0 >= e) return n;
        if (1 === e) return Hw(t, e);
        if (t instanceof Uk) for (var i = t.shape, r = i.height > i.width ? 1 : 0, o = uY[r], a = lY[r], s = i[o] / e, l = i[a], u = 0; e > u; u++, l += s) {
            var h = {x: i.x, y: i.y, width: i.width, height: i.height};
            h[a] = l, h[o] = e - 1 > u ? s : i[a] + i[o] - l;
            var c = new Uk({shape: h});
            n.push(c)
        } else {
            if (!(t instanceof ZP)) return Hw(t, e);
            for (var i = t.shape, p = i.clockwise, d = i.startAngle, f = i.endAngle, g = Ww(d, i.endAngle, p), y = (g - d) / e, v = d, u = 0; e > u; u++, v += y) {
                var c = new ZP({
                    shape: {
                        cx: i.cx,
                        cy: i.cy,
                        r: i.r,
                        r0: i.r0,
                        clockwise: p,
                        startAngle: v,
                        endAngle: u === e - 1 ? f : v + y
                    }
                });
                n.push(c)
            }
        }
        return n
    }

    function Hw(t, e) {
        var n = [];
        if (0 >= e) return n;
        for (var i = t.constructor, r = 0; e > r; r++) {
            var o = new i({shape: s(t.shape)});
            n.push(o)
        }
        return n
    }

    function Ww(t, e, n) {
        return e + sY * Math[n ? "ceil" : "floor"]((t - e) / sY)
    }

    function Xw(t, e, n) {
        if (t) {
            if ("oneToOne" === e) return function (e, n) {
                return t.getId(n)
            };
            var i = t.getDimension(n), r = t.getDimensionInfo(i);
            if (!r) {
                var o = "";
                Gi(o)
            }
            var a = r.ordinalMeta;
            return function (e, n) {
                var r = t.get(i, n);
                return a && (r = a.categories[r]), null == r || E(r) ? e + "" : "_ec_" + r
            }
        }
    }

    function Yw(t) {
        var e, n = t.type;
        if ("path" === n) {
            var i = t.shape, r = null != i.width && null != i.height ? {
                x: i.x || 0,
                y: i.y || 0,
                width: i.width,
                height: i.height
            } : null, o = TS(i);
            e = ns(o, null, r, i.layout || "center"), cY(e).customPathData = o
        } else if ("image" === n) e = new Wk({}), cY(e).customImagePath = t.style.image; else if ("text" === n) e = new $k({}); else if ("group" === n) e = new sL; else {
            if ("compoundPath" === n) throw new Error('"compoundPath" is not supported yet.');
            var a = es(n);
            if (!a) {
                var s = "";
                Gi(s)
            }
            e = new a
        }
        return cY(e).customGraphicType = n, e.name = t.name, e.z2EmphasisLift = 1, e.z2SelectLift = 1, e
    }

    function Zw(t, e, n, i, r, o, a, s, l, u) {
        var h = {}, c = {}, p = e.isGroup ? null : e;
        !n && qw("shape", e, null, r, h, l), Kw("shape", r, c), !n && qw("extra", e, null, r, h, l), Kw("extra", r, c), !n && $w(e, null, r, h, l), Jw(r, c);
        var d = a && a.normal.cfg;
        if (d && e.setTextConfig(d), "text" === e.type && o) {
            var f = o;
            q(f, "textFill") && (f.fill = f.textFill), q(f, "textStroke") && (f.stroke = f.textStroke)
        }
        if (o) {
            var g = void 0, y = AS(e) ? o.decal : null;
            t && y && (y.dirty = !0, g = qc(y, t)), o.__decalPattern = g
        }
        return !n && Qw(e, null, r, o, h, l), p && q(r, "invisible") && (p.invisible = r.invisible), n || (Uw(e, c, o), jw(e, i, r, s, h, l)), q(r, "silent") && (e.silent = r.silent), q(r, "ignore") && (e.ignore = r.ignore), u || q(r, "info") && (cY(e).info = r.info), o ? e.dirty() : e.markRedraw(), n ? c : null
    }

    function Uw(t, e, n) {
        var i = t.isGroup ? null : t;
        if (i && n) {
            var r = n.__decalPattern, o = void 0;
            r && (o = n.decal, n.decal = r), i.useStyle(n), r && (n.decal = o);
            for (var a = i.animators, s = 0; s < a.length; s++) {
                var l = a[s];
                "style" === l.targetName && l.changeTarget(i.style)
            }
        }
        e && t.attr(e)
    }

    function jw(t, e, n, i, r, o) {
        if (r) {
            var a = n.during;
            cY(t).userDuring = a;
            var s = a ? xA(iS, {el: t, userDuring: a}) : null, l = {dataIndex: e, isFrom: !0, during: s};
            o ? hs(t, r, i, l) : us(t, r, i, l)
        }
    }

    function qw(t, e, n, i, r, o) {
        var a = i[t];
        if (a) {
            var s, l = e[t], u = a.enterFrom;
            if (o && u) {
                !s && (s = r[t] = {});
                for (var h = b(u), c = 0; c < h.length; c++) {
                    var d = h[c];
                    s[d] = u[d]
                }
            }
            if (!o && l && (null == n || "shape" !== t)) if (a.transition) {
                !s && (s = r[t] = {});
                for (var f = Hi(a.transition), c = 0; c < f.length; c++) {
                    var d = f[c], g = l[d];
                    s[d] = g
                }
            } else if (p(i.transition, t) >= 0) {
                !s && (s = r[t] = {});
                for (var y = b(l), c = 0; c < y.length; c++) {
                    var d = y[c], g = l[d];
                    eS(a[d], g) && (s[d] = g)
                }
            }
            var v = a.leaveTo;
            if (v) for (var m = nS(e), x = m[t] || (m[t] = {}), _ = b(v), c = 0; c < _.length; c++) {
                var d = _[c];
                x[d] = v[d]
            }
        }
    }

    function Kw(t, e, n) {
        var i = e[t];
        if (i) for (var r = n[t] = {}, o = b(i), a = 0; a < o.length; a++) {
            var s = o[a];
            r[s] = Dn(i[s])
        }
    }

    function $w(t, e, n, i, r) {
        var o = n.enterFrom;
        if (r && o) for (var a = b(o), s = 0; s < a.length; s++) {
            var l = a[s];
            i[l] = o[l]
        }
        if (!r) if (e) {
            var u = tS(e, t);
            uS(i, "x", u), uS(i, "y", u), uS(i, "scaleX", u), uS(i, "scaleY", u), uS(i, "originX", u), uS(i, "originY", u), uS(i, "rotation", u)
        } else if (n.transition) for (var h = Hi(n.transition), s = 0; s < h.length; s++) {
            var l = h[s];
            if ("style" !== l && "shape" !== l && "extra" !== l) {
                var c = t[l];
                i[l] = c
            }
        } else uS(i, "x", t), uS(i, "y", t);
        var p = n.leaveTo;
        if (p) for (var d = nS(t), f = b(p), s = 0; s < f.length; s++) {
            var l = f[s];
            d[l] = p[l]
        }
    }

    function Jw(t, e) {
        sS(t, e, "position"), sS(t, e, "scale"), sS(t, e, "origin"), lS(t, e, "x"), lS(t, e, "y"), lS(t, e, "scaleX"), lS(t, e, "scaleY"), lS(t, e, "originX"), lS(t, e, "originY"), lS(t, e, "rotation")
    }

    function Qw(t, e, n, i, r, o) {
        if (i) {
            var a, s = e || t, l = s.style, u = i.enterFrom;
            if (o && u) {
                var h = b(u);
                !a && (a = r.style = {});
                for (var c = 0; c < h.length; c++) {
                    var d = h[c];
                    a[d] = u[d]
                }
            }
            if (!o && l) if (i.transition) {
                var f = Hi(i.transition);
                !a && (a = r.style = {});
                for (var c = 0; c < f.length; c++) {
                    var d = f[c], g = l[d];
                    a[d] = g
                }
            } else if (t.getAnimationStyleProps && p(n.transition, "style") >= 0) {
                var y = t.getAnimationStyleProps(), v = y ? y.style : null;
                if (v) {
                    !a && (a = r.style = {});
                    for (var m = b(i), c = 0; c < m.length; c++) {
                        var d = m[c];
                        if (v[d]) {
                            var g = l[d];
                            a[d] = g
                        }
                    }
                }
            }
            var x = i.leaveTo;
            if (x) for (var _ = b(x), w = nS(t), S = w.style || (w.style = {}), c = 0; c < _.length; c++) {
                var d = _[c];
                S[d] = x[d]
            }
        }
    }

    function tS(t, e) {
        if (!t || t === e || t.parent === e.parent) return t;
        var n = IY.transform || (IY.transform = Hn([])), i = t.getComputedTransform();
        i ? Wn(n, i) : Hn(n);
        var r = e.parent;
        return r && r.getComputedTransform(), IY.originX = t.originX, IY.originY = t.originY, IY.parent = r, IY.decomposeTransform(), IY
    }

    function eS(t, e) {
        return g(t) ? t !== e : null != t && isFinite(t)
    }

    function nS(t) {
        var e = cY(t);
        return e.leaveToProps || (e.leaveToProps = {})
    }

    function iS() {
        var t = this, e = t.el;
        if (e) {
            var n = cY(e).userDuring, i = t.userDuring;
            if (n !== i) return void (t.el = t.userDuring = null);
            DY.el = e, DY.isShapeDirty = !1, DY.isStyleDirty = !1, i(LY), DY.isShapeDirty && e.dirtyShape && e.dirtyShape(), DY.isStyleDirty && e.dirtyStyle && e.dirtyStyle()
        }
    }

    function rS(t, e, n, i, r) {
        var o = e.isGroup ? null : e, a = r && r[t].cfg;
        if (o) {
            var s = o.ensureState(t);
            if (i === !1) {
                var l = o.getState(t);
                l && (l.style = null)
            } else s.style = i || null;
            a && (s.textConfig = a), ia(o)
        }
    }

    function oS(t, e, n) {
        if (!t.isGroup) {
            var i = t, r = n.currentZ, o = n.currentZLevel;
            i.z = r, i.zlevel = o;
            var a = e.z2;
            null != a && (i.z2 = a || 0);
            for (var s = 0; s < xY.length; s++) aS(i, e, xY[s])
        }
    }

    function aS(t, e, n) {
        var i, r = n === yY, o = r ? e : mS(e, n), a = o ? o.z2 : null;
        null != a && (i = r ? t : t.ensureState(n), i.z2 = a || 0)
    }

    function sS(t, e, n, i) {
        var r = t[n], o = MY[n];
        r && (i ? (e[o[0]] = i[o[0]], e[o[1]] = i[o[1]]) : (e[o[0]] = r[0], e[o[1]] = r[1]))
    }

    function lS(t, e, n, i) {
        null != t[n] && (e[n] = i ? i[n] : t[n])
    }

    function uS(t, e, n) {
        n && (t[e] = n[e])
    }

    function hS(t, e, n, i) {
        function r(t) {
            return t === b ? w || (w = e.getItemModel(t)) : e.getItemModel(t)
        }

        function o(t, n) {
            return e.hasItemOption ? t === b ? I[n] || (I[n] = r(t).getModel(_Y[n])) : r(t).getModel(_Y[n]) : A[n]
        }

        function a(t, n) {
            return e.hasItemOption ? t === b ? C[n] || (C[n] = r(t).getModel(bY[n])) : r(t).getModel(bY[n]) : D[n]
        }

        function s(t, n) {
            return null == n && (n = b), e.get(e.getDimension(t || 0), n)
        }

        function l(t, n) {
            null == n && (n = b);
            var i = e.getDimensionInfo(t || 0);
            if (i) {
                var r = e.get(i.name, n), o = i && i.ordinalMeta;
                return o ? o.categories[r] : r
            }
        }

        function u(n, i) {
            null == i && (i = b);
            var r = e.getItemVisual(i, "style"), s = r && r.fill, l = r && r.opacity, u = o(i, yY).getItemStyle();
            null != s && (u.fill = s), null != l && (u.opacity = l);
            var h = {inheritColor: T(s) ? s : "#000"}, c = a(i, yY), f = Os(c, null, h, !1, !0);
            f.text = c.getShallow("show") ? B(t.getFormattedLabel(i, yY), Zf(e, i)) : null;
            var g = Rs(c, h, !1);
            return d(n, u), u = pw(u, f, g), n && p(u, n), u.legacy = !0, u
        }

        function h(n, i) {
            null == i && (i = b);
            var r = o(i, gY).getItemStyle(), s = a(i, gY), l = Os(s, null, null, !0, !0);
            l.text = s.getShallow("show") ? V(t.getFormattedLabel(i, gY), t.getFormattedLabel(i, yY), Zf(e, i)) : null;
            var u = Rs(s, null, !0);
            return d(n, r), r = pw(r, l, u), n && p(r, n), r.legacy = !0, r
        }

        function p(t, e) {
            for (var n in e) q(e, n) && (t[n] = e[n])
        }

        function d(t, e) {
            t && (t.textFill && (e.textFill = t.textFill), t.textPosition && (e.textPosition = t.textPosition))
        }

        function f(t, n) {
            if (null == n && (n = b), q(dY, t)) {
                var i = e.getItemVisual(n, "style");
                return i ? i[dY[t]] : null
            }
            return q(fY, t) ? e.getItemVisual(n, t) : void 0
        }

        function g(t) {
            if ("cartesian2d" === x.type) {
                var e = x.getBaseAxis();
                return Ad(c({axis: e}, t))
            }
        }

        function y() {
            return n.getCurrentSeriesIndices()
        }

        function v(t) {
            return Bs(t, n)
        }

        var m = t.get("renderItem"), x = t.coordinateSystem, _ = {};
        x && (_ = x.prepareCustoms ? x.prepareCustoms(x) : TY[x.type](x));
        for (var b, w, S = c({
            getWidth: i.getWidth,
            getHeight: i.getHeight,
            getZr: i.getZr,
            getDevicePixelRatio: i.getDevicePixelRatio,
            value: s,
            style: u,
            ordinalRawValue: l,
            styleEmphasis: h,
            visual: f,
            barLayout: g,
            currentSeriesIndices: y,
            font: v
        }, _.api || {}), M = {
            context: {},
            seriesId: t.id,
            seriesName: t.name,
            seriesIndex: t.seriesIndex,
            coordSys: _.coordSys,
            dataInsideLength: e.count(),
            encode: cS(t.getData())
        }, I = {}, C = {}, A = {}, D = {}, L = 0; L < xY.length; L++) {
            var k = xY[L];
            A[k] = t.getModel(_Y[k]), D[k] = t.getModel(bY[k])
        }
        return function (t, n) {
            return b = t, w = null, I = {}, C = {}, m && m(c({
                dataIndexInside: t,
                dataIndex: e.getRawIndex(t),
                actionType: n ? n.type : null
            }, M), S)
        }
    }

    function cS(t) {
        var e = {};
        return y(t.dimensions, function (n, i) {
            var r = t.getDimensionInfo(n);
            if (!r.isExtraCoord) {
                var o = r.coordDim, a = e[o] = e[o] || [];
                a[r.coordDimIndex] = i
            }
        }), e
    }

    function pS(t, e, n, i, r, o, a, s) {
        return i ? (e = dS(t, e, n, i, r, o, !0, s), e && a.setItemGraphicEl(n, e), e && Sa(e, i.focus, i.blurScope), e) : void DS(e, o)
    }

    function dS(t, e, n, i, r, o, a, s) {
        var l = -1;
        e && fS(e, i) && (l = o.childrenRef().indexOf(e), e = null);
        var u = !e;
        e ? e.clearStates() : e = Yw(i);
        var h = cY(e).canMorph = i.morph && AS(e), c = h && s && s.hasFrom(), p = u && !c;
        SY.normal.cfg = SY.normal.conOpt = SY.emphasis.cfg = SY.emphasis.conOpt = SY.blur.cfg = SY.blur.conOpt = SY.select.cfg = SY.select.conOpt = null, SY.isLegacy = !1, yS(e, n, i, r, p, SY), gS(e, n, i, r, p);
        var d = Zw(t, e, c, n, i, i.style, SY, r, p, !1);
        c && s.addTo(e, i, n, d);
        for (var f = 0; f < xY.length; f++) {
            var g = xY[f];
            if (g !== yY) {
                var y = mS(i, g), v = xS(i, y, g);
                rS(g, e, y, v, SY, a, !1)
            }
        }
        return oS(e, i, r, SY), "group" === i.type && _S(t, e, n, i, r, s), l >= 0 ? o.replaceAt(e, l) : o.add(e), e
    }

    function fS(t, e) {
        var n = cY(t), i = e.type, r = e.shape, o = e.style;
        return null != i && i !== n.customGraphicType || "path" === i && CS(r) && TS(r) !== n.customPathData || "image" === i && q(o, "image") && o.image !== n.customImagePath
    }

    function gS(t, e, n, i, r) {
        var o = n.clipPath;
        if (o === !1) t && t.getClipPath() && t.removeClipPath(); else if (o) {
            var a = t.getClipPath();
            a && fS(a, o) && (a = null), a || (a = Yw(o), t.setClipPath(a)), Zw(null, a, null, e, o, null, null, i, r, !1)
        }
    }

    function yS(t, e, n, i, r, o) {
        if (!t.isGroup) {
            vS(n, null, o), vS(n, gY, o);
            var a = o.normal.conOpt, s = o.emphasis.conOpt, l = o.blur.conOpt, u = o.select.conOpt;
            if (null != a || null != s || null != u || null != l) {
                var h = t.getTextContent();
                if (a === !1) h && t.removeTextContent(); else {
                    a = o.normal.conOpt = a || {type: "text"}, h ? h.clearStates() : (h = Yw(a), t.setTextContent(h));
                    var c = a && a.style;
                    Zw(null, h, null, e, a, c, null, i, r, !0);
                    for (var p = 0; p < xY.length; p++) {
                        var d = xY[p];
                        if (d !== yY) {
                            var f = o[d].conOpt;
                            rS(d, h, f, xS(a, f, d), null, !1, !0)
                        }
                    }
                    c ? h.dirty() : h.markRedraw()
                }
            }
        }
    }

    function vS(t, e, n) {
        var i = e ? mS(t, e) : t, r = e ? xS(t, i, gY) : t.style, o = t.type, a = i ? i.textConfig : null,
            s = t.textContent, l = s ? e ? mS(s, e) : s : null;
        if (r && (n.isLegacy || uw(r, o, !!a, !!l))) {
            n.isLegacy = !0;
            var u = hw(r, o, !e);
            !a && u.textConfig && (a = u.textConfig), !l && u.textContent && (l = u.textContent)
        }
        if (!e && l) {
            var h = l;
            !h.type && (h.type = "text")
        }
        var c = e ? n[e] : n.normal;
        c.cfg = a, c.conOpt = l
    }

    function mS(t, e) {
        return e ? t ? t[e] : null : t
    }

    function xS(t, e, n) {
        var i = e && e.style;
        return null == i && n === gY && t && (i = t.styleEmphasis), i
    }

    function _S(t, e, n, i, r, o) {
        var a = i.children, s = a ? a.length : 0, l = i.$mergeChildren, u = "byName" === l || i.diffChildrenByName,
            h = l === !1;
        if (s || u || h) {
            if (u) return void bS({
                api: t,
                oldChildren: e.children() || [],
                newChildren: a || [],
                dataIndex: n,
                seriesModel: r,
                group: e,
                morphPreparation: o
            });
            h && e.removeAll();
            for (var c = 0; s > c; c++) a[c] && dS(t, e.childAt(c), n, a[c], r, e, !1, o);
            for (var p = e.childCount() - 1; p >= c; p--) IS(e.childAt(p), r, e)
        }
    }

    function bS(t) {
        new tV(t.oldChildren, t.newChildren, wS, wS, t).add(SS).update(SS).remove(MS).execute()
    }

    function wS(t, e) {
        var n = t && t.name;
        return null != n ? n : wY + e
    }

    function SS(t, e) {
        var n = this.context, i = null != t ? n.newChildren[t] : null, r = null != e ? n.oldChildren[e] : null;
        dS(n.api, r, n.dataIndex, i, n.seriesModel, n.group, !1, n.morphPreparation)
    }

    function MS(t) {
        var e = this.context, n = e.oldChildren[t];
        IS(n, e.seriesModel, e.group)
    }

    function IS(t, e, n) {
        if (t) {
            var i = cY(t).leaveToProps;
            i ? us(t, i, e, {
                cb: function () {
                    n.remove(t)
                }
            }) : n.remove(t)
        }
    }

    function TS(t) {
        return t && (t.pathData || t.d)
    }

    function CS(t) {
        return t && (q(t, "pathData") || q(t, "d"))
    }

    function AS(t) {
        return t && t instanceof Bk
    }

    function DS(t, e) {
        t && e.remove(t)
    }

    function LS(t, e, n) {
        e.style = n ? s(t.style) : t.style, e.zlevel = t.zlevel, e.z = t.z, e.z2 = t.z2
    }

    function kS(t) {
        t.registerChartView(AY), t.registerSeriesModel(CY)
    }

    function PS(t, e, n, i) {
        OS(PY(n).lastProp, i) || (PY(n).lastProp = i, e ? us(n, i, t) : (n.stopAnimation(), n.attr(i)))
    }

    function OS(t, e) {
        if (D(t) && D(e)) {
            var n = !0;
            return y(e, function (e, i) {
                n = n && OS(t[i], e)
            }), !!n
        }
        return t === e
    }

    function RS(t, e) {
        t[e.get(["label", "show"]) ? "show" : "hide"]()
    }

    function zS(t) {
        return {x: t.x || 0, y: t.y || 0, rotation: t.rotation || 0}
    }

    function ES(t, e, n) {
        var i = e.get("z"), r = e.get("zlevel");
        t && t.traverse(function (t) {
            "group" !== t.type && (null != i && (t.z = i), null != r && (t.zlevel = r), t.silent = n)
        })
    }

    function NS(t) {
        var e, n = t.get("type"), i = t.getModel(n + "Style");
        return "line" === n ? (e = i.getLineStyle(), e.fill = null) : "shadow" === n && (e = i.getAreaStyle(), e.stroke = null), e
    }

    function BS(t, e, n, i, r) {
        var o = n.get("value"), a = FS(o, e.axis, e.ecModel, n.get("seriesDataIndices"), {
                precision: n.get(["label", "precision"]),
                formatter: n.get(["label", "formatter"])
            }), s = n.getModel("label"), l = oR(s.get("padding") || 0), u = s.getFont(), h = ti(a, u), c = r.position,
            p = h.width + l[1] + l[3], d = h.height + l[0] + l[2], f = r.align;
        "right" === f && (c[0] -= p), "center" === f && (c[0] -= p / 2);
        var g = r.verticalAlign;
        "bottom" === g && (c[1] -= d), "middle" === g && (c[1] -= d / 2), VS(c, p, d, i);
        var y = s.get("backgroundColor");
        y && "auto" !== y || (y = e.get(["axisLine", "lineStyle", "color"])), t.label = {
            x: c[0],
            y: c[1],
            style: Os(s, {text: a, font: u, fill: s.getTextColor(), padding: l, backgroundColor: y}),
            z2: 10
        }
    }

    function VS(t, e, n, i) {
        var r = i.getWidth(), o = i.getHeight();
        t[0] = Math.min(t[0] + e, r) - e, t[1] = Math.min(t[1] + n, o) - n, t[0] = Math.max(t[0], 0), t[1] = Math.max(t[1], 0)
    }

    function FS(t, e, n, i, r) {
        t = e.scale.parse(t);
        var o = e.scale.getLabel({value: t}, {precision: r.precision}), a = r.formatter;
        if (a) {
            var s = {value: ef(e, {value: t}), axisDimension: e.dim, axisIndex: e.index, seriesData: []};
            y(i, function (t) {
                var e = n.getSeriesByIndex(t.seriesIndex), i = t.dataIndexInside, r = e && e.getDataParams(i);
                r && s.seriesData.push(r)
            }), T(a) ? o = a.replace("{value}", o) : I(a) && (o = a(s))
        }
        return o
    }

    function GS(t, e, n) {
        var i = Gn();
        return Zn(i, i, n.rotation), Yn(i, i, n.position), ys([t.dataToCoord(e), (n.labelOffset || 0) + (n.labelDirection || 1) * (n.labelMargin || 0)], i)
    }

    function HS(t, e, n, i, r, o) {
        var a = cG.innerTextLayout(n.rotation, 0, n.labelDirection);
        n.labelMargin = r.get(["label", "margin"]), BS(e, i, r, o, {
            position: GS(i.axis, t, n),
            align: a.textAlign,
            verticalAlign: a.textVerticalAlign
        })
    }

    function WS(t, e, n) {
        return n = n || 0, {x1: t[n], y1: t[1 - n], x2: e[n], y2: e[1 - n]}
    }

    function XS(t, e, n) {
        return n = n || 0, {x: t[n], y: t[1 - n], width: e[n], height: e[1 - n]}
    }

    function YS(t, e, n, i, r, o) {
        return {cx: t, cy: e, r0: n, r: i, startAngle: r, endAngle: o, clockwise: !0}
    }

    function ZS(t, e, n, i, r) {
        var o = e.axis, a = o.dataToCoord(t), s = i.getAngleAxis().getExtent()[0];
        s = s / 180 * Math.PI;
        var l, u, h, c = i.getRadiusAxis().getExtent();
        if ("radius" === o.dim) {
            var p = Gn();
            Zn(p, p, s), Yn(p, p, [i.cx, i.cy]), l = ys([a, -r], p);
            var d = e.getModel("axisLabel").get("rotate") || 0, f = cG.innerTextLayout(s, d * Math.PI / 180, -1);
            u = f.textAlign, h = f.textVerticalAlign
        } else {
            var g = c[1];
            l = i.coordToPoint([g + r, a]);
            var y = i.cx, v = i.cy;
            u = Math.abs(l[0] - y) / g < .3 ? "center" : l[0] > y ? "left" : "right", h = Math.abs(l[1] - v) / g < .3 ? "middle" : l[1] > v ? "top" : "bottom"
        }
        return {position: l, align: u, verticalAlign: h}
    }

    function US(t, e) {
        var n = {};
        return n[e.dim + "AxisIndex"] = e.index, t.getCartesian(n)
    }

    function jS(t) {
        return "x" === t.dim ? 0 : 1
    }

    function qS(t, e, n) {
        if (!oA.node) {
            var i = e.getZr();
            GY(i).records || (GY(i).records = {}), KS(i, e);
            var r = GY(i).records[t] || (GY(i).records[t] = {});
            r.handler = n
        }
    }

    function KS(t, e) {
        function n(n, i) {
            t.on(n, function (n) {
                var r = tM(e);
                HY(GY(t).records, function (t) {
                    t && i(t, n, r.dispatchAction)
                }), $S(r.pendings, e)
            })
        }

        GY(t).initialized || (GY(t).initialized = !0, n("click", S(QS, "click")), n("mousemove", S(QS, "mousemove")), n("globalout", JS))
    }

    function $S(t, e) {
        var n, i = t.showTip.length, r = t.hideTip.length;
        i ? n = t.showTip[i - 1] : r && (n = t.hideTip[r - 1]), n && (n.dispatchAction = null, e.dispatchAction(n))
    }

    function JS(t, e, n) {
        t.handler("leave", null, n)
    }

    function QS(t, e, n, i) {
        e.handler(t, n, i)
    }

    function tM(t) {
        var e = {showTip: [], hideTip: []}, n = function (i) {
            var r = e[i.type];
            r ? r.push(i) : (i.dispatchAction = n, t.dispatchAction(i))
        };
        return {dispatchAction: n, pendings: e}
    }

    function eM(t, e) {
        if (!oA.node) {
            var n = e.getZr(), i = (GY(n).records || {})[t];
            i && (GY(n).records[t] = null)
        }
    }

    function nM(t, e) {
        var n, i = [], r = t.seriesIndex;
        if (null == r || !(n = e.getSeriesByIndex(r))) return {point: []};
        var o = n.getData(), a = lr(o, t);
        if (null == a || 0 > a || M(a)) return {point: []};
        var s = o.getItemGraphicEl(a), l = n.coordinateSystem;
        if (n.getTooltipPosition) i = n.getTooltipPosition(a) || []; else if (l && l.dataToPoint) if (t.isStacked) {
            var u = l.getBaseAxis(), h = l.getOtherAxis(u), c = h.dim, p = u.dim,
                d = "x" === c || "radius" === c ? 1 : 0, f = o.mapDimension(p), g = [];
            g[d] = o.get(f, a), g[1 - d] = o.get(o.getCalculationInfo("stackResultDimension"), a), i = l.dataToPoint(g) || []
        } else i = l.dataToPoint(o.getValues(v(l.dimensions, function (t) {
            return o.mapDimension(t)
        }), a)) || []; else if (s) {
            var y = s.getBoundingRect().clone();
            y.applyTransform(s.transform), i = [y.x + y.width / 2, y.y + y.height / 2]
        }
        return {point: i, el: s}
    }

    function iM(t, e, n) {
        var i = t.currTrigger, r = [t.x, t.y], o = t, a = t.dispatchAction || xA(n.dispatchAction, n),
            s = e.getComponent("axisPointer").coordSysAxesInfo;
        if (s) {
            dM(r) && (r = nM({seriesIndex: o.seriesIndex, dataIndex: o.dataIndex}, e).point);
            var l = dM(r), u = o.axesInfo, h = s.axesInfo, c = "leave" === i || dM(r), p = {}, d = {},
                f = {list: [], map: {}}, g = {showPointer: S(aM, d), showTooltip: S(sM, f)};
            y(s.coordSysMap, function (t, e) {
                var n = l || t.containPoint(r);
                y(s.coordSysAxesInfo[e], function (t) {
                    var e = t.axis, i = cM(u, t);
                    if (!c && n && (!u || i)) {
                        var o = i && i.value;
                        null != o || l || (o = e.pointToData(r)), null != o && rM(t, o, g, !1, p)
                    }
                })
            });
            var v = {};
            return y(h, function (t, e) {
                var n = t.linkGroup;
                n && !d[e] && y(n.axesInfo, function (e, i) {
                    var r = d[i];
                    if (e !== t && r) {
                        var o = r.value;
                        n.mapper && (o = t.axis.scale.parse(n.mapper(o, pM(e), pM(t)))), v[t.key] = o
                    }
                })
            }), y(v, function (t, e) {
                rM(h[e], t, g, !0, p)
            }), lM(d, h, p), uM(f, r, t, a), hM(h, a, n), p
        }
    }

    function rM(t, e, n, i, r) {
        var o = t.axis;
        if (!o.scale.isBlank() && o.containData(e)) {
            if (!t.involveSeries) return void n.showPointer(t, e);
            var a = oM(e, t), s = a.payloadBatch, l = a.snapToValue;
            s[0] && null == r.seriesIndex && h(r, s[0]), !i && t.snap && o.containData(l) && null != l && (e = l), n.showPointer(t, e, s), n.showTooltip(t, a, l)
        }
    }

    function oM(t, e) {
        var n = e.axis, i = n.dim, r = t, o = [], a = Number.MAX_VALUE, s = -1;
        return y(e.seriesModels, function (e) {
            var l, u, h = e.getData().mapDimensionsAll(i);
            if (e.getAxisTooltipData) {
                var c = e.getAxisTooltipData(h, t, n);
                u = c.dataIndices, l = c.nestestValue
            } else {
                if (u = e.getData().indicesOfNearest(h[0], t, "category" === n.type ? .5 : null), !u.length) return;
                l = e.getData().get(h[0], u[0])
            }
            if (null != l && isFinite(l)) {
                var p = t - l, d = Math.abs(p);
                a >= d && ((a > d || p >= 0 && 0 > s) && (a = d, s = p, r = l, o.length = 0), y(u, function (t) {
                    o.push({seriesIndex: e.seriesIndex, dataIndexInside: t, dataIndex: e.getData().getRawIndex(t)})
                }))
            }
        }), {payloadBatch: o, snapToValue: r}
    }

    function aM(t, e, n, i) {
        t[e.key] = {value: n, payloadBatch: i}
    }

    function sM(t, e, n, i) {
        var r = n.payloadBatch, o = e.axis, a = o.model, s = e.axisPointerModel;
        if (e.triggerTooltip && r.length) {
            var l = e.coordSys.model, u = by(l), h = t.map[u];
            h || (h = t.map[u] = {
                coordSysId: l.id,
                coordSysIndex: l.componentIndex,
                coordSysType: l.type,
                coordSysMainType: l.mainType,
                dataByAxis: []
            }, t.list.push(h)), h.dataByAxis.push({
                axisDim: o.dim,
                axisIndex: a.componentIndex,
                axisType: a.type,
                axisId: a.id,
                value: i,
                valueLabelOpt: {precision: s.get(["label", "precision"]), formatter: s.get(["label", "formatter"])},
                seriesDataIndices: r.slice()
            })
        }
    }

    function lM(t, e, n) {
        var i = n.axesInfo = [];
        y(e, function (e, n) {
            var r = e.axisPointerModel.option, o = t[n];
            o ? (!e.useHandle && (r.status = "show"), r.value = o.value, r.seriesDataIndices = (o.payloadBatch || []).slice()) : !e.useHandle && (r.status = "hide"), "show" === r.status && i.push({
                axisDim: e.axis.dim,
                axisIndex: e.axis.model.componentIndex,
                value: r.value
            })
        })
    }

    function uM(t, e, n, i) {
        if (dM(e) || !t.list.length) return void i({type: "hideTip"});
        var r = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
        i({
            type: "showTip",
            escapeConnect: !0,
            x: e[0],
            y: e[1],
            tooltipOption: n.tooltipOption,
            position: n.position,
            dataIndexInside: r.dataIndexInside,
            dataIndex: r.dataIndex,
            seriesIndex: r.seriesIndex,
            dataByCoordSys: t.list
        })
    }

    function hM(t, e, n) {
        var i = n.getZr(), r = "axisPointerLastHighlights", o = XY(i)[r] || {}, a = XY(i)[r] = {};
        y(t, function (t) {
            var e = t.axisPointerModel.option;
            "show" === e.status && y(e.seriesDataIndices, function (t) {
                var e = t.seriesIndex + " | " + t.dataIndex;
                a[e] = t
            })
        });
        var s = [], l = [];
        y(o, function (t, e) {
            !a[e] && l.push(t)
        }), y(a, function (t, e) {
            !o[e] && s.push(t)
        }), l.length && n.dispatchAction({
            type: "downplay",
            escapeConnect: !0,
            notBlur: !0,
            batch: l
        }), s.length && n.dispatchAction({type: "highlight", escapeConnect: !0, notBlur: !0, batch: s})
    }

    function cM(t, e) {
        for (var n = 0; n < (t || []).length; n++) {
            var i = t[n];
            if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i.axisIndex) return i
        }
    }

    function pM(t) {
        var e = t.axis.model, n = {}, i = n.axisDim = t.axis.dim;
        return n.axisIndex = n[i + "AxisIndex"] = e.componentIndex, n.axisName = n[i + "AxisName"] = e.name, n.axisId = n[i + "AxisId"] = e.id, n
    }

    function dM(t) {
        return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1])
    }

    function fM(t) {
        fG.registerAxisPointerClass("CartesianAxisPointer", BY), t.registerComponentModel(FY), t.registerComponentView(WY), t.registerPreprocessor(function (t) {
            if (t) {
                (!t.axisPointer || 0 === t.axisPointer.length) && (t.axisPointer = {});
                var e = t.axisPointer.link;
                e && !M(e) && (t.axisPointer.link = [e])
            }
        }), t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC, function (t, e) {
            t.getComponent("axisPointer").coordSysAxesInfo = cy(t, e)
        }), t.registerAction({type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer"}, iM)
    }

    function gM(t) {
        var e = t.seriesModel, n = t.polarModel;
        return n && n.coordinateSystem || e && e.coordinateSystem
    }

    function yM(t, e, n) {
        var i = e.get("center"), r = n.getWidth(), o = n.getHeight();
        t.cx = _i(i[0], r), t.cy = _i(i[1], o);
        var a = t.getRadiusAxis(), s = Math.min(r, o) / 2, l = e.get("radius");
        null == l ? l = [0, "100%"] : M(l) || (l = [0, l]);
        var u = [_i(l[0], s), _i(l[1], s)];
        a.inverse ? a.setExtent(u[1], u[0]) : a.setExtent(u[0], u[1])
    }

    function vM(t) {
        var e = this, n = e.getAngleAxis(), i = e.getRadiusAxis();
        if (n.scale.setExtent(1 / 0, -1 / 0), i.scale.setExtent(1 / 0, -1 / 0), t.eachSeries(function (t) {
            if (t.coordinateSystem === e) {
                var r = t.getData();
                y(sf(r, "radius"), function (t) {
                    i.scale.unionExtentFromData(r, t)
                }), y(sf(r, "angle"), function (t) {
                    n.scale.unionExtentFromData(r, t)
                })
            }
        }), $d(n.scale, n.model), $d(i.scale, i.model), "category" === n.type && !n.onBand) {
            var r = n.getExtent(), o = 360 / n.scale.count();
            n.inverse ? r[1] += o : r[1] -= o, n.setExtent(r[0], r[1])
        }
    }

    function mM(t) {
        return "angleAxis" === t.mainType
    }

    function xM(t, e) {
        if (t.type = e.get("type"), t.scale = Jd(e), t.onBand = e.get("boundaryGap") && "category" === t.type, t.inverse = e.get("inverse"), mM(e)) {
            t.inverse = t.inverse !== e.get("clockwise");
            var n = e.get("startAngle");
            t.setExtent(n, n + (t.inverse ? -360 : 360))
        }
        e.axis = t, t.model = e
    }

    function _M(t, e, n) {
        e[1] > e[0] && (e = e.slice().reverse());
        var i = t.coordToPoint([e[0], n]), r = t.coordToPoint([e[1], n]);
        return {x1: i[0], y1: i[1], x2: r[0], y2: r[1]}
    }

    function bM(t) {
        var e = t.getRadiusAxis();
        return e.inverse ? 0 : 1
    }

    function wM(t) {
        var e = t[0], n = t[t.length - 1];
        e && n && Math.abs(Math.abs(e.coord - n.coord) - 360) < 1e-4 && t.pop()
    }

    function SM(t, e, n) {
        return {
            position: [t.cx, t.cy],
            rotation: n / 180 * Math.PI,
            labelDirection: -1,
            tickDirection: -1,
            nameDirection: 1,
            labelRotate: e.getModel("axisLabel").get("rotate"),
            z2: 1
        }
    }

    function MM(t) {
        return t.get("stack") || "__ec_stack_" + t.seriesIndex
    }

    function IM(t, e) {
        return e.dim + t.model.componentIndex
    }

    function TM(t, e) {
        var n = {}, i = CM(x(e.getSeriesByType(t), function (t) {
            return !e.isSeriesFiltered(t) && t.coordinateSystem && "polar" === t.coordinateSystem.type
        }));
        e.eachSeriesByType(t, function (t) {
            if ("polar" === t.coordinateSystem.type) {
                var e = t.getData(), r = t.coordinateSystem, o = r.getBaseAxis(), a = IM(r, o), s = MM(t), l = i[a][s],
                    u = l.offset, h = l.width, c = r.getOtherAxis(o), p = t.coordinateSystem.cx,
                    d = t.coordinateSystem.cy, f = t.get("barMinHeight") || 0, g = t.get("barMinAngle") || 0;
                n[s] = n[s] || [];
                for (var y = e.mapDimension(c.dim), v = e.mapDimension(o.dim), m = dd(e, y), x = "radius" !== o.dim || !t.get("roundCap", !0), _ = c.dataToCoord(0), b = 0, w = e.count(); w > b; b++) {
                    var S = e.get(y, b), M = e.get(v, b), I = S >= 0 ? "p" : "n", T = _;
                    m && (n[s][M] || (n[s][M] = {p: _, n: _}), T = n[s][M][I]);
                    var C = void 0, A = void 0, D = void 0, L = void 0;
                    if ("radius" === c.dim) {
                        var k = c.dataToCoord(S) - _, P = o.dataToCoord(M);
                        Math.abs(k) < f && (k = (0 > k ? -1 : 1) * f), C = T, A = T + k, D = P - u, L = D - h, m && (n[s][M][I] = A)
                    } else {
                        var O = c.dataToCoord(S, x) - _, R = o.dataToCoord(M);
                        Math.abs(O) < g && (O = (0 > O ? -1 : 1) * g), C = R + u, A = C + h, D = T, L = T + O, m && (n[s][M][I] = L)
                    }
                    e.setItemLayout(b, {
                        cx: p,
                        cy: d,
                        r0: C,
                        r: A,
                        startAngle: -D * Math.PI / 180,
                        endAngle: -L * Math.PI / 180
                    })
                }
            }
        })
    }

    function CM(t) {
        var e = {};
        y(t, function (t) {
            var n = t.getData(), i = t.coordinateSystem, r = i.getBaseAxis(), o = IM(i, r), a = r.getExtent(),
                s = "category" === r.type ? r.getBandWidth() : Math.abs(a[1] - a[0]) / n.count(), l = e[o] || {
                    bandWidth: s,
                    remainedWidth: s,
                    autoWidthCount: 0,
                    categoryGap: "20%",
                    gap: "30%",
                    stacks: {}
                }, u = l.stacks;
            e[o] = l;
            var h = MM(t);
            u[h] || l.autoWidthCount++, u[h] = u[h] || {width: 0, maxWidth: 0};
            var c = _i(t.get("barWidth"), s), p = _i(t.get("barMaxWidth"), s), d = t.get("barGap"),
                f = t.get("barCategoryGap");
            c && !u[h].width && (c = Math.min(l.remainedWidth, c), u[h].width = c, l.remainedWidth -= c), p && (u[h].maxWidth = p), null != d && (l.gap = d), null != f && (l.categoryGap = f)
        });
        var n = {};
        return y(e, function (t, e) {
            n[e] = {};
            var i = t.stacks, r = t.bandWidth, o = _i(t.categoryGap, r), a = _i(t.gap, 1), s = t.remainedWidth,
                l = t.autoWidthCount, u = (s - o) / (l + (l - 1) * a);
            u = Math.max(u, 0), y(i, function (t) {
                var e = t.maxWidth;
                e && u > e && (e = Math.min(e, s), t.width && (e = Math.min(e, t.width)), s -= e, t.width = e, l--)
            }), u = (s - o) / (l + (l - 1) * a), u = Math.max(u, 0);
            var h, c = 0;
            y(i, function (t) {
                t.width || (t.width = u), h = t, c += t.width * (1 + a)
            }), h && (c -= h.width * a);
            var p = -c / 2;
            y(i, function (t, i) {
                n[e][i] = n[e][i] || {offset: p, width: t.width}, p += t.width * (1 + a)
            })
        }), n
    }

    function AM(t) {
        df(fM), fG.registerAxisPointerClass("PolarAxisPointer", EY), t.registerCoordinateSystem("polar", QY), t.registerComponentModel(YY), t.registerComponentView(uZ), Zg(t, "angle", UY, sZ), Zg(t, "radius", jY, lZ), t.registerComponentView(eZ), t.registerComponentView(oZ), t.registerLayout(S(TM, "bar"))
    }

    function DM(t) {
        var e = t.geoModel, n = t.seriesModel;
        return e ? e.coordinateSystem : n ? n.coordinateSystem || (n.getReferringComponents("geo", wL).models[0] || {}).coordinateSystem : null
    }

    function LM(t, e) {
        var n = t.get("boundingCoords");
        if (null != n) {
            var i = n[0], r = n[1];
            isNaN(i[0]) || isNaN(i[1]) || isNaN(r[0]) || isNaN(r[1]) || this.setBoundingRect(i[0], i[1], r[0] - i[0], r[1] - i[1])
        }
        var o, a, s = this.getBoundingRect(), l = t.get("layoutCenter"), u = t.get("layoutSize"), h = e.getWidth(),
            c = e.getHeight(), p = s.width / s.height * this.aspectScale, d = !1;
        l && u && (o = [_i(l[0], h), _i(l[1], c)], a = _i(u, Math.min(h, c)), isNaN(o[0]) || isNaN(o[1]) || isNaN(a) || (d = !0));
        var f;
        if (d) f = {}, p > 1 ? (f.width = a, f.height = a / p) : (f.height = a, f.width = a * p), f.y = o[1] - f.height / 2, f.x = o[0] - f.width / 2; else {
            var g = t.getBoxLayoutParams();
            g.aspect = p, f = kl(g, {width: h, height: c})
        }
        this.setViewRect(f.x, f.y, f.width, f.height), this.setCenter(t.get("center")), this.setZoom(t.get("zoom"))
    }

    function kM(t, e) {
        y(e.get("geoCoord"), function (e, n) {
            t.addGeoCoord(n, e)
        })
    }

    function PM(t) {
        var e = t.getItemStyle(), n = t.get("areaColor");
        return null != n && (e.fill = n), e
    }

    function OM(t, e, n, i) {
        var r = i.getModel("itemStyle"), o = i.getModel(["emphasis", "itemStyle"]),
            a = i.getModel(["blur", "itemStyle"]), s = i.getModel(["select", "itemStyle"]), l = PM(r), u = PM(o),
            h = PM(s), c = PM(a), p = t.data;
        if (p) {
            var d = p.getItemVisual(n, "style"), f = p.getItemVisual(n, "decal");
            t.isVisualEncodedByVisualMap && d.fill && (l.fill = d.fill), f && (l.decal = qc(f, t.api))
        }
        e.setStyle(l), e.style.strokeNoScale = !0, e.ensureState("emphasis").style = u, e.ensureState("select").style = h, e.ensureState("blur").style = c, ia(e)
    }

    function RM(t, e, n, i, r, o, a) {
        var s = t.data, l = t.isGeo, u = s && isNaN(s.get(s.mapDimension("value"), o)), h = s && s.getItemLayout(o);
        if (l || u || h && h.showLabel) {
            var c = l ? n : o, p = void 0;
            (!s || o >= 0) && (p = r);
            var d = a ? {normal: {align: "center", verticalAlign: "middle"}} : null;
            ks(e, Ps(i), {labelFetcher: p, labelDataIndex: c, defaultText: n}, d);
            var f = e.getTextContent();
            if (f && (xZ(f).ignore = f.ignore, e.textConfig && a)) {
                var g = e.getBoundingRect().clone();
                e.textConfig.layoutRect = g, e.textConfig.position = [(a[0] - g.x) / g.width * 100 + "%", (a[1] - g.y) / g.height * 100 + "%"]
            }
            e.disableLabelAnimation = !0
        } else e.removeTextContent(), e.removeTextConfig(), e.disableLabelAnimation = null
    }

    function zM(t, e, n, i, r, o) {
        t.data ? t.data.setItemGraphicEl(o, e) : tP(e).eventData = {
            componentType: "geo",
            componentIndex: r.componentIndex,
            geoIndex: r.componentIndex,
            name: n,
            region: i && i.option || {}
        }
    }

    function EM(t, e, n, i, r) {
        t.data || As({el: e, componentModel: r, itemName: n, itemTooltipOption: i.get("tooltip")})
    }

    function NM(t, e, n, i, r) {
        e.highDownSilentOnTouch = !!r.get("selectedMode");
        var o = i.getModel("emphasis"), a = o.get("focus");
        return Sa(e, a, o.get("blurScope")), t.isGeo && Aa(e, r, n), a
    }

    function BM(t) {
        function e(e, n) {
            n.update = "geo:updateSelectStatus", t.registerAction(n, function (t, n) {
                var i = {}, r = [];
                return n.eachComponent({mainType: "geo", query: t}, function (n) {
                    n[e](t.name);
                    var o = n.coordinateSystem;
                    y(o.regions, function (t) {
                        i[t.name] = n.isSelected(t.name) || !1
                    });
                    var a = [];
                    y(i, function (t, e) {
                        i[e] && a.push(e)
                    }), r.push({geoIndex: n.componentIndex, name: a})
                }), {selected: i, allSelected: r, name: t.name}
            })
        }

        t.registerCoordinateSystem("geo", dZ), t.registerComponentModel(fZ), t.registerComponentView(bZ), e("toggleSelected", {
            type: "geoToggleSelect",
            event: "geoselectchanged"
        }), e("select", {type: "geoSelect", event: "geoselected"}), e("unSelect", {
            type: "geoUnSelect",
            event: "geounselected"
        }), t.registerAction({type: "geoRoam", event: "geoRoam", update: "updateTransform"}, function (t, e) {
            var n = t.componentType || "series";
            e.eachComponent({mainType: n, query: t}, function (e) {
                var i = e.coordinateSystem;
                if ("geo" === i.type) {
                    var r = Yv(i, t, e.get("scaleLimit"));
                    e.setCenter && e.setCenter(r.center), e.setZoom && e.setZoom(r.zoom), "series" === n && y(e.seriesGroup, function (t) {
                        t.setCenter(r.center), t.setZoom(r.zoom)
                    })
                }
            })
        })
    }

    function VM(t, e) {
        e = e || {};
        var n = t.coordinateSystem, i = t.axis, r = {}, o = i.position, a = i.orient, s = n.getRect(),
            l = [s.x, s.x + s.width, s.y, s.y + s.height],
            u = {horizontal: {top: l[2], bottom: l[3]}, vertical: {left: l[0], right: l[1]}};
        r.position = ["vertical" === a ? u.vertical[o] : l[0], "horizontal" === a ? u.horizontal[o] : l[3]];
        var h = {horizontal: 0, vertical: 1};
        r.rotation = Math.PI / 2 * h[a];
        var c = {top: -1, bottom: 1, right: 1, left: -1};
        r.labelDirection = r.tickDirection = r.nameDirection = c[o], t.get(["axisTick", "inside"]) && (r.tickDirection = -r.tickDirection), N(e.labelInside, t.get(["axisLabel", "inside"])) && (r.labelDirection = -r.labelDirection);
        var p = e.rotate;
        return null == p && (p = t.get(["axisLabel", "rotate"])), r.labelRotation = "top" === o ? -p : p, r.z2 = 1, r
    }

    function FM(t) {
        var e = t.seriesModel, n = t.singleAxisModel;
        return n && n.coordinateSystem || e && e.coordinateSystem
    }

    function GM(t, e) {
        var n = [];
        return t.eachComponent("singleAxis", function (i, r) {
            var o = new AZ(i, t, e);
            o.name = "single_" + r, o.resize(i, e), i.coordinateSystem = o, n.push(o)
        }), t.eachSeries(function (t) {
            if ("singleAxis" === t.get("coordinateSystem")) {
                var e = t.getReferringComponents("singleAxis", wL).models[0];
                t.coordinateSystem = e && e.coordinateSystem
            }
        }), n
    }

    function HM(t) {
        return t.isHorizontal() ? 0 : 1
    }

    function WM(t, e) {
        var n = t.getRect();
        return [n[LZ[e]], n[LZ[e]] + n[kZ[e]]]
    }

    function XM(t) {
        df(fM), fG.registerAxisPointerClass("SingleAxisPointer", PZ), t.registerComponentView(RZ), t.registerComponentView(MZ), t.registerComponentModel(TZ), Zg(t, "single", TZ, TZ.defaultOption), t.registerCoordinateSystem("single", DZ)
    }

    function YM(t, e) {
        var n, i = t.cellSize;
        n = M(i) ? i : t.cellSize = [i, i], 1 === n.length && (n[1] = n[0]);
        var r = v([0, 1], function (t) {
            return Ol(e, t) && (n[t] = "auto"), null != n[t] && "auto" !== n[t]
        });
        zl(t, e, {type: "box", ignoreSize: r})
    }

    function ZM(t) {
        var e = t.calendarModel, n = t.seriesModel, i = e ? e.coordinateSystem : n ? n.coordinateSystem : null;
        return i
    }

    function UM(t) {
        t.registerComponentModel(zZ), t.registerComponentView(BZ), t.registerCoordinateSystem("calendar", FZ)
    }

    function jM(t) {
        t.registerComponentModel(GZ), t.registerComponentView(HZ)
    }

    function qM(t, e, n) {
        var i = e.getBoxLayoutParams(), r = e.get("padding"), o = {width: n.getWidth(), height: n.getHeight()},
            a = kl(i, o, r);
        dR(e.get("orient"), t, e.get("itemGap"), a.width, a.height), Pl(t, i, o, r)
    }

    function KM(t, e) {
        var n = oR(e.get("padding")), i = e.getItemStyle(["color", "opacity"]);
        return i.fill = e.get("backgroundColor"), t = new Uk({
            shape: {
                x: t.x - n[3],
                y: t.y - n[0],
                width: t.width + n[1] + n[3],
                height: t.height + n[0] + n[2],
                r: e.get("borderRadius")
            }, style: i, silent: !0, z2: -1
        })
    }

    function $M(t, e, n, i, r, o, a) {
        for (var s = e.getModel("itemStyle"), l = EO.concat([["decal"]]), u = {}, h = 0; h < l.length; ++h) {
            var c = l[h][l[h].length - 1], p = l[h][0], d = s.getShallow(c);
            if ("inherit" === d) switch (p) {
                case"fill":
                    u.fill = r[o];
                    break;
                case"stroke":
                    u.stroke = r[0 === t.lastIndexOf("empty", 0) ? "fill" : "stroke"];
                    break;
                case"opacity":
                    u.opacity = ("fill" === o ? r : i).opacity;
                    break;
                default:
                    u[p] = r[p]
            } else "auto" === d && "lineWidth" === p ? u.lineWidth = r.lineWidth > 0 ? 2 : 0 : u[p] = d
        }
        for (var f = e.getModel("lineStyle"), g = OO.concat([["inactiveColor"], ["inactiveWidth"]]), y = {}, h = 0; h < g.length; ++h) {
            var c = g[h][1], p = g[h][0], d = f.getShallow(c);
            "inherit" === d ? y[p] = i[p] : "auto" === d && "lineWidth" === p ? y.lineWidth = i.lineWidth > 0 ? 2 : 0 : y[p] = d
        }
        if ("auto" === u.fill && (u.fill = r.fill), "auto" === u.stroke && (u.stroke = r.fill), "auto" === y.stroke && (y.stroke = r.fill), !a) {
            var v = e.get("inactiveBorderWidth"), m = u[t.indexOf("empty") > -1 ? "fill" : "stroke"];
            u.lineWidth = "auto" === v ? r.lineWidth > 0 && m ? 2 : 0 : u.lineWidth, u.fill = e.get("inactiveColor"), u.stroke = e.get("inactiveBorderColor"), y.stroke = n.get("inactiveColor"), y.lineWidth = n.get("inactiveWidth")
        }
        return {itemStyle: u, lineStyle: y}
    }

    function JM(t) {
        var e = t.icon || "roundRect", n = Sc(e, 0, 0, t.itemWidth, t.itemHeight, t.itemStyle.fill);
        return n.setStyle(t.itemStyle), n.rotation = (t.iconRotate || 0) * Math.PI / 180, n.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), e.indexOf("empty") > -1 && (n.style.stroke = n.style.fill, n.style.fill = "#fff", n.style.lineWidth = 2), n
    }

    function QM(t, e, n, i) {
        nI(t, e, n, i), n.dispatchAction({type: "legendToggleSelect", name: null != t ? t : e}), eI(t, e, n, i)
    }

    function tI(t) {
        for (var e, n = t.getZr().storage.getDisplayList(), i = 0, r = n.length; r > i && !(e = n[i].states.emphasis);) i++;
        return e && e.hoverLayer
    }

    function eI(t, e, n, i) {
        tI(n) || n.dispatchAction({type: "highlight", seriesName: t, name: e, excludeSeriesId: i})
    }

    function nI(t, e, n, i) {
        tI(n) || n.dispatchAction({type: "downplay", seriesName: t, name: e, excludeSeriesId: i})
    }

    function iI(t) {
        var e = t.findComponents({mainType: "legend"});
        e && e.length && t.filterSeries(function (t) {
            for (var n = 0; n < e.length; n++) if (!e[n].isSelected(t.name)) return !1;
            return !0
        })
    }

    function rI(t, e, n) {
        var i, r = {}, o = "toggleSelected" === t;
        return n.eachComponent("legend", function (n) {
            o && null != i ? n[i ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" === t ? n[t]() : (n[t](e.name), i = n.isSelected(e.name));
            var a = n.getData();
            y(a, function (t) {
                var e = t.get("name");
                if ("\n" !== e && "" !== e) {
                    var i = n.isSelected(e);
                    r[e] = r.hasOwnProperty(e) ? r[e] && i : i
                }
            })
        }), "allSelect" === t || "inverseSelect" === t ? {selected: r} : {name: e.name, selected: r}
    }

    function oI(t) {
        t.registerAction("legendToggleSelect", "legendselectchanged", S(rI, "toggleSelected")), t.registerAction("legendAllSelect", "legendselectall", S(rI, "allSelect")), t.registerAction("legendInverseSelect", "legendinverseselect", S(rI, "inverseSelect")), t.registerAction("legendSelect", "legendselected", S(rI, "select")), t.registerAction("legendUnSelect", "legendunselected", S(rI, "unSelect"))
    }

    function aI(t) {
        t.registerComponentModel(XZ), t.registerComponentView(jZ), t.registerProcessor(t.PRIORITY.PROCESSOR.SERIES_FILTER, iI), t.registerSubTypeDefaulter("legend", function () {
            return "plain"
        }), oI(t)
    }

    function sI(t, e, n) {
        var i = t.getOrient(), r = [1, 1];
        r[i.index] = 0, zl(e, n, {type: "box", ignoreSize: !!r})
    }

    function lI(t) {
        t.registerAction("legendScroll", "legendscroll", function (t, e) {
            var n = t.scrollDataIndex;
            null != n && e.eachComponent({mainType: "legend", subType: "scroll", query: t}, function (t) {
                t.setScrollDataIndex(n)
            })
        })
    }

    function uI(t) {
        df(aI), t.registerComponentModel(qZ), t.registerComponentView(QZ), lI(t)
    }

    function hI(t) {
        var e = t.get("confine");
        return null != e ? !!e : "richText" === t.get("renderMode")
    }

    function cI(t) {
        if (oA.domSupported) for (var e = document.documentElement.style, n = 0, i = t.length; i > n; n++) if (t[n] in e) return t[n]
    }

    function pI(t, e) {
        if (!t) return e;
        e = xl(e, !0);
        var n = t.indexOf(e);
        return t = -1 === n ? e : "-" + t.slice(0, n) + "-" + e, t.toLowerCase()
    }

    function dI(t, e) {
        var n = t.currentStyle || document.defaultView && document.defaultView.getComputedStyle(t);
        return n ? e ? n[e] : n : null
    }

    function fI(t) {
        return t = "left" === t ? "right" : "right" === t ? "left" : "top" === t ? "bottom" : "top"
    }

    function gI(t, e, n) {
        if (!T(n) || "inside" === n) return "";
        e = Cl(e);
        var i = fI(n), r = i + ":-6px;", o = rU + ":";
        p(["left", "right"], i) > -1 ? (r += "top:50%", o += "translateY(-50%) rotate(" + ("left" === i ? -225 : -45) + "deg)") : (r += "left:50%", o += "translateX(-50%) rotate(" + ("top" === i ? 225 : 45) + "deg)");
        var a = e + " solid 1px;",
            s = ["position:absolute;width:10px;height:10px;", r + ";" + o + ";", "border-bottom:" + a, "border-right:" + a, "background-color:" + t + ";", "box-shadow:8px 8px 16px -3px #000;"];
        return '<div style="' + s.join("") + '"></div>'
    }

    function yI(t, e) {
        var n = "cubic-bezier(0.23,1,0.32,1)", i = " " + t / 2 + "s " + n, r = "opacity" + i + ",visibility" + i;
        return e || (i = " " + t + "s " + n, r += oA.transformSupported ? "," + rU + i : ",left" + i + ",top" + i), iU + ":" + r
    }

    function vI(t, e, n) {
        var i = t.toFixed(0) + "px", r = e.toFixed(0) + "px";
        if (!oA.transformSupported) return n ? "top:" + r + ";left:" + i + ";" : [["top", r], ["left", i]];
        var o = oA.transform3dSupported, a = "translate" + (o ? "3d" : "") + "(" + i + "," + r + (o ? ",0" : "") + ")";
        return n ? "top:0;left:0;" + rU + ":" + a + ";" : [["top", 0], ["left", 0], [eU, a]]
    }

    function mI(t) {
        var e = [], n = t.get("fontSize"), i = t.getTextColor();
        i && e.push("color:" + i), e.push("font:" + t.getFont()), n && e.push("line-height:" + Math.round(3 * n / 2) + "px");
        var r = t.get("textShadowColor"), o = t.get("textShadowBlur") || 0, a = t.get("textShadowOffsetX") || 0,
            s = t.get("textShadowOffsetY") || 0;
        return r && o && e.push("text-shadow:" + a + "px " + s + "px " + o + "px " + r), y(["decoration", "align"], function (n) {
            var i = t.get(n);
            i && e.push("text-" + n + ":" + i)
        }), e.join(";")
    }

    function xI(t, e, n) {
        var i = [], r = t.get("transitionDuration"), o = t.get("backgroundColor"), a = t.get("shadowBlur"),
            s = t.get("shadowColor"), l = t.get("shadowOffsetX"), u = t.get("shadowOffsetY"),
            h = t.getModel("textStyle"), c = gh(t, "html"), p = l + "px " + u + "px " + a + "px " + s;
        return i.push("box-shadow:" + p), e && r && i.push(yI(r, n)), o && (oA.canvasSupported ? i.push("background-color:" + o) : (i.push("background-color:#" + hn(o)), i.push("filter:alpha(opacity=70)"))), y(["width", "color", "radius"], function (e) {
            var n = "border-" + e, r = xl(n), o = t.get(r);
            null != o && i.push(n + ":" + o + ("color" === e ? "" : "px"))
        }), i.push(mI(h)), null != c && i.push("padding:" + oR(c).join("px ") + "px"), i.join(";") + ";"
    }

    function _I(t, e, n, i, r) {
        var o = e && e.painter;
        if (n) {
            var a = o && o.getViewportRoot();
            a && _e(t, a, document.body, i, r)
        } else {
            t[0] = i, t[1] = r;
            var s = o && o.getViewportRootOffset();
            s && (t[0] += s.offsetLeft, t[1] += s.offsetTop)
        }
        t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight()
    }

    function bI(t) {
        return Math.max(0, t)
    }

    function wI(t) {
        var e = bI(t.shadowBlur || 0), n = bI(t.shadowOffsetX || 0), i = bI(t.shadowOffsetY || 0);
        return {left: bI(e - n), right: bI(e + n), top: bI(e - i), bottom: bI(e + i)}
    }

    function SI(t, e, n, i) {
        t[0] = n, t[1] = i, t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight()
    }

    function MI(t, e, n) {
        var i, r = e.ecModel;
        n ? (i = new VO(n, r, r), i = new VO(e.option, i, r)) : i = e;
        for (var o = t.length - 1; o >= 0; o--) {
            var a = t[o];
            a && (a instanceof VO && (a = a.get("tooltip", !0)), T(a) && (a = {formatter: a}), a && (i = new VO(a, i, r)))
        }
        return i
    }

    function II(t, e) {
        return t.dispatchAction || xA(e.dispatchAction, e)
    }

    function TI(t, e, n, i, r, o, a) {
        var s = n.getOuterSize(), l = s.width, u = s.height;
        return null != o && (t + l + o + 2 > i ? t -= l + o : t += o), null != a && (e + u + a > r ? e -= u + a : e += a), [t, e]
    }

    function CI(t, e, n, i, r) {
        var o = n.getOuterSize(), a = o.width, s = o.height;
        return t = Math.min(t + a, i) - a, e = Math.min(e + s, r) - s, t = Math.max(t, 0), e = Math.max(e, 0), [t, e]
    }

    function AI(t, e, n) {
        var i = n[0], r = n[1], o = 10, a = 5, s = 0, l = 0, u = e.width, h = e.height;
        switch (t) {
            case"inside":
                s = e.x + u / 2 - i / 2, l = e.y + h / 2 - r / 2;
                break;
            case"top":
                s = e.x + u / 2 - i / 2, l = e.y - r - o;
                break;
            case"bottom":
                s = e.x + u / 2 - i / 2, l = e.y + h + o;
                break;
            case"left":
                s = e.x - i - o - a, l = e.y + h / 2 - r / 2;
                break;
            case"right":
                s = e.x + u + o + a, l = e.y + h / 2 - r / 2
        }
        return [s, l]
    }

    function DI(t) {
        return "center" === t || "middle" === t
    }

    function LI(t, e, n) {
        var i = cr(t).queryOptionMap, r = i.keys()[0];
        if (r && "series" !== r) {
            var o = pr(e, r, i.get(r), {useDefault: !1, enableAll: !1, enableNone: !1}), a = o.models[0];
            if (a) {
                var s, l = n.getViewOfComponentModel(a);
                return l.group.traverse(function (e) {
                    var n = tP(e).tooltipConfig;
                    return n && n.name === t.name ? (s = e, !0) : void 0
                }), s ? {componentMainType: r, componentIndex: a.componentIndex, el: s} : void 0
            }
        }
    }

    function kI(t) {
        df(fM), t.registerComponentModel(tU), t.registerComponentView(pU), t.registerAction({
            type: "showTip",
            event: "showTip",
            update: "tooltip:manuallyShowTip"
        }, function () {
        }), t.registerAction({type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip"}, function () {
        })
    }

    function PI(t, e) {
        if (!t) return !1;
        for (var n = M(t) ? t : [t], i = 0; i < n.length; i++) if (n[i] && n[i][e]) return !0;
        return !1
    }

    function OI(t) {
        Wi(t, "label", ["show"])
    }

    function RI(t) {
        return !(isNaN(parseFloat(t.x)) && isNaN(parseFloat(t.y)))
    }

    function zI(t) {
        return !isNaN(parseFloat(t.x)) && !isNaN(parseFloat(t.y))
    }

    function EI(t, e, n, i, r, o) {
        var a = [], s = dd(e, i), l = s ? e.getCalculationInfo("stackResultDimension") : i, u = HI(e, l, t),
            h = e.indicesOfNearest(l, u)[0];
        a[r] = e.get(n, h), a[o] = e.get(l, h);
        var c = e.get(i, h), p = Si(e.get(i, h));
        return p = Math.min(p, 20), p >= 0 && (a[o] = +a[o].toFixed(p)), [a, c]
    }

    function NI(t, e) {
        var n = t.getData(), i = t.coordinateSystem;
        if (e && !zI(e) && !M(e.coord) && i) {
            var r = i.dimensions, o = BI(e, n, i, t);
            if (e = s(e), e.type && yU[e.type] && o.baseAxis && o.valueAxis) {
                var a = p(r, o.baseAxis.dim), l = p(r, o.valueAxis.dim),
                    u = yU[e.type](n, o.baseDataDim, o.valueDataDim, a, l);
                e.coord = u[0], e.value = u[1]
            } else {
                for (var h = [null != e.xAxis ? e.xAxis : e.radiusAxis, null != e.yAxis ? e.yAxis : e.angleAxis], c = 0; 2 > c; c++) yU[h[c]] && (h[c] = HI(n, n.mapDimension(r[c]), h[c]));
                e.coord = h
            }
        }
        return e
    }

    function BI(t, e, n, i) {
        var r = {};
        return null != t.valueIndex || null != t.valueDim ? (r.valueDataDim = null != t.valueIndex ? e.getDimension(t.valueIndex) : t.valueDim, r.valueAxis = n.getAxis(VI(i, r.valueDataDim)), r.baseAxis = n.getOtherAxis(r.valueAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim)) : (r.baseAxis = i.getBaseAxis(), r.valueAxis = n.getOtherAxis(r.baseAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim), r.valueDataDim = e.mapDimension(r.valueAxis.dim)), r
    }

    function VI(t, e) {
        var n = t.getData(), i = n.dimensions;
        e = n.getDimension(e);
        for (var r = 0; r < i.length; r++) {
            var o = n.getDimensionInfo(i[r]);
            if (o.name === e) return o.coordDim
        }
    }

    function FI(t, e) {
        return t && t.containData && e.coord && !RI(e) ? t.containData(e.coord) : !0
    }

    function GI(t, e, n, i) {
        return 2 > i ? t.coord && t.coord[i] : t.value
    }

    function HI(t, e, n) {
        if ("average" === n) {
            var i = 0, r = 0;
            return t.each(e, function (t) {
                isNaN(t) || (i += t, r++)
            }), i / r
        }
        return "median" === n ? t.getMedian(e) : t.getDataExtent(e)["max" === n ? 1 : 0]
    }

    function WI(t, e, n) {
        var i = e.coordinateSystem;
        t.each(function (r) {
            var o, a = t.getItemModel(r), s = _i(a.get("x"), n.getWidth()), l = _i(a.get("y"), n.getHeight());
            if (isNaN(s) || isNaN(l)) {
                if (e.getMarkerPosition) o = e.getMarkerPosition(t.getValues(t.dimensions, r)); else if (i) {
                    var u = t.get(i.dimensions[0], r), h = t.get(i.dimensions[1], r);
                    o = i.dataToPoint([u, h])
                }
            } else o = [s, l];
            isNaN(s) || (o[0] = s), isNaN(l) || (o[1] = l), t.setItemLayout(r, o)
        })
    }

    function XI(t, e, n) {
        var i;
        i = t ? v(t && t.dimensions, function (t) {
            var n = e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {};
            return c({name: t}, n)
        }) : [{name: "value", type: "float"}];
        var r = new fV(i, n), o = v(n.get("data"), S(NI, e));
        return t && (o = x(o, S(FI, t))), r.initData(o, null, t ? GI : function (t) {
            return t.value
        }), r
    }

    function YI(t) {
        t.registerComponentModel(gU), t.registerComponentView(xU), t.registerPreprocessor(function (t) {
            PI(t.series, "markPoint") && (t.markPoint = t.markPoint || {})
        })
    }

    function ZI(t) {
        return !isNaN(t) && !isFinite(t)
    }

    function UI(t, e, n, i) {
        var r = 1 - t, o = i.dimensions[t];
        return ZI(e[r]) && ZI(n[r]) && e[t] === n[t] && i.getAxis(o).containData(e[t])
    }

    function jI(t, e) {
        if ("cartesian2d" === t.type) {
            var n = e[0].coord, i = e[1].coord;
            if (n && i && (UI(1, n, i, t) || UI(0, n, i, t))) return !0
        }
        return FI(t, e[0]) && FI(t, e[1])
    }

    function qI(t, e, n, i, r) {
        var o, a = i.coordinateSystem, s = t.getItemModel(e), l = _i(s.get("x"), r.getWidth()),
            u = _i(s.get("y"), r.getHeight());
        if (isNaN(l) || isNaN(u)) {
            if (i.getMarkerPosition) o = i.getMarkerPosition(t.getValues(t.dimensions, e)); else {
                var h = a.dimensions, c = t.get(h[0], e), p = t.get(h[1], e);
                o = a.dataToPoint([c, p])
            }
            if (Yf(a, "cartesian2d")) {
                var d = a.getAxis("x"), f = a.getAxis("y"), h = a.dimensions;
                ZI(t.get(h[0], e)) ? o[0] = d.toGlobalCoord(d.getExtent()[n ? 0 : 1]) : ZI(t.get(h[1], e)) && (o[1] = f.toGlobalCoord(f.getExtent()[n ? 0 : 1]))
            }
            isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u)
        } else o = [l, u];
        t.setItemLayout(e, o)
    }

    function KI(t, e, n) {
        var i;
        i = t ? v(t && t.dimensions, function (t) {
            var n = e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {};
            return c({name: t}, n)
        }) : [{name: "value", type: "float"}];
        var r = new fV(i, n), o = new fV(i, n), a = new fV([], n), s = v(n.get("data"), S(wU, e, t, n));
        t && (s = x(s, S(jI, t)));
        var l = t ? GI : function (t) {
            return t.value
        };
        return r.initData(v(s, function (t) {
            return t[0]
        }), null, l), o.initData(v(s, function (t) {
            return t[1]
        }), null, l), a.initData(v(s, function (t) {
            return t[2]
        })), a.hasItemOption = !0, {from: r, to: o, line: a}
    }

    function $I(t) {
        t.registerComponentModel(_U), t.registerComponentView(SU), t.registerPreprocessor(function (t) {
            PI(t.series, "markLine") && (t.markLine = t.markLine || {})
        })
    }

    function JI(t) {
        return !isNaN(t) && !isFinite(t)
    }

    function QI(t, e, n) {
        var i = 1 - t;
        return JI(e[i]) && JI(n[i])
    }

    function tT(t, e) {
        var n = e.coord[0], i = e.coord[1];
        return Yf(t, "cartesian2d") && n && i && (QI(1, n, i, t) || QI(0, n, i, t)) ? !0 : FI(t, {
            coord: n,
            x: e.x0,
            y: e.y0
        }) || FI(t, {coord: i, x: e.x1, y: e.y1})
    }

    function eT(t, e, n, i, r) {
        var o, a = i.coordinateSystem, s = t.getItemModel(e), l = _i(s.get(n[0]), r.getWidth()),
            u = _i(s.get(n[1]), r.getHeight());
        if (isNaN(l) || isNaN(u)) {
            if (i.getMarkerPosition) o = i.getMarkerPosition(t.getValues(n, e)); else {
                var h = t.get(n[0], e), c = t.get(n[1], e), p = [h, c];
                a.clampData && a.clampData(p, p), o = a.dataToPoint(p, !0)
            }
            if (Yf(a, "cartesian2d")) {
                var d = a.getAxis("x"), f = a.getAxis("y"), h = t.get(n[0], e), c = t.get(n[1], e);
                JI(h) ? o[0] = d.toGlobalCoord(d.getExtent()["x0" === n[0] ? 0 : 1]) : JI(c) && (o[1] = f.toGlobalCoord(f.getExtent()["y0" === n[1] ? 0 : 1]))
            }
            isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u)
        } else o = [l, u];
        return o
    }

    function nT(t, e, n) {
        var i, r, o = ["x0", "y0", "x1", "y1"];
        t ? (i = v(t && t.dimensions, function (t) {
            var n = e.getData(), i = n.getDimensionInfo(n.mapDimension(t)) || {};
            return c({name: t}, i)
        }), r = new fV(v(o, function (t, e) {
            return {name: t, type: i[e % 2].type}
        }), n)) : (i = [{name: "value", type: "float"}], r = new fV(i, n));
        var a = v(n.get("data"), S(TU, e, t, n));
        t && (a = x(a, S(tT, t)));
        var s = t ? function (t, e, n, i) {
            return t.coord[Math.floor(i / 2)][i % 2]
        } : function (t) {
            return t.value
        };
        return r.initData(a, null, s), r.hasItemOption = !0, r
    }

    function iT(t) {
        t.registerComponentModel(MU), t.registerComponentView(AU), t.registerPreprocessor(function (t) {
            PI(t.series, "markArea") && (t.markArea = t.markArea || {})
        })
    }

    function rT(t, e) {
        if (e = e || t.get("type")) switch (e) {
            case"category":
                return new _V({ordinalMeta: t.getCategories(), extent: [1 / 0, -1 / 0]});
            case"time":
                return new AV({locale: t.ecModel.getLocaleModel(), useUTC: t.ecModel.get("useUTC")});
            default:
                return new wV
        }
    }

    function oT(t, e) {
        return kl(t.getBoxLayoutParams(), {width: e.getWidth(), height: e.getHeight()}, t.get("padding"))
    }

    function aT(t, e, n, i) {
        var r = i.style, o = Ss(t.get(["controlStyle", e]), i || {}, new $D(n[0], n[1], n[2], n[3]));
        return r && o.setStyle(r), o
    }

    function sT(t, e, n, i, r, o) {
        var a = e.get("color");
        if (r) r.setColor(a), n.add(r), o && o.onUpdate(r); else {
            var s = t.get("symbol");
            r = Sc(s, -1, -1, 2, 2, a), r.setStyle("strokeNoScale", !0), n.add(r), o && o.onCreate(r)
        }
        var u = e.getItemStyle(["color"]);
        r.setStyle(u), i = l({rectHover: !0, z2: 100}, i, !0);
        var h = t.get("symbolSize");
        h = h instanceof Array ? h.slice() : [+h, +h], i.scaleX = h[0] / 2, i.scaleY = h[1] / 2;
        var c = t.get("symbolOffset");
        c && (i.x = i.x || 0, i.y = i.y || 0, i.x += _i(c[0], h[0]), i.y += _i(c[1], h[1]));
        var p = t.get("symbolRotate");
        return i.rotation = (p || 0) * Math.PI / 180 || 0, r.attr(i), r.updateTransform(), r
    }

    function lT(t, e, n, i, r, o) {
        if (!t.dragging) {
            var a = r.getModel("checkpointStyle"), s = i.dataToCoord(r.getData().get("value", n));
            if (o || !a.get("animation", !0)) t.attr({x: s, y: 0}), e && e.attr({shape: {x2: s}}); else {
                var l = {duration: a.get("animationDuration", !0), easing: a.get("animationEasing", !0)};
                t.stopAnimation(null, !0), t.animateTo({x: s, y: 0}, l), e && e.animateTo({shape: {x2: s}}, l)
            }
        }
    }

    function uT(t) {
        t.registerAction({
            type: "timelineChange",
            event: "timelineChanged",
            update: "prepareAndUpdate"
        }, function (t, e) {
            var n = e.getComponent("timeline");
            return n && null != t.currentIndex && (n.setCurrentIndex(t.currentIndex), !n.get("loop", !0) && n.isIndexMax() && n.setPlayState(!1)), e.resetOption("timeline", {replaceMerge: n.get("replaceMerge", !0)}), c({currentIndex: n.option.currentIndex}, t)
        }), t.registerAction({
            type: "timelinePlayChange",
            event: "timelinePlayChanged",
            update: "update"
        }, function (t, e) {
            var n = e.getComponent("timeline");
            n && null != t.playState && n.setPlayState(t.playState)
        })
    }

    function hT(t) {
        var e = t && t.timeline;
        M(e) || (e = e ? [e] : []), y(e, function (t) {
            t && cT(t)
        })
    }

    function cT(t) {
        var e = t.type, n = {number: "value", time: "time"};
        if (n[e] && (t.axisType = n[e], delete t.type), pT(t), dT(t, "controlPosition")) {
            var i = t.controlStyle || (t.controlStyle = {});
            dT(i, "position") || (i.position = t.controlPosition), "none" !== i.position || dT(i, "show") || (i.show = !1, delete i.position), delete t.controlPosition
        }
        y(t.data || [], function (t) {
            D(t) && !M(t) && (!dT(t, "value") && dT(t, "name") && (t.value = t.name), pT(t))
        })
    }

    function pT(t) {
        var e = t.itemStyle || (t.itemStyle = {}), n = e.emphasis || (e.emphasis = {}), i = t.label || t.label || {},
            r = i.normal || (i.normal = {}), o = {normal: 1, emphasis: 1};
        y(i, function (t, e) {
            o[e] || dT(r, e) || (r[e] = t)
        }), n.label && !dT(i, "emphasis") && (i.emphasis = n.label, delete n.label)
    }

    function dT(t, e) {
        return t.hasOwnProperty(e)
    }

    function fT(t) {
        t.registerComponentModel(LU), t.registerComponentView(zU), t.registerSubTypeDefaulter("timeline", function () {
            return "slider"
        }), uT(t), t.registerPreprocessor(hT)
    }

    function gT(t) {
        var e = t.get("coordinateSystem");
        return p(NU, e) >= 0
    }

    function yT(t) {
        return t + "Axis"
    }

    function vT(t, e) {
        function n(t) {
            !l.get(t.uid) && r(t) && (i(t), u = !0)
        }

        function i(t) {
            l.set(t.uid, !0), s.push(t), o(t)
        }

        function r(t) {
            var e = !1;
            return t.eachTargetAxis(function (t, n) {
                var i = a.get(t);
                i && i[n] && (e = !0)
            }), e
        }

        function o(t) {
            t.eachTargetAxis(function (t, e) {
                (a.get(t) || a.set(t, []))[e] = !0
            })
        }

        var a = Z(), s = [], l = Z();
        t.eachComponent({mainType: "dataZoom", query: e}, function (t) {
            l.get(t.uid) || i(t)
        });
        var u;
        do u = !1, t.eachComponent("dataZoom", n); while (u);
        return s
    }

    function mT(t) {
        var e = t.ecModel, n = {infoList: [], infoMap: Z()};
        return t.eachTargetAxis(function (t, i) {
            var r = e.getComponent(yT(t), i);
            if (r) {
                var o = r.getCoordSysModel();
                if (o) {
                    var a = o.uid, s = n.infoMap.get(a);
                    s || (s = {model: o, axisModels: []}, n.infoList.push(s), n.infoMap.set(a, s)), s.axisModels.push(r)
                }
            }
        }), n
    }

    function xT(t) {
        var e = {};
        return y(["start", "end", "startValue", "endValue", "throttle"], function (n) {
            t.hasOwnProperty(n) && (e[n] = t[n])
        }), e
    }

    function _T(t, e, n) {
        HU(t).coordSysRecordMap.each(function (t) {
            var i = t.dataZoomInfoMap.get(e.uid);
            i && (i.getRange = n)
        })
    }

    function bT(t, e) {
        for (var n = HU(t).coordSysRecordMap, i = n.keys(), r = 0; r < i.length; r++) {
            var o = i[r], a = n.get(o), s = a.dataZoomInfoMap;
            if (s) {
                var l = e.uid, u = s.get(l);
                u && (s.removeKey(l), s.keys().length || wT(n, a))
            }
        }
    }

    function wT(t, e) {
        if (e) {
            t.removeKey(e.model.uid);
            var n = e.controller;
            n && n.dispose()
        }
    }

    function ST(t, e) {
        var n = {model: e, containsPoint: S(IT, e), dispatchAction: S(MT, t), dataZoomInfoMap: null, controller: null},
            i = n.controller = new rH(t.getZr());
        return y(["pan", "zoom", "scrollMove"], function (t) {
            i.on(t, function (e) {
                var i = [];
                n.dataZoomInfoMap.each(function (r) {
                    if (e.isAvailableBehavior(r.model.option)) {
                        var o = (r.getRange || {})[t],
                            a = o && o(r.dzReferCoordSysInfo, n.model.mainType, n.controller, e);
                        !r.model.get("disabled", !0) && a && i.push({dataZoomId: r.model.id, start: a[0], end: a[1]})
                    }
                }), i.length && n.dispatchAction(i)
            })
        }), n
    }

    function MT(t, e) {
        t.dispatchAction({type: "dataZoom", animation: {easing: "cubicOut", duration: 100}, batch: e})
    }

    function IT(t, e, n, i) {
        return t.coordinateSystem.containPoint([n, i])
    }

    function TT(t) {
        var e, n = "type_", i = {type_true: 2, type_move: 1, type_false: 0, type_undefined: -1}, r = !0;
        return t.each(function (t) {
            var o = t.model, a = o.get("disabled", !0) ? !1 : o.get("zoomLock", !0) ? "move" : !0;
            i[n + a] > i[n + e] && (e = a), r = r && o.get("preventDefaultMouseMove", !0)
        }), {
            controlType: e,
            opt: {zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !0, preventDefaultMouseMove: !!r}
        }
    }

    function CT(t) {
        t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER, function (t, e) {
            var n = HU(e), i = n.coordSysRecordMap || (n.coordSysRecordMap = Z());
            i.each(function (t) {
                t.dataZoomInfoMap = null
            }), t.eachComponent({mainType: "dataZoom", subType: "inside"}, function (t) {
                var n = mT(t);
                y(n.infoList, function (n) {
                    var r = n.model.uid, o = i.get(r) || i.set(r, ST(e, n.model)),
                        a = o.dataZoomInfoMap || (o.dataZoomInfoMap = Z());
                    a.set(t.uid, {dzReferCoordSysInfo: n, model: t, getRange: null})
                })
            }), i.each(function (t) {
                var e, n = t.controller, r = t.dataZoomInfoMap;
                if (r) {
                    var o = r.keys()[0];
                    null != o && (e = r.get(o))
                }
                if (!e) return void wT(i, t);
                var a = TT(r);
                n.enable(a.controlType, a.opt), n.setPointerChecker(t.containsPoint), Oh(t, "dispatchAction", e.model.get("throttle", !0), "fixRate")
            })
        })
    }

    function AT(t) {
        return function (e, n, i, r) {
            var o = this.range, a = o.slice(), s = e.axisModels[0];
            if (s) {
                var l = t(a, s, e, n, i, r);
                return qx(l, a, [0, 100], "all"), this.range = a, o[0] !== a[0] || o[1] !== a[1] ? a : void 0
            }
        }
    }

    function DT(t, e, n) {
        var i = [1 / 0, -1 / 0];
        ZU(n, function (t) {
            lf(i, t.getData(), e)
        });
        var r = t.getAxisModel(), o = Ud(r.axis.scale, r, i).calculate();
        return [o.min, o.max]
    }

    function LT(t) {
        t.registerAction("dataZoom", function (t, e) {
            var n = vT(e, t);
            y(n, function (e) {
                e.setRawRange({start: t.start, end: t.end, startValue: t.startValue, endValue: t.endValue})
            })
        })
    }

    function kT(t) {
        KU || (KU = !0, t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER, qU), LT(t), t.registerSubTypeDefaulter("dataZoom", function () {
            return "slider"
        }))
    }

    function PT(t) {
        kT(t), t.registerComponentModel(FU), t.registerComponentView(WU), CT(t)
    }

    function OT(t) {
        var e = {x: "y", y: "x", radius: "angle", angle: "radius"};
        return e[t]
    }

    function RT(t) {
        return "vertical" === t ? "ns-resize" : "ew-resize"
    }

    function zT(t) {
        t.registerComponentModel($U), t.registerComponentView(lj), kT(t)
    }

    function ET() {
        df(PT), df(zT)
    }

    function NT(t, e) {
        var n = Hi(t ? t.brush : []);
        if (n.length) {
            var i = [];
            y(n, function (t) {
                var e = t.hasOwnProperty("toolbox") ? t.toolbox : [];
                e instanceof Array && (i = i.concat(e))
            });
            var r = t && t.toolbox;
            M(r) && (r = r[0]), r || (r = {feature: {}}, t.toolbox = [r]);
            var o = r.feature || (r.feature = {}), a = o.brush || (o.brush = {}), s = a.type || (a.type = []);
            s.push.apply(s, i), BT(s), e && !s.length && s.push.apply(s, uj)
        }
    }

    function BT(t) {
        var e = {};
        y(t, function (t) {
            e[t] = 1
        }), t.length = 0, y(e, function (e, n) {
            t.push(n)
        })
    }

    function VT(t) {
        if (t) for (var e in t) if (t.hasOwnProperty(e)) return !0
    }

    function FT(t, e, n) {
        function i() {
            var t = function () {
            };
            t.prototype.__hidden = t.prototype;
            var e = new t;
            return e
        }

        var r = {};
        return hj(e, function (e) {
            var o = r[e] = i();
            hj(t[e], function (t, i) {
                if (EH.isValidType(i)) {
                    var r = {type: i, visual: t};
                    n && n(r, e), o[i] = new EH(r), "opacity" === i && (r = s(r), r.type = "colorAlpha", o.__hidden.__alphaForOpacity = new EH(r))
                }
            })
        }), r
    }

    function GT(t, e, n) {
        var i;
        y(n, function (t) {
            e.hasOwnProperty(t) && VT(e[t]) && (i = !0)
        }), i && y(n, function (n) {
            e.hasOwnProperty(n) && VT(e[n]) ? t[n] = s(e[n]) : delete t[n]
        })
    }

    function HT(t, e, n, i, r, o) {
        function a(t) {
            return jh(n, h, t)
        }

        function s(t, e) {
            Kh(n, h, t, e)
        }

        function l(t, l) {
            h = null == o ? t : l;
            var c = n.getRawDataItem(h);
            if (!c || c.visualMap !== !1) for (var p = i.call(r, t), d = e[p], f = u[p], g = 0, y = f.length; y > g; g++) {
                var v = f[g];
                d[v] && d[v].applyVisual(t, a, s)
            }
        }

        var u = {};
        y(t, function (t) {
            var n = EH.prepareVisualTypes(e[t]);
            u[t] = n
        });
        var h;
        null == o ? n.each(l) : n.each([o], l)
    }

    function WT(t, e, n, i) {
        var r = {};
        return y(t, function (t) {
            var n = EH.prepareVisualTypes(e[t]);
            r[t] = n
        }), {
            progress: function (t, o) {
                function a(t) {
                    return jh(o, u, t)
                }

                function s(t, e) {
                    Kh(o, u, t, e)
                }

                var l;
                null != i && (l = o.getDimension(i));
                for (var u; null != (u = t.next());) {
                    var h = o.getRawDataItem(u);
                    if (!h || h.visualMap !== !1) for (var c = null != i ? o.get(l, u) : u, p = n(c), d = e[p], f = r[p], g = 0, y = f.length; y > g; g++) {
                        var v = f[g];
                        d[v] && d[v].applyVisual(c, a, s)
                    }
                }
            }
        }
    }

    function XT(t) {
        var e = t.brushType, n = {
            point: function (i) {
                return cj[e].point(i, n, t)
            }, rect: function (i) {
                return cj[e].rect(i, n, t)
            }
        };
        return n
    }

    function YT(t) {
        var e = ["x", "y"], n = ["width", "height"];
        return {
            point: function (e, n, i) {
                if (e) {
                    var r = i.range, o = e[t];
                    return ZT(o, r)
                }
            }, rect: function (i, r, o) {
                if (i) {
                    var a = o.range, s = [i[e[t]], i[e[t]] + i[n[t]]];
                    return s[1] < s[0] && s.reverse(), ZT(s[0], a) || ZT(s[1], a) || ZT(a[0], s) || ZT(a[1], s)
                }
            }
        }
    }

    function ZT(t, e) {
        return e[0] <= t && t <= e[1]
    }

    function UT(t) {
        return t[0] > t[1] && t.reverse(), t
    }

    function jT(t, e) {
        return hr(t, e, {includeMainTypes: pj})
    }

    function qT(t, e, n, i) {
        var r = n.getAxis(["x", "y"][t]), o = UT(v([0, 1], function (t) {
            return e ? r.coordToData(r.toLocalCoord(i[t]), !0) : r.toGlobalCoord(r.dataToCoord(i[t]))
        })), a = [];
        return a[t] = o, a[1 - t] = [0 / 0, 0 / 0], {values: o, xyMinMax: a}
    }

    function KT(t, e, n, i) {
        return [e[0] - i[t] * n[0], e[1] - i[t] * n[1]]
    }

    function $T(t, e) {
        var n = JT(t), i = JT(e), r = [n[0] / i[0], n[1] / i[1]];
        return isNaN(r[0]) && (r[0] = 1), isNaN(r[1]) && (r[1] = 1), r
    }

    function JT(t) {
        return t ? [t[0][1] - t[0][0], t[1][1] - t[1][0]] : [0 / 0, 0 / 0]
    }

    function QT(t) {
        t.eachComponent({mainType: "brush"}, function (e) {
            var n = e.brushTargetManager = new dj(e.option, t);
            n.setInputRanges(e.areas, t)
        })
    }

    function tC(t, e, n) {
        var i, r, o = [];
        t.eachComponent({mainType: "brush"}, function (t) {
            n && "takeGlobalCursor" === n.type && t.setBrushOption("brush" === n.key ? n.brushOption : {brushType: !1})
        }), QT(t), t.eachComponent({mainType: "brush"}, function (e, n) {
            function a(t) {
                return "all" === f || !!g[t]
            }

            function l(t) {
                return !!t.length
            }

            function u(t, e) {
                var n = t.coordinateSystem;
                _ = _ || n.hasAxisBrushed(), a(e) && n.eachActiveState(t.getData(), function (t, e) {
                    "active" === t && (m[e] = 1)
                })
            }

            function h(n, i, r) {
                if (n.brushSelector && !rC(e, i) && (y(b, function (i) {
                    e.brushTargetManager.controlSeries(i, n, t) && r.push(i), _ = _ || l(r)
                }), a(i) && l(r))) {
                    var o = n.getData();
                    o.each(function (t) {
                        iC(n, r, o, t) && (m[t] = 1)
                    })
                }
            }

            var p = {brushId: e.id, brushIndex: n, brushName: e.name, areas: s(e.areas), selected: []};
            o.push(p);
            var d = e.option, f = d.brushLink, g = [], m = [], x = [], _ = !1;
            n || (i = d.throttleType, r = d.throttleDelay);
            var b = v(e.areas, function (t) {
                var e = wj[t.brushType], n = c({boundingRect: e ? e(t) : void 0}, t);
                return n.selectors = XT(n), n
            }), w = FT(e.option, xj, function (t) {
                t.mappingMethod = "fixed"
            });
            M(f) && y(f, function (t) {
                g[t] = 1
            }), t.eachSeries(function (t, e) {
                var n = x[e] = [];
                "parallel" === t.subType ? u(t, e) : h(t, e, n)
            }), t.eachSeries(function (t, e) {
                var n = {seriesId: t.id, seriesIndex: e, seriesName: t.name, dataIndex: []};
                p.selected.push(n);
                var i = x[e], r = t.getData(), o = a(e) ? function (t) {
                    return m[t] ? (n.dataIndex.push(r.getRawIndex(t)), "inBrush") : "outOfBrush"
                } : function (e) {
                    return iC(t, i, r, e) ? (n.dataIndex.push(r.getRawIndex(e)), "inBrush") : "outOfBrush"
                };
                (a(e) ? _ : l(i)) && HT(xj, w, r, o)
            })
        }), eC(e, i, r, o, n)
    }

    function eC(t, e, n, i, r) {
        if (r) {
            var o = t.getZr();
            if (!o[bj]) {
                o[_j] || (o[_j] = nC);
                var a = Oh(o, _j, n, e);
                a(t, i)
            }
        }
    }

    function nC(t, e) {
        if (!t.isDisposed()) {
            var n = t.getZr();
            n[bj] = !0, t.dispatchAction({type: "brushSelect", batch: e}), n[bj] = !1
        }
    }

    function iC(t, e, n, i) {
        for (var r = 0, o = e.length; o > r; r++) {
            var a = e[r];
            if (t.brushSelector(i, n, a.selectors, a)) return !0
        }
    }

    function rC(t, e) {
        var n = t.option.seriesIndex;
        return null != n && "all" !== n && (M(n) ? p(n, e) < 0 : e !== n)
    }

    function oC(t) {
        return new $D(t[0][0], t[1][0], t[0][1] - t[0][0], t[1][1] - t[1][0])
    }

    function aC(t, e) {
        return l({
            brushType: t.brushType,
            brushMode: t.brushMode,
            transformable: t.transformable,
            brushStyle: new VO(t.brushStyle).getItemStyle(),
            removeOnClick: t.removeOnClick,
            z: t.z
        }, e, !0)
    }

    function sC(t, e) {
        Cj[t] = e
    }

    function lC(t) {
        return Cj[t]
    }

    function uC(t) {
        t.registerComponentView(Sj), t.registerComponentModel(Ij), t.registerPreprocessor(NT), t.registerVisual(t.PRIORITY.VISUAL.BRUSH, tC), t.registerAction({
            type: "brush",
            event: "brush",
            update: "updateVisual"
        }, function (t, e) {
            e.eachComponent({mainType: "brush", query: t}, function (e) {
                e.setAreas(t.areas)
            })
        }), t.registerAction({type: "brushSelect", event: "brushSelected", update: "none"}, function () {
        }), t.registerAction({type: "brushEnd", event: "brushEnd", update: "none"}, function () {
        }), sC("brush", Dj)
    }

    function hC(t, e, n) {
        if (n[0] === n[1]) return n.slice();
        for (var i = 200, r = (n[1] - n[0]) / i, o = n[0], a = [], s = 0; i >= s && o < n[1]; s++) a.push(o), o += r;
        return a.push(n[1]), a
    }

    function cC(t, e, n) {
        var i = t.option, r = i.align;
        if (null != r && "auto" !== r) return r;
        for (var o = {
            width: e.getWidth(),
            height: e.getHeight()
        }, a = "horizontal" === i.orient ? 1 : 0, s = Hj[a], l = [0, null, 10], u = {}, h = 0; 3 > h; h++) u[Hj[1 - a][h]] = l[h], u[s[h]] = 2 === h ? n[0] : i[s[h]];
        var c = [["x", "width", 3], ["y", "height", 0]][a], p = kl(u, o, i.padding);
        return s[(p.margin[c[2]] || 0) + p[c[0]] + .5 * p[c[1]] < .5 * o[c[1]] ? 0 : 1]
    }

    function pC(t, e) {
        return y(t || [], function (t) {
            null != t.dataIndex && (t.dataIndexInside = t.dataIndex, t.dataIndex = null), t.highlightKey = "visualMap" + (e ? e.componentIndex : "")
        }), t
    }

    function dC(t, e, n, i) {
        return new KP({
            shape: {points: t}, draggable: !!n, cursor: e, drift: n, onmousemove: function (t) {
                NA(t.event)
            }, ondragend: i
        })
    }

    function fC(t, e, n) {
        var i = Uj / 2, r = t.get("hoverLinkDataSize");
        return r && (i = Wj(r, e, n, !0) / 2), i
    }

    function gC(t) {
        var e = t.get("hoverLinkOnHandle");
        return !!(null == e ? t.get("realtime") : e)
    }

    function yC(t) {
        return "vertical" === t ? "ns-resize" : "ew-resize"
    }

    function vC(t, e, n, i) {
        function r(t) {
            return l[t]
        }

        function o(t, e) {
            l[t] = e
        }

        for (var a = e.targetVisuals[i], s = EH.prepareVisualTypes(a), l = {color: qh(t.getData(), "color")}, u = 0, h = s.length; h > u; u++) {
            var c = s[u], p = a["opacity" === c ? "__alphaForOpacity" : c];
            p && p.applyVisual(n, r, o)
        }
        return l.color
    }

    function mC(t) {
        var e = t && t.visualMap;
        M(e) || (e = e ? [e] : []), Qj(e, function (t) {
            if (t) {
                xC(t, "splitList") && !xC(t, "pieces") && (t.pieces = t.splitList, delete t.splitList);
                var e = t.pieces;
                e && M(e) && Qj(e, function (t) {
                    D(t) && (xC(t, "start") && !xC(t, "min") && (t.min = t.start), xC(t, "end") && !xC(t, "max") && (t.max = t.end))
                })
            }
        })
    }

    function xC(t, e) {
        return t && t.hasOwnProperty && t.hasOwnProperty(e)
    }

    function _C(t) {
        tq || (tq = !0, t.registerSubTypeDefaulter("visualMap", function (t) {
            return t.categories || (t.pieces ? t.pieces.length > 0 : t.splitNumber > 0) && !t.calculable ? "piecewise" : "continuous"
        }), t.registerAction(Kj, $j), y(Jj, function (e) {
            t.registerVisual(t.PRIORITY.VISUAL.COMPONENT, e)
        }), t.registerPreprocessor(mC))
    }

    function bC(t) {
        t.registerComponentModel(Fj), t.registerComponentView(qj), _C(t)
    }

    function wC(t, e) {
        var n = t.inverse;
        ("vertical" === t.orient ? !n : n) && e.reverse()
    }

    function SC(t) {
        t.registerComponentModel(eq), t.registerComponentView(iq), _C(t)
    }

    function MC() {
        df(bC), df(SC)
    }

    function IC(t) {
        t.registerComponentModel(rq), t.registerComponentView(oq), kT(t)
    }

    function TC(t) {
        return 0 === t.indexOf("my")
    }

    function CC(t) {
        var e = {}, n = [], i = [];
        return t.eachRawSeries(function (t) {
            var r = t.coordinateSystem;
            if (!r || "cartesian2d" !== r.type && "polar" !== r.type) n.push(t); else {
                var o = r.getBaseAxis();
                if ("category" === o.type) {
                    var a = o.dim + "_" + o.index;
                    e[a] || (e[a] = {categoryAxis: o, valueAxis: r.getOtherAxis(o), series: []}, i.push({
                        axisDim: o.dim,
                        axisIndex: o.index
                    })), e[a].series.push(t)
                } else n.push(t)
            }
        }), {seriesGroupByCategoryAxis: e, other: n, meta: i}
    }

    function AC(t) {
        var e = [];
        return y(t, function (t) {
            var n = t.categoryAxis, i = t.valueAxis, r = i.dim, o = [" "].concat(v(t.series, function (t) {
                return t.name
            })), a = [n.model.getCategories()];
            y(t.series, function (t) {
                var e = t.getRawData();
                a.push(t.getRawData().mapArray(e.mapDimension(r), function (t) {
                    return t
                }))
            });
            for (var s = [o.join(fq)], l = 0; l < a[0].length; l++) {
                for (var u = [], h = 0; h < a.length; h++) u.push(a[h][l]);
                s.push(u.join(fq))
            }
            e.push(s.join("\n"))
        }), e.join("\n\n" + dq + "\n\n")
    }

    function DC(t) {
        return v(t, function (t) {
            var e = t.getRawData(), n = [t.name], i = [];
            return e.each(e.dimensions, function () {
                for (var t = arguments.length, r = arguments[t - 1], o = e.getName(r), a = 0; t - 1 > a; a++) i[a] = arguments[a];
                n.push((o ? o + fq : "") + i.join(fq))
            }), n.join("\n")
        }).join("\n\n" + dq + "\n\n")
    }

    function LC(t) {
        var e = CC(t);
        return {
            value: x([AC(e.seriesGroupByCategoryAxis), DC(e.other)], function (t) {
                return !!t.replace(/[\n\t\s]/g, "")
            }).join("\n\n" + dq + "\n\n"), meta: e.meta
        }
    }

    function kC(t) {
        return t.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
    }

    function PC(t) {
        var e = t.slice(0, t.indexOf("\n"));
        return e.indexOf(fq) >= 0 ? !0 : void 0
    }

    function OC(t) {
        for (var e = t.split(/\n+/g), n = kC(e.shift()).split(gq), i = [], r = v(n, function (t) {
            return {name: t, data: []}
        }), o = 0; o < e.length; o++) {
            var a = kC(e[o]).split(gq);
            i.push(a.shift());
            for (var s = 0; s < a.length; s++) r[s] && (r[s].data[o] = a[s])
        }
        return {series: r, categories: i}
    }

    function RC(t) {
        for (var e = t.split(/\n+/g), n = kC(e.shift()), i = [], r = 0; r < e.length; r++) {
            var o = kC(e[r]);
            if (o) {
                var a = o.split(gq), s = "", l = void 0, u = !1;
                isNaN(a[0]) ? (u = !0, s = a[0], a = a.slice(1), i[r] = {
                    name: s,
                    value: []
                }, l = i[r].value) : l = i[r] = [];
                for (var h = 0; h < a.length; h++) l.push(+a[h]);
                1 === l.length && (u ? i[r].value = l[0] : i[r] = l[0])
            }
        }
        return {name: n, data: i}
    }

    function zC(t, e) {
        var n = t.split(new RegExp("\n*" + dq + "\n*", "g")), i = {series: []};
        return y(n, function (t, n) {
            if (PC(t)) {
                var r = OC(t), o = e[n], a = o.axisDim + "Axis";
                o && (i[a] = i[a] || [], i[a][o.axisIndex] = {data: r.categories}, i.series = i.series.concat(r.series))
            } else {
                var r = RC(t);
                i.series.push(r)
            }
        }), i
    }

    function EC(t, e) {
        return v(t, function (t, n) {
            var i = e && e[n];
            if (D(i) && !M(i)) {
                var r = D(t) && !M(t);
                r || (t = {value: t});
                var o = null != i.name && null == t.name;
                return t = c(t, i), o && delete t.name, t
            }
            return t
        })
    }

    function NC(t, e) {
        var n = GC(t);
        vq(e, function (e, i) {
            for (var r = n.length - 1; r >= 0; r--) {
                var o = n[r];
                if (o[i]) break
            }
            if (0 > r) {
                var a = t.queryComponents({mainType: "dataZoom", subType: "select", id: i})[0];
                if (a) {
                    var s = a.getPercentRange();
                    n[0][i] = {dataZoomId: i, start: s[0], end: s[1]}
                }
            }
        }), n.push(e)
    }

    function BC(t) {
        var e = GC(t), n = e[e.length - 1];
        e.length > 1 && e.pop();
        var i = {};
        return vq(n, function (t, n) {
            for (var r = e.length - 1; r >= 0; r--) if (t = e[r][n]) {
                i[n] = t;
                break
            }
        }), i
    }

    function VC(t) {
        mq(t).snapshots = null
    }

    function FC(t) {
        return GC(t).length
    }

    function GC(t) {
        var e = mq(t);
        return e.snapshots || (e.snapshots = [{}]), e.snapshots
    }

    function HC(t) {
        var e = {
            xAxisIndex: t.get("xAxisIndex", !0),
            yAxisIndex: t.get("yAxisIndex", !0),
            xAxisId: t.get("xAxisId", !0),
            yAxisId: t.get("yAxisId", !0)
        };
        return null == e.xAxisIndex && null == e.xAxisId && (e.xAxisIndex = "all"), null == e.yAxisIndex && null == e.yAxisId && (e.yAxisIndex = "all"), e
    }

    function WC(t, e) {
        t.setIconStatus("back", FC(e) > 1 ? "emphasis" : "normal")
    }

    function XC(t, e, n, i, r) {
        var o = n._isZoomActive;
        i && "takeGlobalCursor" === i.type && (o = "dataZoomSelect" === i.key ? i.dataZoomSelectActive : !1), n._isZoomActive = o, t.setIconStatus("zoom", o ? "emphasis" : "normal");
        var a = new dj(HC(t), e, {include: ["grid"]}), s = a.makePanelOpts(r, function (t) {
            return t.xAxisDeclared && !t.yAxisDeclared ? "lineX" : !t.xAxisDeclared && t.yAxisDeclared ? "lineY" : "rect"
        });
        n._brushController.setPanels(s).enableBrush(o && s.length ? {
            brushType: "auto",
            brushStyle: t.getModel("brushStyle").getItemStyle()
        } : !1)
    }

    function YC(t) {
        t.registerComponentModel(aq), t.registerComponentView(sq), sC("saveAsImage", lq), sC("magicType", cq), sC("dataView", yq), sC("dataZoom", wq), sC("restore", xq), df(IC)
    }

    function ZC(t, e, n, i) {
        var r = n.type, o = q(Iq, r) ? Iq[r] : es(r), a = new o(n);
        e.add(a), i.set(t, a), Mq(a).__ecGraphicId = t
    }

    function UC(t, e) {
        var n = t && t.parent;
        n && ("group" === t.type && t.traverse(function (t) {
            UC(t, e)
        }), e.removeKey(Mq(t).__ecGraphicId), n.remove(t))
    }

    function jC(t) {
        return t = h({}, t), y(["id", "parentId", "$action", "hv", "bounding", "textContent"].concat(cR), function (e) {
            delete t[e]
        }), t
    }

    function qC(t, e) {
        var n;
        return y(e, function (e) {
            null != t[e] && "auto" !== t[e] && (n = !0)
        }), n
    }

    function KC(t, e) {
        var n = t.existing;
        if (e.id = t.keyInfo.id, !e.type && n && (e.type = n.type), null == e.parentId) {
            var i = e.parentOption;
            i ? e.parentId = i.id : n && (e.parentId = n.parentId)
        }
        e.parentOption = null
    }

    function $C(t, e, n) {
        var i = h({}, n), r = t[e], o = n.$action || "merge";
        "merge" === o ? r ? (l(r, i, !0), zl(r, i, {ignoreSize: !0}), Nl(n, r)) : t[e] = i : "replace" === o ? t[e] = i : "remove" === o && r && (t[e] = null)
    }

    function JC(t, e) {
        if (t && (t.hv = e.hv = [qC(e, ["left", "right"]), qC(e, ["top", "bottom"])], "group" === t.type)) {
            var n = t, i = e;
            null == n.width && (n.width = i.width = 0), null == n.height && (n.height = i.height = 0)
        }
    }

    function QC(t, e, n) {
        var i = tP(t).eventData;
        t.silent || t.ignore || i || (i = tP(t).eventData = {
            componentType: "graphic",
            componentIndex: e.componentIndex,
            name: t.name
        }), i && (i.info = n.info)
    }

    function tA(t) {
        t.registerComponentModel(Cq), t.registerComponentView(Aq), t.registerPreprocessor(Tq)
    }

    var eA = function (t, e) {
        return (eA = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
            t.__proto__ = e
        } || function (t, e) {
            for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n])
        })(t, e)
    }, nA = function () {
        return nA = Object.assign || function (t) {
            for (var e, n = 1, i = arguments.length; i > n; n++) {
                e = arguments[n];
                for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r])
            }
            return t
        }, nA.apply(this, arguments)
    }, iA = function () {
        function t() {
            this.firefox = !1, this.ie = !1, this.edge = !1, this.newEdge = !1, this.weChat = !1
        }

        return t
    }(), rA = function () {
        function t() {
            this.browser = new iA, this.node = !1, this.wxa = !1, this.worker = !1, this.canvasSupported = !1, this.svgSupported = !1, this.touchEventsSupported = !1, this.pointerEventsSupported = !1, this.domSupported = !1, this.transformSupported = !1, this.transform3dSupported = !1
        }

        return t
    }(), oA = new rA;
    "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? (oA.wxa = !0, oA.canvasSupported = !0, oA.touchEventsSupported = !0) : "undefined" == typeof document && "undefined" != typeof self ? (oA.worker = !0, oA.canvasSupported = !0) : "undefined" == typeof navigator ? (oA.node = !0, oA.canvasSupported = !0, oA.svgSupported = !0) : i(navigator.userAgent, oA);
    var aA = {
            "[object Function]": !0,
            "[object RegExp]": !0,
            "[object Date]": !0,
            "[object Error]": !0,
            "[object CanvasGradient]": !0,
            "[object CanvasPattern]": !0,
            "[object Image]": !0,
            "[object Canvas]": !0
        }, sA = {
            "[object Int8Array]": !0,
            "[object Uint8Array]": !0,
            "[object Uint8ClampedArray]": !0,
            "[object Int16Array]": !0,
            "[object Uint16Array]": !0,
            "[object Int32Array]": !0,
            "[object Uint32Array]": !0,
            "[object Float32Array]": !0,
            "[object Float64Array]": !0
        }, lA = Object.prototype.toString, uA = Array.prototype, hA = uA.forEach, cA = uA.filter, pA = uA.slice,
        dA = uA.map, fA = function () {
        }.constructor, gA = fA ? fA.prototype : null, yA = {}, vA = 2311, mA = function () {
            return yA.createCanvas()
        };
    yA.createCanvas = function () {
        return document.createElement("canvas")
    };
    var xA = gA && I(gA.bind) ? gA.call.bind(gA.bind) : w, _A = "__ec_primitive__", bA = function () {
            function t(e) {
                function n(t, e) {
                    i ? r.set(t, e) : r.set(e, t)
                }

                this.data = {};
                var i = M(e);
                this.data = {};
                var r = this;
                e instanceof t ? e.each(n) : e && y(e, n)
            }

            return t.prototype.get = function (t) {
                return this.data.hasOwnProperty(t) ? this.data[t] : null
            }, t.prototype.set = function (t, e) {
                return this.data[t] = e
            }, t.prototype.each = function (t, e) {
                for (var n in this.data) this.data.hasOwnProperty(n) && t.call(e, this.data[n], n)
            }, t.prototype.keys = function () {
                return b(this.data)
            }, t.prototype.removeKey = function (t) {
                delete this.data[t]
            }, t
        }(), wA = (Object.freeze || Object)({
            $override: r,
            guid: o,
            logError: a,
            clone: s,
            merge: l,
            mergeAll: u,
            extend: h,
            defaults: c,
            createCanvas: mA,
            indexOf: p,
            inherits: d,
            mixin: f,
            isArrayLike: g,
            each: y,
            map: v,
            reduce: m,
            filter: x,
            find: _,
            keys: b,
            bind: xA,
            curry: S,
            isArray: M,
            isFunction: I,
            isString: T,
            isStringSafe: C,
            isNumber: A,
            isObject: D,
            isBuiltInObject: L,
            isTypedArray: k,
            isDom: P,
            isGradientObject: O,
            isImagePatternObject: R,
            isRegExp: z,
            eqNaN: E,
            retrieve: N,
            retrieve2: B,
            retrieve3: V,
            slice: F,
            normalizeCssArray: G,
            assert: H,
            trim: W,
            setAsPrimitive: X,
            isPrimitive: Y,
            HashMap: bA,
            createHashMap: Z,
            concatArray: U,
            createObject: j,
            hasOwn: q,
            noop: K
        }), SA = re, MA = oe, IA = ce, TA = pe, CA = (Object.freeze || Object)({
            create: $,
            copy: J,
            clone: Q,
            set: te,
            add: ee,
            scaleAndAdd: ne,
            sub: ie,
            len: re,
            length: SA,
            lenSquare: oe,
            lengthSquare: MA,
            mul: ae,
            div: se,
            dot: le,
            scale: ue,
            normalize: he,
            distance: ce,
            dist: IA,
            distanceSquare: pe,
            distSquare: TA,
            negate: de,
            lerp: fe,
            applyTransform: ge,
            min: ye,
            max: ve
        }), AA = function () {
            function t(t, e) {
                this.target = t, this.topTarget = e && e.topTarget
            }

            return t
        }(), DA = function () {
            function t(t) {
                this.handler = t, t.on("mousedown", this._dragStart, this), t.on("mousemove", this._drag, this), t.on("mouseup", this._dragEnd, this)
            }

            return t.prototype._dragStart = function (t) {
                for (var e = t.target; e && !e.draggable;) e = e.parent;
                e && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.handler.dispatchToElement(new AA(e, t), "dragstart", t.event))
            }, t.prototype._drag = function (t) {
                var e = this._draggingTarget;
                if (e) {
                    var n = t.offsetX, i = t.offsetY, r = n - this._x, o = i - this._y;
                    this._x = n, this._y = i, e.drift(r, o, t), this.handler.dispatchToElement(new AA(e, t), "drag", t.event);
                    var a = this.handler.findHover(n, i, e).target, s = this._dropTarget;
                    this._dropTarget = a, e !== a && (s && a !== s && this.handler.dispatchToElement(new AA(s, t), "dragleave", t.event), a && a !== s && this.handler.dispatchToElement(new AA(a, t), "dragenter", t.event))
                }
            }, t.prototype._dragEnd = function (t) {
                var e = this._draggingTarget;
                e && (e.dragging = !1), this.handler.dispatchToElement(new AA(e, t), "dragend", t.event), this._dropTarget && this.handler.dispatchToElement(new AA(this._dropTarget, t), "drop", t.event), this._draggingTarget = null, this._dropTarget = null
            }, t
        }(), LA = function () {
            function t(t) {
                t && (this._$eventProcessor = t)
            }

            return t.prototype.on = function (t, e, n, i) {
                this._$handlers || (this._$handlers = {});
                var r = this._$handlers;
                if ("function" == typeof e && (i = n, n = e, e = null), !n || !t) return this;
                var o = this._$eventProcessor;
                null != e && o && o.normalizeQuery && (e = o.normalizeQuery(e)), r[t] || (r[t] = []);
                for (var a = 0; a < r[t].length; a++) if (r[t][a].h === n) return this;
                var s = {h: n, query: e, ctx: i || this, callAtLast: n.zrEventfulCallAtLast}, l = r[t].length - 1,
                    u = r[t][l];
                return u && u.callAtLast ? r[t].splice(l, 0, s) : r[t].push(s), this
            }, t.prototype.isSilent = function (t) {
                var e = this._$handlers;
                return !e || !e[t] || !e[t].length
            }, t.prototype.off = function (t, e) {
                var n = this._$handlers;
                if (!n) return this;
                if (!t) return this._$handlers = {}, this;
                if (e) {
                    if (n[t]) {
                        for (var i = [], r = 0, o = n[t].length; o > r; r++) n[t][r].h !== e && i.push(n[t][r]);
                        n[t] = i
                    }
                    n[t] && 0 === n[t].length && delete n[t]
                } else delete n[t];
                return this
            }, t.prototype.trigger = function (t) {
                for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
                if (!this._$handlers) return this;
                var i = this._$handlers[t], r = this._$eventProcessor;
                if (i) for (var o = e.length, a = i.length, s = 0; a > s; s++) {
                    var l = i[s];
                    if (!r || !r.filter || null == l.query || r.filter(t, l.query)) switch (o) {
                        case 0:
                            l.h.call(l.ctx);
                            break;
                        case 1:
                            l.h.call(l.ctx, e[0]);
                            break;
                        case 2:
                            l.h.call(l.ctx, e[0], e[1]);
                            break;
                        default:
                            l.h.apply(l.ctx, e)
                    }
                }
                return r && r.afterTrigger && r.afterTrigger(t), this
            }, t.prototype.triggerWithContext = function (t) {
                if (!this._$handlers) return this;
                var e = this._$handlers[t], n = this._$eventProcessor;
                if (e) for (var i = arguments, r = i.length, o = i[r - 1], a = e.length, s = 0; a > s; s++) {
                    var l = e[s];
                    if (!n || !n.filter || null == l.query || n.filter(t, l.query)) switch (r) {
                        case 0:
                            l.h.call(o);
                            break;
                        case 1:
                            l.h.call(o, i[0]);
                            break;
                        case 2:
                            l.h.call(o, i[0], i[1]);
                            break;
                        default:
                            l.h.apply(o, i.slice(1, r - 1))
                    }
                }
                return n && n.afterTrigger && n.afterTrigger(t), this
            }, t
        }(), kA = Math.log(2), PA = "___zrEVENTSAVED", OA = [],
        RA = "undefined" != typeof window && !!window.addEventListener,
        zA = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, EA = [], NA = RA ? function (t) {
            t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0
        } : function (t) {
            t.returnValue = !1, t.cancelBubble = !0
        }, BA = function () {
            function t() {
                this._track = []
            }

            return t.prototype.recognize = function (t, e, n) {
                return this._doTrack(t, e, n), this._recognize(t)
            }, t.prototype.clear = function () {
                return this._track.length = 0, this
            }, t.prototype._doTrack = function (t, e, n) {
                var i = t.touches;
                if (i) {
                    for (var r = {points: [], touches: [], target: e, event: t}, o = 0, a = i.length; a > o; o++) {
                        var s = i[o], l = Ie(n, s, {});
                        r.points.push([l.zrX, l.zrY]), r.touches.push(s)
                    }
                    this._track.push(r)
                }
            }, t.prototype._recognize = function (t) {
                for (var e in VA) if (VA.hasOwnProperty(e)) {
                    var n = VA[e](this._track, t);
                    if (n) return n
                }
            }, t
        }(), VA = {
            pinch: function (t, e) {
                var n = t.length;
                if (n) {
                    var i = (t[n - 1] || {}).points, r = (t[n - 2] || {}).points || i;
                    if (r && r.length > 1 && i && i.length > 1) {
                        var o = Oe(i) / Oe(r);
                        !isFinite(o) && (o = 1), e.pinchScale = o;
                        var a = Re(i);
                        return e.pinchX = a[0], e.pinchY = a[1], {type: "pinch", target: t[0].target, event: e}
                    }
                }
            }
        }, FA = "silent", GA = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.handler = null, e
            }

            return e(n, t), n.prototype.dispose = function () {
            }, n.prototype.setCursor = function () {
            }, n
        }(LA), HA = function () {
            function t(t, e) {
                this.x = t, this.y = e
            }

            return t
        }(), WA = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
        XA = function (t) {
            function n(e, n, i, r) {
                var o = t.call(this) || this;
                return o._hovered = new HA(0, 0), o.storage = e, o.painter = n, o.painterRoot = r, i = i || new GA, o.proxy = null, o.setHandlerProxy(i), o._draggingMgr = new DA(o), o
            }

            return e(n, t), n.prototype.setHandlerProxy = function (t) {
                this.proxy && this.proxy.dispose(), t && (y(WA, function (e) {
                    t.on && t.on(e, this[e], this)
                }, this), t.handler = this), this.proxy = t
            }, n.prototype.mousemove = function (t) {
                var e = t.zrX, n = t.zrY, i = Be(this, e, n), r = this._hovered, o = r.target;
                o && !o.__zr && (r = this.findHover(r.x, r.y), o = r.target);
                var a = this._hovered = i ? new HA(e, n) : this.findHover(e, n), s = a.target, l = this.proxy;
                l.setCursor && l.setCursor(s ? s.cursor : "default"), o && s !== o && this.dispatchToElement(r, "mouseout", t), this.dispatchToElement(a, "mousemove", t), s && s !== o && this.dispatchToElement(a, "mouseover", t)
            }, n.prototype.mouseout = function (t) {
                var e = t.zrEventControl;
                "only_globalout" !== e && this.dispatchToElement(this._hovered, "mouseout", t), "no_globalout" !== e && this.trigger("globalout", {
                    type: "globalout",
                    event: t
                })
            }, n.prototype.resize = function () {
                this._hovered = new HA(0, 0)
            }, n.prototype.dispatch = function (t, e) {
                var n = this[t];
                n && n.call(this, e)
            }, n.prototype.dispose = function () {
                this.proxy.dispose(), this.storage = null, this.proxy = null, this.painter = null
            }, n.prototype.setCursorStyle = function (t) {
                var e = this.proxy;
                e.setCursor && e.setCursor(t)
            }, n.prototype.dispatchToElement = function (t, e, n) {
                t = t || {};
                var i = t.target;
                if (!i || !i.silent) {
                    for (var r = "on" + e, o = ze(e, t, n); i && (i[r] && (o.cancelBubble = !!i[r].call(i, o)), i.trigger(e, o), i = i.__hostTarget ? i.__hostTarget : i.parent, !o.cancelBubble);) ;
                    o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer && this.painter.eachOtherLayer(function (t) {
                        "function" == typeof t[r] && t[r].call(t, o), t.trigger && t.trigger(e, o)
                    }))
                }
            }, n.prototype.findHover = function (t, e, n) {
                for (var i = this.storage.getDisplayList(), r = new HA(t, e), o = i.length - 1; o >= 0; o--) {
                    var a = void 0;
                    if (i[o] !== n && !i[o].ignore && (a = Ne(i[o], t, e)) && (!r.topTarget && (r.topTarget = i[o]), a !== FA)) {
                        r.target = i[o];
                        break
                    }
                }
                return r
            }, n.prototype.processGesture = function (t, e) {
                this._gestureMgr || (this._gestureMgr = new BA);
                var n = this._gestureMgr;
                "start" === e && n.clear();
                var i = n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom);
                if ("end" === e && n.clear(), i) {
                    var r = i.type;
                    t.gestureEvent = r;
                    var o = new HA;
                    o.target = i.target, this.dispatchToElement(o, r, i.event)
                }
            }, n
        }(LA);
    y(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function (t) {
        XA.prototype[t] = function (e) {
            var n, i, r = e.zrX, o = e.zrY, a = Be(this, r, o);
            if ("mouseup" === t && a || (n = this.findHover(r, o), i = n.target), "mousedown" === t) this._downEl = i, this._downPoint = [e.zrX, e.zrY], this._upEl = i; else if ("mouseup" === t) this._upEl = i; else if ("click" === t) {
                if (this._downEl !== this._upEl || !this._downPoint || IA(this._downPoint, [e.zrX, e.zrY]) > 4) return;
                this._downPoint = null
            }
            this.dispatchToElement(n, t, e)
        }
    });
    var YA, ZA = 32, UA = 7, jA = 1, qA = 2, KA = 4, $A = !1, JA = function () {
        function t() {
            this._roots = [], this._displayList = [], this._displayListLen = 0, this.displayableSortFunc = je
        }

        return t.prototype.traverse = function (t, e) {
            for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e)
        }, t.prototype.getDisplayList = function (t, e) {
            e = e || !1;
            var n = this._displayList;
            return (t || !n.length) && this.updateDisplayList(e), n
        }, t.prototype.updateDisplayList = function (t) {
            this._displayListLen = 0;
            for (var e = this._roots, n = this._displayList, i = 0, r = e.length; r > i; i++) this._updateAndAddDisplayable(e[i], null, t);
            n.length = this._displayListLen, oA.canvasSupported && Ze(n, je)
        }, t.prototype._updateAndAddDisplayable = function (t, e, n) {
            if (!t.ignore || n) {
                t.beforeUpdate(), t.update(), t.afterUpdate();
                var i = t.getClipPath();
                if (t.ignoreClip) e = null; else if (i) {
                    e = e ? e.slice() : [];
                    for (var r = i, o = t; r;) r.parent = o, r.updateTransform(), e.push(r), o = r, r = r.getClipPath()
                }
                if (t.childrenRef) {
                    for (var a = t.childrenRef(), s = 0; s < a.length; s++) {
                        var l = a[s];
                        t.__dirty && (l.__dirty |= jA), this._updateAndAddDisplayable(l, e, n)
                    }
                    t.__dirty = 0
                } else {
                    var u = t;
                    e && e.length ? u.__clipPaths = e : u.__clipPaths && u.__clipPaths.length > 0 && (u.__clipPaths = []), isNaN(u.z) && (Ue(), u.z = 0), isNaN(u.z2) && (Ue(), u.z2 = 0), isNaN(u.zlevel) && (Ue(), u.zlevel = 0), this._displayList[this._displayListLen++] = u
                }
                var h = t.getDecalElement && t.getDecalElement();
                h && this._updateAndAddDisplayable(h, e, n);
                var c = t.getTextGuideLine();
                c && this._updateAndAddDisplayable(c, e, n);
                var p = t.getTextContent();
                p && this._updateAndAddDisplayable(p, e, n)
            }
        }, t.prototype.addRoot = function (t) {
            t.__zr && t.__zr.storage === this || this._roots.push(t)
        }, t.prototype.delRoot = function (t) {
            if (t instanceof Array) for (var e = 0, n = t.length; n > e; e++) this.delRoot(t[e]); else {
                var i = p(this._roots, t);
                i >= 0 && this._roots.splice(i, 1)
            }
        }, t.prototype.delAllRoots = function () {
            this._roots = [], this._displayList = [], this._displayListLen = 0
        }, t.prototype.getRoots = function () {
            return this._roots
        }, t.prototype.dispose = function () {
            this._displayList = null, this._roots = null
        }, t
    }();
    YA = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (t) {
        return setTimeout(t, 16)
    };
    var QA = YA, tD = {
        linear: function (t) {
            return t
        }, quadraticIn: function (t) {
            return t * t
        }, quadraticOut: function (t) {
            return t * (2 - t)
        }, quadraticInOut: function (t) {
            return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
        }, cubicIn: function (t) {
            return t * t * t
        }, cubicOut: function (t) {
            return --t * t * t + 1
        }, cubicInOut: function (t) {
            return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
        }, quarticIn: function (t) {
            return t * t * t * t
        }, quarticOut: function (t) {
            return 1 - --t * t * t * t
        }, quarticInOut: function (t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
        }, quinticIn: function (t) {
            return t * t * t * t * t
        }, quinticOut: function (t) {
            return --t * t * t * t * t + 1
        }, quinticInOut: function (t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
        }, sinusoidalIn: function (t) {
            return 1 - Math.cos(t * Math.PI / 2)
        }, sinusoidalOut: function (t) {
            return Math.sin(t * Math.PI / 2)
        }, sinusoidalInOut: function (t) {
            return .5 * (1 - Math.cos(Math.PI * t))
        }, exponentialIn: function (t) {
            return 0 === t ? 0 : Math.pow(1024, t - 1)
        }, exponentialOut: function (t) {
            return 1 === t ? 1 : 1 - Math.pow(2, -10 * t)
        }, exponentialInOut: function (t) {
            return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (-Math.pow(2, -10 * (t - 1)) + 2)
        }, circularIn: function (t) {
            return 1 - Math.sqrt(1 - t * t)
        }, circularOut: function (t) {
            return Math.sqrt(1 - --t * t)
        }, circularInOut: function (t) {
            return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
        }, elasticIn: function (t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), -(n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i)))
        }, elasticOut: function (t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), n * Math.pow(2, -10 * t) * Math.sin(2 * (t - e) * Math.PI / i) + 1)
        }, elasticInOut: function (t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), (t *= 2) < 1 ? -.5 * n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) : n * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) * .5 + 1)
        }, backIn: function (t) {
            var e = 1.70158;
            return t * t * ((e + 1) * t - e)
        }, backOut: function (t) {
            var e = 1.70158;
            return --t * t * ((e + 1) * t + e) + 1
        }, backInOut: function (t) {
            var e = 2.5949095;
            return (t *= 2) < 1 ? .5 * t * t * ((e + 1) * t - e) : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2)
        }, bounceIn: function (t) {
            return 1 - tD.bounceOut(1 - t)
        }, bounceOut: function (t) {
            return 1 / 2.75 > t ? 7.5625 * t * t : 2 / 2.75 > t ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : 2.5 / 2.75 > t ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
        }, bounceInOut: function (t) {
            return .5 > t ? .5 * tD.bounceIn(2 * t) : .5 * tD.bounceOut(2 * t - 1) + .5
        }
    }, eD = function () {
        function t(t) {
            this._initialized = !1, this._startTime = 0, this._pausedTime = 0, this._paused = !1, this._life = t.life || 1e3, this._delay = t.delay || 0, this.loop = null == t.loop ? !1 : t.loop, this.gap = t.gap || 0, this.easing = t.easing || "linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, this.onrestart = t.onrestart
        }

        return t.prototype.step = function (t, e) {
            if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), this._paused) return void (this._pausedTime += e);
            var n = (t - this._startTime - this._pausedTime) / this._life;
            0 > n && (n = 0), n = Math.min(n, 1);
            var i = this.easing, r = "string" == typeof i ? tD[i] : i, o = "function" == typeof r ? r(n) : n;
            if (this.onframe && this.onframe(o), 1 === n) {
                if (!this.loop) return !0;
                this._restart(t), this.onrestart && this.onrestart()
            }
            return !1
        }, t.prototype._restart = function (t) {
            var e = (t - this._startTime - this._pausedTime) % this._life;
            this._startTime = t - e + this.gap, this._pausedTime = 0
        }, t.prototype.pause = function () {
            this._paused = !0
        }, t.prototype.resume = function () {
            this._paused = !1
        }, t
    }(), nD = function () {
        function t(t) {
            this.value = t
        }

        return t
    }(), iD = function () {
        function t() {
            this._len = 0
        }

        return t.prototype.insert = function (t) {
            var e = new nD(t);
            return this.insertEntry(e), e
        }, t.prototype.insertEntry = function (t) {
            this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, this._len++
        }, t.prototype.remove = function (t) {
            var e = t.prev, n = t.next;
            e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, this._len--
        }, t.prototype.len = function () {
            return this._len
        }, t.prototype.clear = function () {
            this.head = this.tail = null, this._len = 0
        }, t
    }(), rD = function () {
        function t(t) {
            this._list = new iD, this._maxSize = 10, this._map = {}, this._maxSize = t
        }

        return t.prototype.put = function (t, e) {
            var n = this._list, i = this._map, r = null;
            if (null == i[t]) {
                var o = n.len(), a = this._lastRemovedEntry;
                if (o >= this._maxSize && o > 0) {
                    var s = n.head;
                    n.remove(s), delete i[s.key], r = s.value, this._lastRemovedEntry = s
                }
                a ? a.value = e : a = new nD(e), a.key = t, n.insertEntry(a), i[t] = a
            }
            return r
        }, t.prototype.get = function (t) {
            var e = this._map[t], n = this._list;
            return null != e ? (e !== n.tail && (n.remove(e), n.insertEntry(e)), e.value) : void 0
        }, t.prototype.clear = function () {
            this._list.clear(), this._map = {}
        }, t.prototype.len = function () {
            return this._list.len()
        }, t
    }(), oD = {
        transparent: [0, 0, 0, 0],
        aliceblue: [240, 248, 255, 1],
        antiquewhite: [250, 235, 215, 1],
        aqua: [0, 255, 255, 1],
        aquamarine: [127, 255, 212, 1],
        azure: [240, 255, 255, 1],
        beige: [245, 245, 220, 1],
        bisque: [255, 228, 196, 1],
        black: [0, 0, 0, 1],
        blanchedalmond: [255, 235, 205, 1],
        blue: [0, 0, 255, 1],
        blueviolet: [138, 43, 226, 1],
        brown: [165, 42, 42, 1],
        burlywood: [222, 184, 135, 1],
        cadetblue: [95, 158, 160, 1],
        chartreuse: [127, 255, 0, 1],
        chocolate: [210, 105, 30, 1],
        coral: [255, 127, 80, 1],
        cornflowerblue: [100, 149, 237, 1],
        cornsilk: [255, 248, 220, 1],
        crimson: [220, 20, 60, 1],
        cyan: [0, 255, 255, 1],
        darkblue: [0, 0, 139, 1],
        darkcyan: [0, 139, 139, 1],
        darkgoldenrod: [184, 134, 11, 1],
        darkgray: [169, 169, 169, 1],
        darkgreen: [0, 100, 0, 1],
        darkgrey: [169, 169, 169, 1],
        darkkhaki: [189, 183, 107, 1],
        darkmagenta: [139, 0, 139, 1],
        darkolivegreen: [85, 107, 47, 1],
        darkorange: [255, 140, 0, 1],
        darkorchid: [153, 50, 204, 1],
        darkred: [139, 0, 0, 1],
        darksalmon: [233, 150, 122, 1],
        darkseagreen: [143, 188, 143, 1],
        darkslateblue: [72, 61, 139, 1],
        darkslategray: [47, 79, 79, 1],
        darkslategrey: [47, 79, 79, 1],
        darkturquoise: [0, 206, 209, 1],
        darkviolet: [148, 0, 211, 1],
        deeppink: [255, 20, 147, 1],
        deepskyblue: [0, 191, 255, 1],
        dimgray: [105, 105, 105, 1],
        dimgrey: [105, 105, 105, 1],
        dodgerblue: [30, 144, 255, 1],
        firebrick: [178, 34, 34, 1],
        floralwhite: [255, 250, 240, 1],
        forestgreen: [34, 139, 34, 1],
        fuchsia: [255, 0, 255, 1],
        gainsboro: [220, 220, 220, 1],
        ghostwhite: [248, 248, 255, 1],
        gold: [255, 215, 0, 1],
        goldenrod: [218, 165, 32, 1],
        gray: [128, 128, 128, 1],
        green: [0, 128, 0, 1],
        greenyellow: [173, 255, 47, 1],
        grey: [128, 128, 128, 1],
        honeydew: [240, 255, 240, 1],
        hotpink: [255, 105, 180, 1],
        indianred: [205, 92, 92, 1],
        indigo: [75, 0, 130, 1],
        ivory: [255, 255, 240, 1],
        khaki: [240, 230, 140, 1],
        lavender: [230, 230, 250, 1],
        lavenderblush: [255, 240, 245, 1],
        lawngreen: [124, 252, 0, 1],
        lemonchiffon: [255, 250, 205, 1],
        lightblue: [173, 216, 230, 1],
        lightcoral: [240, 128, 128, 1],
        lightcyan: [224, 255, 255, 1],
        lightgoldenrodyellow: [250, 250, 210, 1],
        lightgray: [211, 211, 211, 1],
        lightgreen: [144, 238, 144, 1],
        lightgrey: [211, 211, 211, 1],
        lightpink: [255, 182, 193, 1],
        lightsalmon: [255, 160, 122, 1],
        lightseagreen: [32, 178, 170, 1],
        lightskyblue: [135, 206, 250, 1],
        lightslategray: [119, 136, 153, 1],
        lightslategrey: [119, 136, 153, 1],
        lightsteelblue: [176, 196, 222, 1],
        lightyellow: [255, 255, 224, 1],
        lime: [0, 255, 0, 1],
        limegreen: [50, 205, 50, 1],
        linen: [250, 240, 230, 1],
        magenta: [255, 0, 255, 1],
        maroon: [128, 0, 0, 1],
        mediumaquamarine: [102, 205, 170, 1],
        mediumblue: [0, 0, 205, 1],
        mediumorchid: [186, 85, 211, 1],
        mediumpurple: [147, 112, 219, 1],
        mediumseagreen: [60, 179, 113, 1],
        mediumslateblue: [123, 104, 238, 1],
        mediumspringgreen: [0, 250, 154, 1],
        mediumturquoise: [72, 209, 204, 1],
        mediumvioletred: [199, 21, 133, 1],
        midnightblue: [25, 25, 112, 1],
        mintcream: [245, 255, 250, 1],
        mistyrose: [255, 228, 225, 1],
        moccasin: [255, 228, 181, 1],
        navajowhite: [255, 222, 173, 1],
        navy: [0, 0, 128, 1],
        oldlace: [253, 245, 230, 1],
        olive: [128, 128, 0, 1],
        olivedrab: [107, 142, 35, 1],
        orange: [255, 165, 0, 1],
        orangered: [255, 69, 0, 1],
        orchid: [218, 112, 214, 1],
        palegoldenrod: [238, 232, 170, 1],
        palegreen: [152, 251, 152, 1],
        paleturquoise: [175, 238, 238, 1],
        palevioletred: [219, 112, 147, 1],
        papayawhip: [255, 239, 213, 1],
        peachpuff: [255, 218, 185, 1],
        peru: [205, 133, 63, 1],
        pink: [255, 192, 203, 1],
        plum: [221, 160, 221, 1],
        powderblue: [176, 224, 230, 1],
        purple: [128, 0, 128, 1],
        red: [255, 0, 0, 1],
        rosybrown: [188, 143, 143, 1],
        royalblue: [65, 105, 225, 1],
        saddlebrown: [139, 69, 19, 1],
        salmon: [250, 128, 114, 1],
        sandybrown: [244, 164, 96, 1],
        seagreen: [46, 139, 87, 1],
        seashell: [255, 245, 238, 1],
        sienna: [160, 82, 45, 1],
        silver: [192, 192, 192, 1],
        skyblue: [135, 206, 235, 1],
        slateblue: [106, 90, 205, 1],
        slategray: [112, 128, 144, 1],
        slategrey: [112, 128, 144, 1],
        snow: [255, 250, 250, 1],
        springgreen: [0, 255, 127, 1],
        steelblue: [70, 130, 180, 1],
        tan: [210, 180, 140, 1],
        teal: [0, 128, 128, 1],
        thistle: [216, 191, 216, 1],
        tomato: [255, 99, 71, 1],
        turquoise: [64, 224, 208, 1],
        violet: [238, 130, 238, 1],
        wheat: [245, 222, 179, 1],
        white: [255, 255, 255, 1],
        whitesmoke: [245, 245, 245, 1],
        yellow: [255, 255, 0, 1],
        yellowgreen: [154, 205, 50, 1]
    }, aD = new rD(20), sD = null, lD = cn, uD = pn, hD = (Object.freeze || Object)({
        parse: an,
        lift: un,
        toHex: hn,
        fastLerp: cn,
        fastMapToColor: lD,
        lerp: pn,
        mapToColor: uD,
        modifyHSL: dn,
        modifyAlpha: fn,
        stringify: gn,
        lum: yn,
        random: vn
    }), cD = Array.prototype.slice, pD = [0, 0, 0, 0], dD = function () {
        function t(t) {
            this.keyframes = [], this.maxTime = 0, this.arrDim = 0, this.interpolable = !0, this._needsSort = !1, this._isAllValueEqual = !0, this._lastFrame = 0, this._lastFramePercent = 0, this.propName = t
        }

        return t.prototype.isFinished = function () {
            return this._finished
        }, t.prototype.setFinished = function () {
            this._finished = !0, this._additiveTrack && this._additiveTrack.setFinished()
        }, t.prototype.needsAnimate = function () {
            return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable
        }, t.prototype.getAdditiveTrack = function () {
            return this._additiveTrack
        }, t.prototype.addKeyframe = function (t, e) {
            t >= this.maxTime ? this.maxTime = t : this._needsSort = !0;
            var n = this.keyframes, i = n.length;
            if (this.interpolable) if (g(e)) {
                var r = kn(e);
                if (i > 0 && this.arrDim !== r) return void (this.interpolable = !1);
                if (1 === r && "number" != typeof e[0] || 2 === r && "number" != typeof e[0][0]) return void (this.interpolable = !1);
                if (i > 0) {
                    var o = n[i - 1];
                    this._isAllValueEqual && (1 === r ? In(e, o.value) || (this._isAllValueEqual = !1) : this._isAllValueEqual = !1)
                }
                this.arrDim = r
            } else {
                if (this.arrDim > 0) return void (this.interpolable = !1);
                if ("string" == typeof e) {
                    var a = an(e);
                    a ? (e = a, this.isValueColor = !0) : this.interpolable = !1
                } else if ("number" != typeof e || isNaN(e)) return void (this.interpolable = !1);
                if (this._isAllValueEqual && i > 0) {
                    var o = n[i - 1];
                    this.isValueColor && !In(o.value, e) ? this._isAllValueEqual = !1 : o.value !== e && (this._isAllValueEqual = !1)
                }
            }
            var s = {time: t, value: e, percent: 0};
            return this.keyframes.push(s), s
        }, t.prototype.prepare = function (t) {
            var e = this.keyframes;
            this._needsSort && e.sort(function (t, e) {
                return t.time - e.time
            });
            for (var n = this.arrDim, i = e.length, r = e[i - 1], o = 0; i > o; o++) e[o].percent = e[o].time / this.maxTime, n > 0 && o !== i - 1 && Mn(e[o].value, r.value, n);
            if (t && this.needsAnimate() && t.needsAnimate() && n === t.arrDim && this.isValueColor === t.isValueColor && !t._finished) {
                this._additiveTrack = t;
                for (var a = e[0].value, o = 0; i > o; o++) 0 === n ? e[o].additiveValue = this.isValueColor ? wn([], e[o].value, a, -1) : e[o].value - a : 1 === n ? e[o].additiveValue = wn([], e[o].value, a, -1) : 2 === n && (e[o].additiveValue = Sn([], e[o].value, a, -1))
            }
        }, t.prototype.step = function (t, e) {
            if (!this._finished) {
                this._additiveTrack && this._additiveTrack._finished && (this._additiveTrack = null);
                var n, i = null != this._additiveTrack, r = i ? "additiveValue" : "value", o = this.keyframes,
                    a = this.keyframes.length, s = this.propName, l = this.arrDim, u = this.isValueColor;
                if (0 > e) n = 0; else if (e < this._lastFramePercent) {
                    var h = Math.min(this._lastFrame + 1, a - 1);
                    for (n = h; n >= 0 && !(o[n].percent <= e); n--) ;
                    n = Math.min(n, a - 2)
                } else {
                    for (n = this._lastFrame; a > n && !(o[n].percent > e); n++) ;
                    n = Math.min(n - 1, a - 2)
                }
                var c = o[n + 1], p = o[n];
                if (p && c) {
                    this._lastFrame = n, this._lastFramePercent = e;
                    var d = c.percent - p.percent;
                    if (0 !== d) {
                        var f = (e - p.percent) / d, g = i ? this._additiveValue : u ? pD : t[s];
                        if ((l > 0 || u) && !g && (g = this._additiveValue = []), this.useSpline) {
                            var y = o[n][r], v = o[0 === n ? n : n - 1][r], m = o[n > a - 2 ? a - 1 : n + 1][r],
                                x = o[n > a - 3 ? a - 1 : n + 2][r];
                            if (l > 0) 1 === l ? Cn(g, v, y, m, x, f, f * f, f * f * f) : An(g, v, y, m, x, f, f * f, f * f * f); else if (u) Cn(g, v, y, m, x, f, f * f, f * f * f), i || (t[s] = Ln(g)); else {
                                var _ = void 0;
                                _ = this.interpolable ? Tn(v, y, m, x, f, f * f, f * f * f) : m, i ? this._additiveValue = _ : t[s] = _
                            }
                        } else if (l > 0) 1 === l ? _n(g, p[r], c[r], f) : bn(g, p[r], c[r], f); else if (u) _n(g, p[r], c[r], f), i || (t[s] = Ln(g)); else {
                            var _ = void 0;
                            _ = this.interpolable ? mn(p[r], c[r], f) : xn(p[r], c[r], f), i ? this._additiveValue = _ : t[s] = _
                        }
                        i && this._addToTarget(t)
                    }
                }
            }
        }, t.prototype._addToTarget = function (t) {
            var e = this.arrDim, n = this.propName, i = this._additiveValue;
            0 === e ? this.isValueColor ? (an(t[n], pD), wn(pD, pD, i, 1), t[n] = Ln(pD)) : t[n] = t[n] + i : 1 === e ? wn(t[n], t[n], i, 1) : 2 === e && Sn(t[n], t[n], i, 1)
        }, t
    }(), fD = function () {
        function t(t, e, n) {
            return this._tracks = {}, this._trackKeys = [], this._delay = 0, this._maxTime = 0, this._paused = !1, this._started = 0, this._clip = null, this._target = t, this._loop = e, e && n ? void a("Can' use additive animation on looped animation.") : void (this._additiveAnimators = n)
        }

        return t.prototype.getTarget = function () {
            return this._target
        }, t.prototype.changeTarget = function (t) {
            this._target = t
        }, t.prototype.when = function (t, e) {
            return this.whenWithKeys(t, e, b(e))
        }, t.prototype.whenWithKeys = function (t, e, n) {
            for (var i = this._tracks, r = 0; r < n.length; r++) {
                var o = n[r], a = i[o];
                if (!a) {
                    a = i[o] = new dD(o);
                    var s = void 0, l = this._getAdditiveTrack(o);
                    if (l) {
                        var u = l.keyframes[l.keyframes.length - 1];
                        s = u && u.value, l.isValueColor && s && (s = Ln(s))
                    } else s = this._target[o];
                    if (null == s) continue;
                    0 !== t && a.addKeyframe(0, Dn(s)), this._trackKeys.push(o)
                }
                a.addKeyframe(t, Dn(e[o]))
            }
            return this._maxTime = Math.max(this._maxTime, t), this
        }, t.prototype.pause = function () {
            this._clip.pause(), this._paused = !0
        }, t.prototype.resume = function () {
            this._clip.resume(), this._paused = !1
        }, t.prototype.isPaused = function () {
            return !!this._paused
        }, t.prototype._doneCallback = function () {
            this._setTracksFinished(), this._clip = null;
            var t = this._doneList;
            if (t) for (var e = t.length, n = 0; e > n; n++) t[n].call(this)
        }, t.prototype._abortedCallback = function () {
            this._setTracksFinished();
            var t = this.animation, e = this._abortedList;
            if (t && t.removeClip(this._clip), this._clip = null, e) for (var n = 0; n < e.length; n++) e[n].call(this)
        }, t.prototype._setTracksFinished = function () {
            for (var t = this._tracks, e = this._trackKeys, n = 0; n < e.length; n++) t[e[n]].setFinished()
        }, t.prototype._getAdditiveTrack = function (t) {
            var e, n = this._additiveAnimators;
            if (n) for (var i = 0; i < n.length; i++) {
                var r = n[i].getTrack(t);
                r && (e = r)
            }
            return e
        }, t.prototype.start = function (t, e) {
            if (!(this._started > 0)) {
                this._started = 1;
                for (var n = this, i = [], r = 0; r < this._trackKeys.length; r++) {
                    var o = this._trackKeys[r], a = this._tracks[o], s = this._getAdditiveTrack(o), l = a.keyframes;
                    if (a.prepare(s), a.needsAnimate()) i.push(a); else if (!a.interpolable) {
                        var u = l[l.length - 1];
                        u && (n._target[a.propName] = u.value)
                    }
                }
                if (i.length || e) {
                    var h = new eD({
                        life: this._maxTime, loop: this._loop, delay: this._delay, onframe: function (t) {
                            n._started = 2;
                            var e = n._additiveAnimators;
                            if (e) {
                                for (var r = !1, o = 0; o < e.length; o++) if (e[o]._clip) {
                                    r = !0;
                                    break
                                }
                                r || (n._additiveAnimators = null)
                            }
                            for (var o = 0; o < i.length; o++) i[o].step(n._target, t);
                            var a = n._onframeList;
                            if (a) for (var o = 0; o < a.length; o++) a[o](n._target, t)
                        }, ondestroy: function () {
                            n._doneCallback()
                        }
                    });
                    this._clip = h, this.animation && this.animation.addClip(h), t && "spline" !== t && (h.easing = t)
                } else this._doneCallback();
                return this
            }
        }, t.prototype.stop = function (t) {
            if (this._clip) {
                var e = this._clip;
                t && e.onframe(1), this._abortedCallback()
            }
        }, t.prototype.delay = function (t) {
            return this._delay = t, this
        }, t.prototype.during = function (t) {
            return t && (this._onframeList || (this._onframeList = []), this._onframeList.push(t)), this
        }, t.prototype.done = function (t) {
            return t && (this._doneList || (this._doneList = []), this._doneList.push(t)), this
        }, t.prototype.aborted = function (t) {
            return t && (this._abortedList || (this._abortedList = []), this._abortedList.push(t)), this
        }, t.prototype.getClip = function () {
            return this._clip
        }, t.prototype.getTrack = function (t) {
            return this._tracks[t]
        }, t.prototype.stopTracks = function (t, e) {
            if (!t.length || !this._clip) return !0;
            for (var n = this._tracks, i = this._trackKeys, r = 0; r < t.length; r++) {
                var o = n[t[r]];
                o && (e ? o.step(this._target, 1) : 1 === this._started && o.step(this._target, 0), o.setFinished())
            }
            for (var a = !0, r = 0; r < i.length; r++) if (!n[i[r]].isFinished()) {
                a = !1;
                break
            }
            return a && this._abortedCallback(), a
        }, t.prototype.saveFinalToTarget = function (t, e) {
            if (t) {
                e = e || this._trackKeys;
                for (var n = 0; n < e.length; n++) {
                    var i = e[n], r = this._tracks[i];
                    if (r && !r.isFinished()) {
                        var o = r.keyframes, a = o[o.length - 1];
                        if (a) {
                            var s = Dn(a.value);
                            r.isValueColor && (s = Ln(s)), t[i] = s
                        }
                    }
                }
            }
        }, t.prototype.__changeFinalValue = function (t, e) {
            e = e || b(t);
            for (var n = 0; n < e.length; n++) {
                var i = e[n], r = this._tracks[i];
                if (r) {
                    var o = r.keyframes;
                    if (o.length > 1) {
                        var a = o.pop();
                        r.addKeyframe(a.time, t[i]), r.prepare(r.getAdditiveTrack())
                    }
                }
            }
        }, t
    }(), gD = function (t) {
        function n(e) {
            var n = t.call(this) || this;
            return n._running = !1, n._time = 0, n._pausedTime = 0, n._pauseStart = 0, n._paused = !1, e = e || {}, n.stage = e.stage || {}, n.onframe = e.onframe || function () {
            }, n
        }

        return e(n, t), n.prototype.addClip = function (t) {
            t.animation && this.removeClip(t), this._clipsHead ? (this._clipsTail.next = t, t.prev = this._clipsTail, t.next = null, this._clipsTail = t) : this._clipsHead = this._clipsTail = t, t.animation = this
        }, n.prototype.addAnimator = function (t) {
            t.animation = this;
            var e = t.getClip();
            e && this.addClip(e)
        }, n.prototype.removeClip = function (t) {
            if (t.animation) {
                var e = t.prev, n = t.next;
                e ? e.next = n : this._clipsHead = n, n ? n.prev = e : this._clipsTail = e, t.next = t.prev = t.animation = null
            }
        }, n.prototype.removeAnimator = function (t) {
            var e = t.getClip();
            e && this.removeClip(e), t.animation = null
        }, n.prototype.update = function (t) {
            for (var e = (new Date).getTime() - this._pausedTime, n = e - this._time, i = this._clipsHead; i;) {
                var r = i.next, o = i.step(e, n);
                o ? (i.ondestroy && i.ondestroy(), this.removeClip(i), i = r) : i = r
            }
            this._time = e, t || (this.onframe(n), this.trigger("frame", n), this.stage.update && this.stage.update())
        }, n.prototype._startLoop = function () {
            function t() {
                e._running && (QA(t), !e._paused && e.update())
            }

            var e = this;
            this._running = !0, QA(t)
        }, n.prototype.start = function () {
            this._running || (this._time = (new Date).getTime(), this._pausedTime = 0, this._startLoop())
        }, n.prototype.stop = function () {
            this._running = !1
        }, n.prototype.pause = function () {
            this._paused || (this._pauseStart = (new Date).getTime(), this._paused = !0)
        }, n.prototype.resume = function () {
            this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart, this._paused = !1)
        }, n.prototype.clear = function () {
            for (var t = this._clipsHead; t;) {
                var e = t.next;
                t.prev = t.next = t.animation = null, t = e
            }
            this._clipsHead = this._clipsTail = null
        }, n.prototype.isFinished = function () {
            return null == this._clipsHead
        }, n.prototype.animate = function (t, e) {
            e = e || {}, this.start();
            var n = new fD(t, e.loop);
            return this.addAnimator(n), n
        }, n
    }(LA), yD = 300, vD = oA.domSupported, mD = function () {
        var t = ["click", "dblclick", "mousewheel", "wheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
            e = ["touchstart", "touchend", "touchmove"],
            n = {pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1}, i = v(t, function (t) {
                var e = t.replace("mouse", "pointer");
                return n.hasOwnProperty(e) ? e : t
            });
        return {mouse: t, touch: e, pointer: i}
    }(), xD = {mouse: ["mousemove", "mouseup"], pointer: ["pointermove", "pointerup"]}, _D = !1, bD = function () {
        function t(t, e) {
            this.stopPropagation = K, this.stopImmediatePropagation = K, this.preventDefault = K, this.type = e.type, this.target = this.currentTarget = t.dom, this.pointerType = e.pointerType, this.clientX = e.clientX, this.clientY = e.clientY
        }

        return t
    }(), wD = {
        mousedown: function (t) {
            t = Ae(this.dom, t), this.__mayPointerCapture = [t.zrX, t.zrY], this.trigger("mousedown", t)
        }, mousemove: function (t) {
            t = Ae(this.dom, t);
            var e = this.__mayPointerCapture;
            !e || t.zrX === e[0] && t.zrY === e[1] || this.__togglePointerCapture(!0), this.trigger("mousemove", t)
        }, mouseup: function (t) {
            t = Ae(this.dom, t), this.__togglePointerCapture(!1), this.trigger("mouseup", t)
        }, mouseout: function (t) {
            t = Ae(this.dom, t);
            var e = t.toElement || t.relatedTarget;
            En(this, e) || (this.__pointerCapturing && (t.zrEventControl = "no_globalout"), this.trigger("mouseout", t))
        }, wheel: function (t) {
            _D = !0, t = Ae(this.dom, t), this.trigger("mousewheel", t)
        }, mousewheel: function (t) {
            _D || (t = Ae(this.dom, t), this.trigger("mousewheel", t))
        }, touchstart: function (t) {
            t = Ae(this.dom, t), Rn(t), this.__lastTouchMoment = new Date, this.handler.processGesture(t, "start"), wD.mousemove.call(this, t), wD.mousedown.call(this, t)
        }, touchmove: function (t) {
            t = Ae(this.dom, t), Rn(t), this.handler.processGesture(t, "change"), wD.mousemove.call(this, t)
        }, touchend: function (t) {
            t = Ae(this.dom, t), Rn(t), this.handler.processGesture(t, "end"), wD.mouseup.call(this, t), +new Date - +this.__lastTouchMoment < yD && wD.click.call(this, t)
        }, pointerdown: function (t) {
            wD.mousedown.call(this, t)
        }, pointermove: function (t) {
            Pn(t) || wD.mousemove.call(this, t)
        }, pointerup: function (t) {
            wD.mouseup.call(this, t)
        }, pointerout: function (t) {
            Pn(t) || wD.mouseout.call(this, t)
        }
    };
    y(["click", "dblclick", "contextmenu"], function (t) {
        wD[t] = function (e) {
            e = Ae(this.dom, e), this.trigger(t, e)
        }
    });
    var SD = {
        pointermove: function (t) {
            Pn(t) || SD.mousemove.call(this, t)
        }, pointerup: function (t) {
            SD.mouseup.call(this, t)
        }, mousemove: function (t) {
            this.trigger("mousemove", t)
        }, mouseup: function (t) {
            var e = this.__pointerCapturing;
            this.__togglePointerCapture(!1), this.trigger("mouseup", t), e && (t.zrEventControl = "only_globalout", this.trigger("mouseout", t))
        }
    }, MD = function () {
        function t(t, e) {
            this.mounted = {}, this.listenerOpts = {}, this.touching = !1, this.domTarget = t, this.domHandlers = e
        }

        return t
    }(), ID = function (t) {
        function n(e, n) {
            var i = t.call(this) || this;
            return i.__pointerCapturing = !1, i.dom = e, i.painterRoot = n, i._localHandlerScope = new MD(e, wD), vD && (i._globalHandlerScope = new MD(document, SD)), Nn(i, i._localHandlerScope), i
        }

        return e(n, t), n.prototype.dispose = function () {
            Fn(this._localHandlerScope), vD && Fn(this._globalHandlerScope)
        }, n.prototype.setCursor = function (t) {
            this.dom.style && (this.dom.style.cursor = t || "default")
        }, n.prototype.__togglePointerCapture = function (t) {
            if (this.__mayPointerCapture = null, vD && +this.__pointerCapturing ^ +t) {
                this.__pointerCapturing = t;
                var e = this._globalHandlerScope;
                t ? Bn(this, e) : Fn(e)
            }
        }, n
    }(LA), TD = 1;
    "undefined" != typeof window && (TD = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1));
    var CD, AD, DD = TD, LD = .4, kD = "#333", PD = "#ccc", OD = "#eee", RD = (Object.freeze || Object)({
            create: Gn,
            identity: Hn,
            copy: Wn,
            mul: Xn,
            translate: Yn,
            rotate: Zn,
            scale: Un,
            invert: jn,
            clone: qn
        }), zD = Hn, ED = 5e-5, ND = [], BD = [], VD = Gn(), FD = Math.abs, GD = function () {
            function t() {
            }

            return t.prototype.setPosition = function (t) {
                this.x = t[0], this.y = t[1]
            }, t.prototype.setScale = function (t) {
                this.scaleX = t[0], this.scaleY = t[1]
            }, t.prototype.setSkew = function (t) {
                this.skewX = t[0], this.skewY = t[1]
            }, t.prototype.setOrigin = function (t) {
                this.originX = t[0], this.originY = t[1]
            }, t.prototype.needLocalTransform = function () {
                return Kn(this.rotation) || Kn(this.x) || Kn(this.y) || Kn(this.scaleX - 1) || Kn(this.scaleY - 1)
            }, t.prototype.updateTransform = function () {
                var t = this.parent, e = t && t.transform, n = this.needLocalTransform(), i = this.transform;
                return n || e ? (i = i || Gn(), n ? this.getLocalTransform(i) : zD(i), e && (n ? Xn(i, t.transform, i) : Wn(i, t.transform)), this.transform = i, void this._resolveGlobalScaleRatio(i)) : void (i && zD(i))
            }, t.prototype._resolveGlobalScaleRatio = function (t) {
                var e = this.globalScaleRatio;
                if (null != e && 1 !== e) {
                    this.getGlobalScale(ND);
                    var n = ND[0] < 0 ? -1 : 1, i = ND[1] < 0 ? -1 : 1, r = ((ND[0] - n) * e + n) / ND[0] || 0,
                        o = ((ND[1] - i) * e + i) / ND[1] || 0;
                    t[0] *= r, t[1] *= r, t[2] *= o, t[3] *= o
                }
                this.invTransform = this.invTransform || Gn(), jn(this.invTransform, t)
            }, t.prototype.getLocalTransform = function (e) {
                return t.getLocalTransform(this, e)
            }, t.prototype.getComputedTransform = function () {
                for (var t = this, e = []; t;) e.push(t), t = t.parent;
                for (; t = e.pop();) t.updateTransform();
                return this.transform
            }, t.prototype.setLocalTransform = function (t) {
                if (t) {
                    var e = t[0] * t[0] + t[1] * t[1], n = t[2] * t[2] + t[3] * t[3], i = Math.atan2(t[1], t[0]),
                        r = Math.PI / 2 + i - Math.atan2(t[3], t[2]);
                    n = Math.sqrt(n) * Math.cos(r), e = Math.sqrt(e), this.skewX = r, this.skewY = 0, this.rotation = -i, this.x = +t[4], this.y = +t[5], this.scaleX = e, this.scaleY = n, this.originX = 0, this.originY = 0
                }
            }, t.prototype.decomposeTransform = function () {
                if (this.transform) {
                    var t = this.parent, e = this.transform;
                    t && t.transform && (Xn(BD, t.invTransform, e), e = BD);
                    var n = this.originX, i = this.originY;
                    (n || i) && (VD[4] = n, VD[5] = i, Xn(BD, e, VD), BD[4] -= n, BD[5] -= i, e = BD), this.setLocalTransform(e)
                }
            }, t.prototype.getGlobalScale = function (t) {
                var e = this.transform;
                return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]), e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, t)
            }, t.prototype.transformCoordToLocal = function (t, e) {
                var n = [t, e], i = this.invTransform;
                return i && ge(n, n, i), n
            }, t.prototype.transformCoordToGlobal = function (t, e) {
                var n = [t, e], i = this.transform;
                return i && ge(n, n, i), n
            }, t.prototype.getLineScale = function () {
                var t = this.transform;
                return t && FD(t[0] - 1) > 1e-10 && FD(t[3] - 1) > 1e-10 ? Math.sqrt(FD(t[0] * t[3] - t[2] * t[1])) : 1
            }, t.getLocalTransform = function (t, e) {
                e = e || [];
                var n = t.originX || 0, i = t.originY || 0, r = t.scaleX, o = t.scaleY, a = t.rotation || 0, s = t.x,
                    l = t.y, u = t.skewX ? Math.tan(t.skewX) : 0, h = t.skewY ? Math.tan(-t.skewY) : 0;
                return n || i ? (e[4] = -n * r - u * i * o, e[5] = -i * o - h * n * r) : e[4] = e[5] = 0, e[0] = r, e[3] = o, e[1] = h * r, e[2] = u * o, a && Zn(e, e, a), e[4] += n + s, e[5] += i + l, e
            }, t.initDefaultProps = function () {
                var e = t.prototype;
                e.x = 0, e.y = 0, e.scaleX = 1, e.scaleY = 1, e.originX = 0, e.originY = 0, e.skewX = 0, e.skewY = 0, e.rotation = 0, e.globalScaleRatio = 1
            }(), t
        }(), HD = function () {
            function t(t, e) {
                this.x = t || 0, this.y = e || 0
            }

            return t.prototype.copy = function (t) {
                return this.x = t.x, this.y = t.y, this
            }, t.prototype.clone = function () {
                return new t(this.x, this.y)
            }, t.prototype.set = function (t, e) {
                return this.x = t, this.y = e, this
            }, t.prototype.equal = function (t) {
                return t.x === this.x && t.y === this.y
            }, t.prototype.add = function (t) {
                return this.x += t.x, this.y += t.y, this
            }, t.prototype.scale = function (t) {
                this.x *= t, this.y *= t
            }, t.prototype.scaleAndAdd = function (t, e) {
                this.x += t.x * e, this.y += t.y * e
            }, t.prototype.sub = function (t) {
                return this.x -= t.x, this.y -= t.y, this
            }, t.prototype.dot = function (t) {
                return this.x * t.x + this.y * t.y
            }, t.prototype.len = function () {
                return Math.sqrt(this.x * this.x + this.y * this.y)
            }, t.prototype.lenSquare = function () {
                return this.x * this.x + this.y * this.y
            }, t.prototype.normalize = function () {
                var t = this.len();
                return this.x /= t, this.y /= t, this
            }, t.prototype.distance = function (t) {
                var e = this.x - t.x, n = this.y - t.y;
                return Math.sqrt(e * e + n * n)
            }, t.prototype.distanceSquare = function (t) {
                var e = this.x - t.x, n = this.y - t.y;
                return e * e + n * n
            }, t.prototype.negate = function () {
                return this.x = -this.x, this.y = -this.y, this
            }, t.prototype.transform = function (t) {
                if (t) {
                    var e = this.x, n = this.y;
                    return this.x = t[0] * e + t[2] * n + t[4], this.y = t[1] * e + t[3] * n + t[5], this
                }
            }, t.prototype.toArray = function (t) {
                return t[0] = this.x, t[1] = this.y, t
            }, t.prototype.fromArray = function (t) {
                this.x = t[0], this.y = t[1]
            }, t.set = function (t, e, n) {
                t.x = e, t.y = n
            }, t.copy = function (t, e) {
                t.x = e.x, t.y = e.y
            }, t.len = function (t) {
                return Math.sqrt(t.x * t.x + t.y * t.y)
            }, t.lenSquare = function (t) {
                return t.x * t.x + t.y * t.y
            }, t.dot = function (t, e) {
                return t.x * e.x + t.y * e.y
            }, t.add = function (t, e, n) {
                t.x = e.x + n.x, t.y = e.y + n.y
            }, t.sub = function (t, e, n) {
                t.x = e.x - n.x, t.y = e.y - n.y
            }, t.scale = function (t, e, n) {
                t.x = e.x * n, t.y = e.y * n
            }, t.scaleAndAdd = function (t, e, n, i) {
                t.x = e.x + n.x * i, t.y = e.y + n.y * i
            }, t.lerp = function (t, e, n, i) {
                var r = 1 - i;
                t.x = r * e.x + i * n.x, t.y = r * e.y + i * n.y
            }, t
        }(), WD = Math.min, XD = Math.max, YD = new HD, ZD = new HD, UD = new HD, jD = new HD, qD = new HD, KD = new HD,
        $D = function () {
            function t(t, e, n, i) {
                0 > n && (t += n, n = -n), 0 > i && (e += i, i = -i), this.x = t, this.y = e, this.width = n, this.height = i
            }

            return t.prototype.union = function (t) {
                var e = WD(t.x, this.x), n = WD(t.y, this.y);
                this.width = isFinite(this.x) && isFinite(this.width) ? XD(t.x + t.width, this.x + this.width) - e : t.width, this.height = isFinite(this.y) && isFinite(this.height) ? XD(t.y + t.height, this.y + this.height) - n : t.height, this.x = e, this.y = n
            }, t.prototype.applyTransform = function (e) {
                t.applyTransform(this, this, e)
            }, t.prototype.calculateTransform = function (t) {
                var e = this, n = t.width / e.width, i = t.height / e.height, r = Gn();
                return Yn(r, r, [-e.x, -e.y]), Un(r, r, [n, i]), Yn(r, r, [t.x, t.y]), r
            }, t.prototype.intersect = function (e, n) {
                if (!e) return !1;
                e instanceof t || (e = t.create(e));
                var i = this, r = i.x, o = i.x + i.width, a = i.y, s = i.y + i.height, l = e.x, u = e.x + e.width,
                    h = e.y, c = e.y + e.height, p = !(l > o || r > u || h > s || a > c);
                if (n) {
                    var d = 1 / 0, f = 0, g = Math.abs(o - l), y = Math.abs(u - r), v = Math.abs(s - h),
                        m = Math.abs(c - a), x = Math.min(g, y), _ = Math.min(v, m);
                    l > o || r > u ? x > f && (f = x, y > g ? HD.set(KD, -g, 0) : HD.set(KD, y, 0)) : d > x && (d = x, y > g ? HD.set(qD, g, 0) : HD.set(qD, -y, 0)), h > s || a > c ? _ > f && (f = _, m > v ? HD.set(KD, 0, -v) : HD.set(KD, 0, m)) : d > x && (d = x, m > v ? HD.set(qD, 0, v) : HD.set(qD, 0, -m))
                }
                return n && HD.copy(n, p ? qD : KD), p
            }, t.prototype.contain = function (t, e) {
                var n = this;
                return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height
            }, t.prototype.clone = function () {
                return new t(this.x, this.y, this.width, this.height)
            }, t.prototype.copy = function (e) {
                t.copy(this, e)
            }, t.prototype.plain = function () {
                return {x: this.x, y: this.y, width: this.width, height: this.height}
            }, t.prototype.isFinite = function () {
                return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height)
            }, t.prototype.isZero = function () {
                return 0 === this.width || 0 === this.height
            }, t.create = function (e) {
                return new t(e.x, e.y, e.width, e.height)
            }, t.copy = function (t, e) {
                t.x = e.x, t.y = e.y, t.width = e.width, t.height = e.height
            }, t.applyTransform = function (e, n, i) {
                if (!i) return void (e !== n && t.copy(e, n));
                if (i[1] < 1e-5 && i[1] > -1e-5 && i[2] < 1e-5 && i[2] > -1e-5) {
                    var r = i[0], o = i[3], a = i[4], s = i[5];
                    return e.x = n.x * r + a, e.y = n.y * o + s, e.width = n.width * r, e.height = n.height * o, e.width < 0 && (e.x += e.width, e.width = -e.width), void (e.height < 0 && (e.y += e.height, e.height = -e.height))
                }
                YD.x = UD.x = n.x, YD.y = jD.y = n.y, ZD.x = jD.x = n.x + n.width, ZD.y = UD.y = n.y + n.height, YD.transform(i), jD.transform(i), ZD.transform(i), UD.transform(i), e.x = WD(YD.x, ZD.x, UD.x, jD.x), e.y = WD(YD.y, ZD.y, UD.y, jD.y);
                var l = XD(YD.x, ZD.x, UD.x, jD.x), u = XD(YD.y, ZD.y, UD.y, jD.y);
                e.width = l - e.x, e.height = u - e.y
            }, t
        }(), JD = {}, QD = "12px sans-serif", tL = {measureText: $n}, eL = "__zr_normal__",
        nL = ["x", "y", "scaleX", "scaleY", "originX", "originY", "rotation", "ignore"],
        iL = {x: !0, y: !0, scaleX: !0, scaleY: !0, originX: !0, originY: !0, rotation: !0, ignore: !1}, rL = {},
        oL = new $D(0, 0, 0, 0), aL = function () {
            function t(t) {
                this.id = o(), this.animators = [], this.currentStates = [], this.states = {}, this._init(t)
            }

            return t.prototype._init = function (t) {
                this.attr(t)
            }, t.prototype.drift = function (t, e) {
                switch (this.draggable) {
                    case"horizontal":
                        e = 0;
                        break;
                    case"vertical":
                        t = 0
                }
                var n = this.transform;
                n || (n = this.transform = [1, 0, 0, 1, 0, 0]), n[4] += t, n[5] += e, this.decomposeTransform(), this.markRedraw()
            }, t.prototype.beforeUpdate = function () {
            }, t.prototype.afterUpdate = function () {
            }, t.prototype.update = function () {
                this.updateTransform(), this.__dirty && this.updateInnerText()
            }, t.prototype.updateInnerText = function (t) {
                var e = this._textContent;
                if (e && (!e.ignore || t)) {
                    this.textConfig || (this.textConfig = {});
                    var n = this.textConfig, i = n.local, r = e.attachedTransform, o = void 0, a = void 0, s = !1;
                    r.parent = i ? this : null;
                    var l = !1;
                    if (r.x = e.x, r.y = e.y, r.originX = e.originX, r.originY = e.originY, r.rotation = e.rotation, r.scaleX = e.scaleX, r.scaleY = e.scaleY, null != n.position) {
                        var u = oL;
                        u.copy(n.layoutRect ? n.layoutRect : this.getBoundingRect()), i || u.applyTransform(this.transform), this.calculateTextPosition ? this.calculateTextPosition(rL, n, u) : oi(rL, n, u), r.x = rL.x, r.y = rL.y, o = rL.align, a = rL.verticalAlign;
                        var h = n.origin;
                        if (h && null != n.rotation) {
                            var c = void 0, p = void 0;
                            "center" === h ? (c = .5 * u.width, p = .5 * u.height) : (c = ri(h[0], u.width), p = ri(h[1], u.height)), l = !0, r.originX = -r.x + c + (i ? 0 : u.x), r.originY = -r.y + p + (i ? 0 : u.y)
                        }
                    }
                    null != n.rotation && (r.rotation = n.rotation);
                    var d = n.offset;
                    d && (r.x += d[0], r.y += d[1], l || (r.originX = -d[0], r.originY = -d[1]));
                    var f = null == n.inside ? "string" == typeof n.position && n.position.indexOf("inside") >= 0 : n.inside,
                        g = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}), y = void 0, v = void 0,
                        m = void 0;
                    f && this.canBeInsideText() ? (y = n.insideFill, v = n.insideStroke, (null == y || "auto" === y) && (y = this.getInsideTextFill()), (null == v || "auto" === v) && (v = this.getInsideTextStroke(y), m = !0)) : (y = n.outsideFill, v = n.outsideStroke, (null == y || "auto" === y) && (y = this.getOutsideFill()), (null == v || "auto" === v) && (v = this.getOutsideStroke(y), m = !0)), y = y || "#000", (y !== g.fill || v !== g.stroke || m !== g.autoStroke || o !== g.align || a !== g.verticalAlign) && (s = !0, g.fill = y, g.stroke = v, g.autoStroke = m, g.align = o, g.verticalAlign = a, e.setDefaultTextStyle(g)), e.__dirty |= jA, s && e.dirtyStyle(!0)
                }
            }, t.prototype.canBeInsideText = function () {
                return !0
            }, t.prototype.getInsideTextFill = function () {
                return "#fff"
            }, t.prototype.getInsideTextStroke = function () {
                return "#000"
            }, t.prototype.getOutsideFill = function () {
                return this.__zr && this.__zr.isDarkMode() ? PD : kD
            }, t.prototype.getOutsideStroke = function () {
                var t = this.__zr && this.__zr.getBackgroundColor(), e = "string" == typeof t && an(t);
                e || (e = [255, 255, 255, 1]);
                for (var n = e[3], i = this.__zr.isDarkMode(), r = 0; 3 > r; r++) e[r] = e[r] * n + (i ? 0 : 255) * (1 - n);
                return e[3] = 1, gn(e, "rgba")
            }, t.prototype.traverse = function () {
            }, t.prototype.attrKV = function (t, e) {
                "textConfig" === t ? this.setTextConfig(e) : "textContent" === t ? this.setTextContent(e) : "clipPath" === t ? this.setClipPath(e) : "extra" === t ? (this.extra = this.extra || {}, h(this.extra, e)) : this[t] = e
            }, t.prototype.hide = function () {
                this.ignore = !0, this.markRedraw()
            }, t.prototype.show = function () {
                this.ignore = !1, this.markRedraw()
            }, t.prototype.attr = function (t, e) {
                if ("string" == typeof t) this.attrKV(t, e); else if (D(t)) for (var n = t, i = b(n), r = 0; r < i.length; r++) {
                    var o = i[r];
                    this.attrKV(o, t[o])
                }
                return this.markRedraw(), this
            }, t.prototype.saveCurrentToNormalState = function (t) {
                this._innerSaveToNormal(t);
                for (var e = this._normalState, n = 0; n < this.animators.length; n++) {
                    var i = this.animators[n], r = i.__fromStateTransition;
                    if (!r || r === eL) {
                        var o = i.targetName, a = o ? e[o] : e;
                        i.saveFinalToTarget(a)
                    }
                }
            }, t.prototype._innerSaveToNormal = function (t) {
                var e = this._normalState;
                e || (e = this._normalState = {}), t.textConfig && !e.textConfig && (e.textConfig = this.textConfig), this._savePrimaryToNormal(t, e, nL)
            }, t.prototype._savePrimaryToNormal = function (t, e, n) {
                for (var i = 0; i < n.length; i++) {
                    var r = n[i];
                    null == t[r] || r in e || (e[r] = this[r])
                }
            }, t.prototype.hasState = function () {
                return this.currentStates.length > 0
            }, t.prototype.getState = function (t) {
                return this.states[t]
            }, t.prototype.ensureState = function (t) {
                var e = this.states;
                return e[t] || (e[t] = {}), e[t]
            }, t.prototype.clearStates = function (t) {
                this.useState(eL, !1, t)
            }, t.prototype.useState = function (t, e, n, i) {
                var r = t === eL, o = this.hasState();
                if (o || !r) {
                    var s = this.currentStates, l = this.stateTransition;
                    if (!(p(s, t) >= 0) || !e && 1 !== s.length) {
                        var u;
                        if (this.stateProxy && !r && (u = this.stateProxy(t)), u || (u = this.states && this.states[t]), !u && !r) return void a("State " + t + " not exists.");
                        r || this.saveCurrentToNormalState(u);
                        var h = !!(u && u.hoverLayer || i);
                        h && this._toggleHoverLayerFlag(!0), this._applyStateObj(t, u, this._normalState, e, !n && !this.__inHover && l && l.duration > 0, l);
                        var c = this._textContent, d = this._textGuide;
                        return c && c.useState(t, e, n, h), d && d.useState(t, e, n, h), r ? (this.currentStates = [], this._normalState = {}) : e ? this.currentStates.push(t) : this.currentStates = [t], this._updateAnimationTargets(), this.markRedraw(), !h && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~jA), u
                    }
                }
            }, t.prototype.useStates = function (t, e, n) {
                if (t.length) {
                    var i = [], r = this.currentStates, o = t.length, a = o === r.length;
                    if (a) for (var s = 0; o > s; s++) if (t[s] !== r[s]) {
                        a = !1;
                        break
                    }
                    if (a) return;
                    for (var s = 0; o > s; s++) {
                        var l = t[s], u = void 0;
                        this.stateProxy && (u = this.stateProxy(l, t)), u || (u = this.states[l]), u && i.push(u)
                    }
                    var h = i[o - 1], c = !!(h && h.hoverLayer || n);
                    c && this._toggleHoverLayerFlag(!0);
                    var p = this._mergeStates(i), d = this.stateTransition;
                    this.saveCurrentToNormalState(p), this._applyStateObj(t.join(","), p, this._normalState, !1, !e && !this.__inHover && d && d.duration > 0, d);
                    var f = this._textContent, g = this._textGuide;
                    f && f.useStates(t, e, c), g && g.useStates(t, e, c), this._updateAnimationTargets(), this.currentStates = t.slice(), this.markRedraw(), !c && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~jA)
                } else this.clearStates()
            }, t.prototype._updateAnimationTargets = function () {
                for (var t = 0; t < this.animators.length; t++) {
                    var e = this.animators[t];
                    e.targetName && e.changeTarget(this[e.targetName])
                }
            }, t.prototype.removeState = function (t) {
                var e = p(this.currentStates, t);
                if (e >= 0) {
                    var n = this.currentStates.slice();
                    n.splice(e, 1), this.useStates(n)
                }
            }, t.prototype.replaceState = function (t, e, n) {
                var i = this.currentStates.slice(), r = p(i, t), o = p(i, e) >= 0;
                r >= 0 ? o ? i.splice(r, 1) : i[r] = e : n && !o && i.push(e), this.useStates(i)
            }, t.prototype.toggleState = function (t, e) {
                e ? this.useState(t, !0) : this.removeState(t)
            }, t.prototype._mergeStates = function (t) {
                for (var e, n = {}, i = 0; i < t.length; i++) {
                    var r = t[i];
                    h(n, r), r.textConfig && (e = e || {}, h(e, r.textConfig))
                }
                return e && (n.textConfig = e), n
            }, t.prototype._applyStateObj = function (t, e, n, i, r, o) {
                var a = !(e && i);
                e && e.textConfig ? (this.textConfig = h({}, i ? this.textConfig : n.textConfig), h(this.textConfig, e.textConfig)) : a && n.textConfig && (this.textConfig = n.textConfig);
                for (var s = {}, l = !1, u = 0; u < nL.length; u++) {
                    var c = nL[u], p = r && iL[c];
                    e && null != e[c] ? p ? (l = !0, s[c] = e[c]) : this[c] = e[c] : a && null != n[c] && (p ? (l = !0, s[c] = n[c]) : this[c] = n[c])
                }
                if (!r) for (var u = 0; u < this.animators.length; u++) {
                    var d = this.animators[u], f = d.targetName;
                    d.__changeFinalValue(f ? (e || n)[f] : e || n)
                }
                l && this._transitionState(t, s, o)
            }, t.prototype._attachComponent = function (t) {
                if (t.__zr && !t.__hostTarget) throw new Error("Text element has been added to zrender.");
                if (t === this) throw new Error("Recursive component attachment.");
                var e = this.__zr;
                e && t.addSelfToZr(e), t.__zr = e, t.__hostTarget = this
            }, t.prototype._detachComponent = function (t) {
                t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__hostTarget = null
            }, t.prototype.getClipPath = function () {
                return this._clipPath
            }, t.prototype.setClipPath = function (t) {
                this._clipPath && this._clipPath !== t && this.removeClipPath(), this._attachComponent(t), this._clipPath = t, this.markRedraw()
            }, t.prototype.removeClipPath = function () {
                var t = this._clipPath;
                t && (this._detachComponent(t), this._clipPath = null, this.markRedraw())
            }, t.prototype.getTextContent = function () {
                return this._textContent
            }, t.prototype.setTextContent = function (t) {
                var e = this._textContent;
                if (e !== t) {
                    if (e && e !== t && this.removeTextContent(), t.__zr && !t.__hostTarget) throw new Error("Text element has been added to zrender.");
                    t.attachedTransform = new GD, this._attachComponent(t), this._textContent = t, this.markRedraw()
                }
            }, t.prototype.setTextConfig = function (t) {
                this.textConfig || (this.textConfig = {}), h(this.textConfig, t), this.markRedraw()
            }, t.prototype.removeTextConfig = function () {
                this.textConfig = null, this.markRedraw()
            }, t.prototype.removeTextContent = function () {
                var t = this._textContent;
                t && (t.attachedTransform = null, this._detachComponent(t), this._textContent = null, this._innerTextDefaultStyle = null, this.markRedraw())
            }, t.prototype.getTextGuideLine = function () {
                return this._textGuide
            }, t.prototype.setTextGuideLine = function (t) {
                this._textGuide && this._textGuide !== t && this.removeTextGuideLine(), this._attachComponent(t), this._textGuide = t, this.markRedraw()
            }, t.prototype.removeTextGuideLine = function () {
                var t = this._textGuide;
                t && (this._detachComponent(t), this._textGuide = null, this.markRedraw())
            }, t.prototype.markRedraw = function () {
                this.__dirty |= jA;
                var t = this.__zr;
                t && (this.__inHover ? t.refreshHover() : t.refresh()), this.__hostTarget && this.__hostTarget.markRedraw()
            }, t.prototype.dirty = function () {
                this.markRedraw()
            }, t.prototype._toggleHoverLayerFlag = function (t) {
                this.__inHover = t;
                var e = this._textContent, n = this._textGuide;
                e && (e.__inHover = t), n && (n.__inHover = t)
            }, t.prototype.addSelfToZr = function (t) {
                this.__zr = t;
                var e = this.animators;
                if (e) for (var n = 0; n < e.length; n++) t.animation.addAnimator(e[n]);
                this._clipPath && this._clipPath.addSelfToZr(t), this._textContent && this._textContent.addSelfToZr(t), this._textGuide && this._textGuide.addSelfToZr(t)
            }, t.prototype.removeSelfFromZr = function (t) {
                this.__zr = null;
                var e = this.animators;
                if (e) for (var n = 0; n < e.length; n++) t.animation.removeAnimator(e[n]);
                this._clipPath && this._clipPath.removeSelfFromZr(t), this._textContent && this._textContent.removeSelfFromZr(t), this._textGuide && this._textGuide.removeSelfFromZr(t)
            }, t.prototype.animate = function (t, e) {
                var n = t ? this[t] : this;
                if (!n) return void a('Property "' + t + '" is not existed in element ' + this.id);
                var i = new fD(n, e);
                return this.addAnimator(i, t), i
            }, t.prototype.addAnimator = function (t, e) {
                var n = this.__zr, i = this;
                t.during(function () {
                    i.updateDuringAnimation(e)
                }).done(function () {
                    var e = i.animators, n = p(e, t);
                    n >= 0 && e.splice(n, 1)
                }), this.animators.push(t), n && n.animation.addAnimator(t), n && n.wakeUp()
            }, t.prototype.updateDuringAnimation = function () {
                this.markRedraw()
            }, t.prototype.stopAnimation = function (t, e) {
                for (var n = this.animators, i = n.length, r = [], o = 0; i > o; o++) {
                    var a = n[o];
                    t && t !== a.scope ? r.push(a) : a.stop(e)
                }
                return this.animators = r, this
            }, t.prototype.animateTo = function (t, e, n) {
                ai(this, t, e, n)
            }, t.prototype.animateFrom = function (t, e, n) {
                ai(this, t, e, n, !0)
            }, t.prototype._transitionState = function (t, e, n, i) {
                for (var r = ai(this, e, n, i), o = 0; o < r.length; o++) r[o].__fromStateTransition = t
            }, t.prototype.getBoundingRect = function () {
                return null
            }, t.prototype.getPaintRect = function () {
                return null
            }, t.initDefaultProps = function () {
                function e(t, e, n) {
                    r[t + e + n] || (console.warn("DEPRECATED: '" + t + "' has been deprecated. use '" + e + "', '" + n + "' instead"), r[t + e + n] = !0)
                }

                function n(t, n, r, o) {
                    function a(t, e) {
                        Object.defineProperty(e, 0, {
                            get: function () {
                                return t[r]
                            }, set: function (e) {
                                t[r] = e
                            }
                        }), Object.defineProperty(e, 1, {
                            get: function () {
                                return t[o]
                            }, set: function (e) {
                                t[o] = e
                            }
                        })
                    }

                    Object.defineProperty(i, t, {
                        get: function () {
                            if (e(t, r, o), !this[n]) {
                                var i = this[n] = [];
                                a(this, i)
                            }
                            return this[n]
                        }, set: function (i) {
                            e(t, r, o), this[r] = i[0], this[o] = i[1], this[n] = i, a(this, i)
                        }
                    })
                }

                var i = t.prototype;
                i.type = "element", i.name = "", i.ignore = !1, i.silent = !1, i.isGroup = !1, i.draggable = !1, i.dragging = !1, i.ignoreClip = !1, i.__inHover = !1, i.__dirty = jA;
                var r = {};
                Object.defineProperty && (!oA.browser.ie || oA.browser.version > 8) && (n("position", "_legacyPos", "x", "y"), n("scale", "_legacyScale", "scaleX", "scaleY"), n("origin", "_legacyOrigin", "originX", "originY"))
            }(), t
        }();
    f(aL, LA), f(aL, GD);
    var sL = function (t) {
        function n(e) {
            var n = t.call(this) || this;
            return n.isGroup = !0, n._children = [], n.attr(e), n
        }

        return e(n, t), n.prototype.childrenRef = function () {
            return this._children
        }, n.prototype.children = function () {
            return this._children.slice()
        }, n.prototype.childAt = function (t) {
            return this._children[t]
        }, n.prototype.childOfName = function (t) {
            for (var e = this._children, n = 0; n < e.length; n++) if (e[n].name === t) return e[n]
        }, n.prototype.childCount = function () {
            return this._children.length
        }, n.prototype.add = function (t) {
            if (t && (t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), t.__hostTarget)) throw"This elemenet has been used as an attachment";
            return this
        }, n.prototype.addBefore = function (t, e) {
            if (t && t !== this && t.parent !== this && e && e.parent === this) {
                var n = this._children, i = n.indexOf(e);
                i >= 0 && (n.splice(i, 0, t), this._doAdd(t))
            }
            return this
        }, n.prototype.replaceAt = function (t, e) {
            var n = this._children, i = n[e];
            if (t && t !== this && t.parent !== this && t !== i) {
                n[e] = t, i.parent = null;
                var r = this.__zr;
                r && i.removeSelfFromZr(r), this._doAdd(t)
            }
            return this
        }, n.prototype._doAdd = function (t) {
            t.parent && t.parent.remove(t), t.parent = this;
            var e = this.__zr;
            e && e !== t.__zr && t.addSelfToZr(e), e && e.refresh()
        }, n.prototype.remove = function (t) {
            var e = this.__zr, n = this._children, i = p(n, t);
            return 0 > i ? this : (n.splice(i, 1), t.parent = null, e && t.removeSelfFromZr(e), e && e.refresh(), this)
        }, n.prototype.removeAll = function () {
            for (var t = this._children, e = this.__zr, n = 0; n < t.length; n++) {
                var i = t[n];
                e && i.removeSelfFromZr(e), i.parent = null
            }
            return t.length = 0, this
        }, n.prototype.eachChild = function (t, e) {
            for (var n = this._children, i = 0; i < n.length; i++) {
                var r = n[i];
                t.call(e, r, i)
            }
            return this
        }, n.prototype.traverse = function (t, e) {
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n], r = t.call(e, i);
                i.isGroup && !r && i.traverse(t, e)
            }
            return this
        }, n.prototype.addSelfToZr = function (e) {
            t.prototype.addSelfToZr.call(this, e);
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n];
                i.addSelfToZr(e)
            }
        }, n.prototype.removeSelfFromZr = function (e) {
            t.prototype.removeSelfFromZr.call(this, e);
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n];
                i.removeSelfFromZr(e)
            }
        }, n.prototype.getBoundingRect = function (t) {
            for (var e = new $D(0, 0, 0, 0), n = t || this._children, i = [], r = null, o = 0; o < n.length; o++) {
                var a = n[o];
                if (!a.ignore && !a.invisible) {
                    var s = a.getBoundingRect(), l = a.getLocalTransform(i);
                    l ? ($D.applyTransform(e, s, l), r = r || e.clone(), r.union(e)) : (r = r || s.clone(), r.union(s))
                }
            }
            return r || e
        }, n
    }(aL);
    sL.prototype.type = "group";
    var lL = !oA.canvasSupported, uL = {}, hL = {}, cL = function () {
            function t(t, e, n) {
                var i = this;
                this._sleepAfterStill = 10, this._stillFrameAccum = 0, this._needsRefresh = !0, this._needsRefreshHover = !0, this._darkMode = !1, n = n || {}, this.dom = e, this.id = t;
                var r = new JA, o = n.renderer || "canvas";
                if (lL) throw new Error("IE8 support has been dropped since 5.0");
                if (uL[o] || (o = b(uL)[0]), !uL[o]) throw new Error("Renderer '" + o + "' is not imported. Please import it first.");
                n.useDirtyRect = null == n.useDirtyRect ? !1 : n.useDirtyRect;
                var a = new uL[o](e, r, n, t);
                this.storage = r, this.painter = a;
                var s = oA.node || oA.worker ? null : new ID(a.getViewportRoot(), a.root);
                this.handler = new XA(r, a, s, a.root), this.animation = new gD({
                    stage: {
                        update: function () {
                            return i._flush(!0)
                        }
                    }
                }), this.animation.start()
            }

            return t.prototype.add = function (t) {
                t && (this.storage.addRoot(t), t.addSelfToZr(this), this.refresh())
            }, t.prototype.remove = function (t) {
                t && (this.storage.delRoot(t), t.removeSelfFromZr(this), this.refresh())
            }, t.prototype.configLayer = function (t, e) {
                this.painter.configLayer && this.painter.configLayer(t, e), this.refresh()
            }, t.prototype.setBackgroundColor = function (t) {
                this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this.refresh(), this._backgroundColor = t, this._darkMode = pi(t)
            }, t.prototype.getBackgroundColor = function () {
                return this._backgroundColor
            }, t.prototype.setDarkMode = function (t) {
                this._darkMode = t
            }, t.prototype.isDarkMode = function () {
                return this._darkMode
            }, t.prototype.refreshImmediately = function (t) {
                t || this.animation.update(!0), this._needsRefresh = !1, this.painter.refresh(), this._needsRefresh = !1
            }, t.prototype.refresh = function () {
                this._needsRefresh = !0, this.animation.start()
            }, t.prototype.flush = function () {
                this._flush(!1)
            }, t.prototype._flush = function (t) {
                var e, n = (new Date).getTime();
                this._needsRefresh && (e = !0, this.refreshImmediately(t)), this._needsRefreshHover && (e = !0, this.refreshHoverImmediately());
                var i = (new Date).getTime();
                e ? (this._stillFrameAccum = 0, this.trigger("rendered", {elapsedTime: i - n})) : this._sleepAfterStill > 0 && (this._stillFrameAccum++, this._stillFrameAccum > this._sleepAfterStill && this.animation.stop())
            }, t.prototype.setSleepAfterStill = function (t) {
                this._sleepAfterStill = t
            }, t.prototype.wakeUp = function () {
                this.animation.start(), this._stillFrameAccum = 0
            }, t.prototype.addHover = function () {
            }, t.prototype.removeHover = function () {
            }, t.prototype.clearHover = function () {
            }, t.prototype.refreshHover = function () {
                this._needsRefreshHover = !0
            }, t.prototype.refreshHoverImmediately = function () {
                this._needsRefreshHover = !1, this.painter.refreshHover && "canvas" === this.painter.getType() && this.painter.refreshHover()
            }, t.prototype.resize = function (t) {
                t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize()
            }, t.prototype.clearAnimation = function () {
                this.animation.clear()
            }, t.prototype.getWidth = function () {
                return this.painter.getWidth()
            }, t.prototype.getHeight = function () {
                return this.painter.getHeight()
            }, t.prototype.pathToImage = function (t, e) {
                return this.painter.pathToImage ? this.painter.pathToImage(t, e) : void 0
            }, t.prototype.setCursorStyle = function (t) {
                this.handler.setCursorStyle(t)
            }, t.prototype.findHover = function (t, e) {
                return this.handler.findHover(t, e)
            }, t.prototype.on = function (t, e, n) {
                return this.handler.on(t, e, n), this
            }, t.prototype.off = function (t, e) {
                this.handler.off(t, e)
            }, t.prototype.trigger = function (t, e) {
                this.handler.trigger(t, e)
            }, t.prototype.clear = function () {
                for (var t = this.storage.getRoots(), e = 0; e < t.length; e++) t[e] instanceof sL && t[e].removeSelfFromZr(this);
                this.storage.delAllRoots(), this.painter.clear()
            }, t.prototype.dispose = function () {
                this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, ci(this.id)
            }, t
        }(), pL = "5.1.1", dL = (Object.freeze || Object)({
            init: di,
            dispose: fi,
            disposeAll: gi,
            getInstance: yi,
            registerPainter: vi,
            version: pL
        }), fL = 1e-4, gL = 20, yL = 9007199254740991,
        vL = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,
        mL = ("undefined" != typeof console && console.warn && console.log, "series\x00"), xL = "\x00_ec_\x00",
        _L = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"],
        bL = Bi(), wL = {useDefault: !0, enableAll: !1, enableNone: !1},
        SL = {useDefault: !1, enableAll: !0, enableNone: !0}, ML = ".", IL = "___EC__COMPONENT__CONTAINER___",
        TL = "___EC__EXTENDED_CLASS___", CL = Math.round(10 * Math.random()),
        AL = [["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"]],
        DL = Ar(AL), LL = function () {
            function t() {
            }

            return t.prototype.getAreaStyle = function (t, e) {
                return DL(this, t, e)
            }, t
        }(), kL = new rD(50), PL = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, OL = function () {
            function t() {
            }

            return t
        }(), RL = function () {
            function t(t) {
                this.tokens = [], t && (this.tokens = t)
            }

            return t
        }(), zL = function () {
            function t() {
                this.width = 0, this.height = 0, this.contentWidth = 0, this.contentHeight = 0, this.outerWidth = 0, this.outerHeight = 0, this.lines = []
            }

            return t
        }(), EL = m(",&?/;] ".split(""), function (t, e) {
            return t[e] = !0, t
        }, {}), NL = "__zr_style_" + Math.round(10 * Math.random()),
        BL = {shadowBlur: 0, shadowOffsetX: 0, shadowOffsetY: 0, shadowColor: "#000", opacity: 1, blend: "source-over"},
        VL = {style: {shadowBlur: !0, shadowOffsetX: !0, shadowOffsetY: !0, shadowColor: !0, opacity: !0}};
    BL[NL] = !0;
    var FL = ["z", "z2", "invisible"], GL = ["invisible"], HL = function (t) {
            function n(e) {
                return t.call(this, e) || this
            }

            return e(n, t), n.prototype._init = function (e) {
                for (var n = b(e), i = 0; i < n.length; i++) {
                    var r = n[i];
                    "style" === r ? this.useStyle(e[r]) : t.prototype.attrKV.call(this, r, e[r])
                }
                this.style || this.useStyle({})
            }, n.prototype.beforeBrush = function () {
            }, n.prototype.afterBrush = function () {
            }, n.prototype.innerBeforeBrush = function () {
            }, n.prototype.innerAfterBrush = function () {
            }, n.prototype.shouldBePainted = function (t, e, n, i) {
                var r = this.transform;
                if (this.ignore || this.invisible || 0 === this.style.opacity || this.culling && Wr(this, t, e) || r && !r[0] && !r[3]) return !1;
                if (n && this.__clipPaths) for (var o = 0; o < this.__clipPaths.length; ++o) if (this.__clipPaths[o].isZeroArea()) return !1;
                if (i && this.parent) for (var a = this.parent; a;) {
                    if (a.ignore) return !1;
                    a = a.parent
                }
                return !0
            }, n.prototype.contain = function (t, e) {
                return this.rectContain(t, e)
            }, n.prototype.traverse = function (t, e) {
                t.call(e, this)
            }, n.prototype.rectContain = function (t, e) {
                var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect();
                return i.contain(n[0], n[1])
            }, n.prototype.getPaintRect = function () {
                var t = this._paintRect;
                if (!this._paintRect || this.__dirty) {
                    var e = this.transform, n = this.getBoundingRect(), i = this.style, r = i.shadowBlur || 0,
                        o = i.shadowOffsetX || 0, a = i.shadowOffsetY || 0;
                    t = this._paintRect || (this._paintRect = new $D(0, 0, 0, 0)), e ? $D.applyTransform(t, n, e) : t.copy(n), (r || o || a) && (t.width += 2 * r + Math.abs(o), t.height += 2 * r + Math.abs(a), t.x = Math.min(t.x, t.x + o - r), t.y = Math.min(t.y, t.y + a - r));
                    var s = this.dirtyRectTolerance;
                    t.isZero() || (t.x = Math.floor(t.x - s), t.y = Math.floor(t.y - s), t.width = Math.ceil(t.width + 1 + 2 * s), t.height = Math.ceil(t.height + 1 + 2 * s))
                }
                return t
            }, n.prototype.setPrevPaintRect = function (t) {
                t ? (this._prevPaintRect = this._prevPaintRect || new $D(0, 0, 0, 0), this._prevPaintRect.copy(t)) : this._prevPaintRect = null
            }, n.prototype.getPrevPaintRect = function () {
                return this._prevPaintRect
            }, n.prototype.animateStyle = function (t) {
                return this.animate("style", t)
            }, n.prototype.updateDuringAnimation = function (t) {
                "style" === t ? this.dirtyStyle() : this.markRedraw()
            }, n.prototype.attrKV = function (e, n) {
                "style" !== e ? t.prototype.attrKV.call(this, e, n) : this.style ? this.setStyle(n) : this.useStyle(n)
            }, n.prototype.setStyle = function (t, e) {
                return "string" == typeof t ? this.style[t] = e : h(this.style, t), this.dirtyStyle(), this
            }, n.prototype.dirtyStyle = function (t) {
                t || this.markRedraw(), this.__dirty |= qA, this._rect && (this._rect = null)
            }, n.prototype.dirty = function () {
                this.dirtyStyle()
            }, n.prototype.styleChanged = function () {
                return !!(this.__dirty & qA)
            }, n.prototype.styleUpdated = function () {
                this.__dirty &= ~qA
            }, n.prototype.createStyle = function (t) {
                return j(BL, t)
            }, n.prototype.useStyle = function (t) {
                t[NL] || (t = this.createStyle(t)), this.__inHover ? this.__hoverStyle = t : this.style = t, this.dirtyStyle()
            }, n.prototype.isStyleObject = function (t) {
                return t[NL]
            }, n.prototype._innerSaveToNormal = function (e) {
                t.prototype._innerSaveToNormal.call(this, e);
                var n = this._normalState;
                e.style && !n.style && (n.style = this._mergeStyle(this.createStyle(), this.style)), this._savePrimaryToNormal(e, n, FL)
            }, n.prototype._applyStateObj = function (e, n, i, r, o, a) {
                t.prototype._applyStateObj.call(this, e, n, i, r, o, a);
                var s, l = !(n && r);
                if (n && n.style ? o ? r ? s = n.style : (s = this._mergeStyle(this.createStyle(), i.style), this._mergeStyle(s, n.style)) : (s = this._mergeStyle(this.createStyle(), r ? this.style : i.style), this._mergeStyle(s, n.style)) : l && (s = i.style), s) if (o) {
                    var u = this.style;
                    if (this.style = this.createStyle(l ? {} : u), l) for (var h = b(u), c = 0; c < h.length; c++) {
                        var p = h[c];
                        p in s && (s[p] = s[p], this.style[p] = u[p])
                    }
                    for (var d = b(s), c = 0; c < d.length; c++) {
                        var p = d[c];
                        this.style[p] = this.style[p]
                    }
                    this._transitionState(e, {style: s}, a, this.getAnimationStyleProps())
                } else this.useStyle(s);
                for (var f = this.__inHover ? GL : FL, c = 0; c < f.length; c++) {
                    var p = f[c];
                    n && null != n[p] ? this[p] = n[p] : l && null != i[p] && (this[p] = i[p])
                }
            }, n.prototype._mergeStates = function (e) {
                for (var n, i = t.prototype._mergeStates.call(this, e), r = 0; r < e.length; r++) {
                    var o = e[r];
                    o.style && (n = n || {}, this._mergeStyle(n, o.style))
                }
                return n && (i.style = n), i
            }, n.prototype._mergeStyle = function (t, e) {
                return h(t, e), t
            }, n.prototype.getAnimationStyleProps = function () {
                return VL
            }, n.initDefaultProps = function () {
                var t = n.prototype;
                t.type = "displayable", t.invisible = !1, t.z = 0, t.z2 = 0, t.zlevel = 0, t.culling = !1, t.cursor = "pointer", t.rectHover = !1, t.incremental = !1, t._rect = null, t.dirtyRectTolerance = 0, t.__dirty = jA | qA
            }(), n
        }(aL), WL = new $D(0, 0, 0, 0), XL = new $D(0, 0, 0, 0), YL = Math.pow, ZL = Math.sqrt, UL = 1e-8, jL = 1e-4,
        qL = ZL(3), KL = 1 / 3, $L = $(), JL = $(), QL = $(), tk = Math.min, ek = Math.max, nk = Math.sin,
        ik = Math.cos, rk = 2 * Math.PI, ok = $(), ak = $(), sk = $(), lk = [], uk = [],
        hk = {M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7}, ck = [], pk = [], dk = [], fk = [], gk = [], yk = [],
        vk = Math.min, mk = Math.max, xk = Math.cos, _k = Math.sin, bk = Math.sqrt, wk = Math.abs, Sk = Math.PI,
        Mk = 2 * Sk, Ik = "undefined" != typeof Float32Array, Tk = [], Ck = function () {
            function t(t) {
                this.dpr = 1, this._xi = 0, this._yi = 0, this._x0 = 0, this._y0 = 0, this._len = 0, t && (this._saveData = !1), this._saveData && (this.data = [])
            }

            return t.prototype.increaseVersion = function () {
                this._version++
            }, t.prototype.getVersion = function () {
                return this._version
            }, t.prototype.setScale = function (t, e, n) {
                n = n || 0, n > 0 && (this._ux = wk(n / DD / t) || 0, this._uy = wk(n / DD / e) || 0)
            }, t.prototype.setDPR = function (t) {
                this.dpr = t
            }, t.prototype.setContext = function (t) {
                this._ctx = t
            }, t.prototype.getContext = function () {
                return this._ctx
            }, t.prototype.beginPath = function () {
                return this._ctx && this._ctx.beginPath(), this.reset(), this
            }, t.prototype.reset = function () {
                this._saveData && (this._len = 0), this._lineDash && (this._lineDash = null, this._dashOffset = 0), this._pathSegLen && (this._pathSegLen = null, this._pathLen = 0), this._version++
            }, t.prototype.moveTo = function (t, e) {
                return this._drawPendingPt(), this.addData(hk.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, this._y0 = e, this._xi = t, this._yi = e, this
            }, t.prototype.lineTo = function (t, e) {
                var n = wk(t - this._xi), i = wk(e - this._yi), r = n > this._ux || i > this._uy;
                if (this.addData(hk.L, t, e), this._ctx && r && (this._needsDash ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), r) this._xi = t, this._yi = e, this._pendingPtDist = 0; else {
                    var o = n * n + i * i;
                    o > this._pendingPtDist && (this._pendingPtX = t, this._pendingPtY = e, this._pendingPtDist = o)
                }
                return this
            }, t.prototype.bezierCurveTo = function (t, e, n, i, r, o) {
                return this.addData(hk.C, t, e, n, i, r, o), this._ctx && (this._needsDash ? this._dashedBezierTo(t, e, n, i, r, o) : this._ctx.bezierCurveTo(t, e, n, i, r, o)), this._xi = r, this._yi = o, this
            }, t.prototype.quadraticCurveTo = function (t, e, n, i) {
                return this.addData(hk.Q, t, e, n, i), this._ctx && (this._needsDash ? this._dashedQuadraticTo(t, e, n, i) : this._ctx.quadraticCurveTo(t, e, n, i)), this._xi = n, this._yi = i, this
            }, t.prototype.arc = function (t, e, n, i, r, o) {
                Tk[0] = i, Tk[1] = r, po(Tk, o), i = Tk[0], r = Tk[1];
                var a = r - i;
                return this.addData(hk.A, t, e, n, n, i, a, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, o), this._xi = xk(r) * n + t, this._yi = _k(r) * n + e, this
            }, t.prototype.arcTo = function (t, e, n, i, r) {
                return this._ctx && this._ctx.arcTo(t, e, n, i, r), this
            }, t.prototype.rect = function (t, e, n, i) {
                return this._ctx && this._ctx.rect(t, e, n, i), this.addData(hk.R, t, e, n, i), this
            }, t.prototype.closePath = function () {
                this._drawPendingPt(), this.addData(hk.Z);
                var t = this._ctx, e = this._x0, n = this._y0;
                return t && (this._needsDash && this._dashedLineTo(e, n), t.closePath()), this._xi = e, this._yi = n, this
            }, t.prototype.fill = function (t) {
                t && t.fill(), this.toStatic()
            }, t.prototype.stroke = function (t) {
                t && t.stroke(), this.toStatic()
            }, t.prototype.setLineDash = function (t) {
                if (t instanceof Array) {
                    this._lineDash = t, this._dashIdx = 0;
                    for (var e = 0, n = 0; n < t.length; n++) e += t[n];
                    this._dashSum = e, this._needsDash = !0
                } else this._lineDash = null, this._needsDash = !1;
                return this
            }, t.prototype.setLineDashOffset = function (t) {
                return this._dashOffset = t, this
            }, t.prototype.len = function () {
                return this._len
            }, t.prototype.setData = function (t) {
                var e = t.length;
                this.data && this.data.length === e || !Ik || (this.data = new Float32Array(e));
                for (var n = 0; e > n; n++) this.data[n] = t[n];
                this._len = e
            }, t.prototype.appendPath = function (t) {
                t instanceof Array || (t = [t]);
                for (var e = t.length, n = 0, i = this._len, r = 0; e > r; r++) n += t[r].len();
                Ik && this.data instanceof Float32Array && (this.data = new Float32Array(i + n));
                for (var r = 0; e > r; r++) for (var o = t[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a];
                this._len = i
            }, t.prototype.addData = function () {
                if (this._saveData) {
                    var t = this.data;
                    this._len + arguments.length > t.length && (this._expandData(), t = this.data);
                    for (var e = 0; e < arguments.length; e++) t[this._len++] = arguments[e]
                }
            }, t.prototype._drawPendingPt = function () {
                this._pendingPtDist > 0 && (this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY), this._pendingPtDist = 0)
            }, t.prototype._expandData = function () {
                if (!(this.data instanceof Array)) {
                    for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e];
                    this.data = t
                }
            }, t.prototype._dashedLineTo = function (t, e) {
                var n, i, r = this._dashSum, o = this._lineDash, a = this._ctx, s = this._dashOffset, l = this._xi,
                    u = this._yi, h = t - l, c = e - u, p = bk(h * h + c * c), d = l, f = u, g = o.length;
                for (h /= p, c /= p, 0 > s && (s = r + s), s %= r, d -= s * h, f -= s * c; h > 0 && t >= d || 0 > h && d >= t || 0 === h && (c > 0 && e >= f || 0 > c && f >= e);) i = this._dashIdx, n = o[i], d += h * n, f += c * n, this._dashIdx = (i + 1) % g, h > 0 && l > d || 0 > h && d > l || c > 0 && u > f || 0 > c && f > u || a[i % 2 ? "moveTo" : "lineTo"](h >= 0 ? vk(d, t) : mk(d, t), c >= 0 ? vk(f, e) : mk(f, e));
                h = d - t, c = f - e, this._dashOffset = -bk(h * h + c * c)
            }, t.prototype._dashedBezierTo = function (t, e, n, i, r, o) {
                var a, s, l, u, h, c = this._ctx, p = this._dashSum, d = this._dashOffset, f = this._lineDash, g = this._xi,
                    y = this._yi, v = 0, m = this._dashIdx, x = f.length, _ = 0;
                for (0 > d && (d = p + d), d %= p, a = 0; 1 > a; a += .1) s = Zr(g, t, n, r, a + .1) - Zr(g, t, n, r, a), l = Zr(y, e, i, o, a + .1) - Zr(y, e, i, o, a), v += bk(s * s + l * l);
                for (; x > m && (_ += f[m], !(_ > d)); m++) ;
                for (a = (_ - d) / v; 1 >= a;) u = Zr(g, t, n, r, a), h = Zr(y, e, i, o, a), m % 2 ? c.moveTo(u, h) : c.lineTo(u, h), a += f[m] / v, m = (m + 1) % x;
                m % 2 !== 0 && c.lineTo(r, o), s = r - u, l = o - h, this._dashOffset = -bk(s * s + l * l)
            }, t.prototype._dashedQuadraticTo = function (t, e, n, i) {
                var r = n, o = i;
                n = (n + 2 * t) / 3, i = (i + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, this._dashedBezierTo(t, e, n, i, r, o)
            }, t.prototype.toStatic = function () {
                if (this._saveData) {
                    this._drawPendingPt();
                    var t = this.data;
                    t instanceof Array && (t.length = this._len, Ik && this._len > 11 && (this.data = new Float32Array(t)))
                }
            }, t.prototype.getBoundingRect = function () {
                dk[0] = dk[1] = gk[0] = gk[1] = Number.MAX_VALUE, fk[0] = fk[1] = yk[0] = yk[1] = -Number.MAX_VALUE;
                var t, e = this.data, n = 0, i = 0, r = 0, o = 0;
                for (t = 0; t < this._len;) {
                    var a = e[t++], s = 1 === t;
                    switch (s && (n = e[t], i = e[t + 1], r = n, o = i), a) {
                        case hk.M:
                            n = r = e[t++], i = o = e[t++], gk[0] = r, gk[1] = o, yk[0] = r, yk[1] = o;
                            break;
                        case hk.L:
                            so(n, i, e[t], e[t + 1], gk, yk), n = e[t++], i = e[t++];
                            break;
                        case hk.C:
                            lo(n, i, e[t++], e[t++], e[t++], e[t++], e[t], e[t + 1], gk, yk), n = e[t++], i = e[t++];
                            break;
                        case hk.Q:
                            uo(n, i, e[t++], e[t++], e[t], e[t + 1], gk, yk), n = e[t++], i = e[t++];
                            break;
                        case hk.A:
                            var l = e[t++], u = e[t++], h = e[t++], c = e[t++], p = e[t++], d = e[t++] + p;
                            t += 1;
                            var f = !e[t++];
                            s && (r = xk(p) * h + l, o = _k(p) * c + u), ho(l, u, h, c, p, d, f, gk, yk), n = xk(d) * h + l, i = _k(d) * c + u;
                            break;
                        case hk.R:
                            r = n = e[t++], o = i = e[t++];
                            var g = e[t++], y = e[t++];
                            so(r, o, r + g, o + y, gk, yk);
                            break;
                        case hk.Z:
                            n = r, i = o
                    }
                    ye(dk, dk, gk), ve(fk, fk, yk)
                }
                return 0 === t && (dk[0] = dk[1] = fk[0] = fk[1] = 0), new $D(dk[0], dk[1], fk[0] - dk[0], fk[1] - dk[1])
            }, t.prototype._calculateLength = function () {
                var t = this.data, e = this._len, n = this._ux, i = this._uy, r = 0, o = 0, a = 0, s = 0;
                this._pathSegLen || (this._pathSegLen = []);
                for (var l = this._pathSegLen, u = 0, h = 0, c = 0; e > c;) {
                    var p = t[c++], d = 1 === c;
                    d && (r = t[c], o = t[c + 1], a = r, s = o);
                    var f = -1;
                    switch (p) {
                        case hk.M:
                            r = a = t[c++], o = s = t[c++];
                            break;
                        case hk.L:
                            var g = t[c++], y = t[c++], v = g - r, m = y - o;
                            (wk(v) > n || wk(m) > i || c === e - 1) && (f = Math.sqrt(v * v + m * m), r = g, o = y);
                            break;
                        case hk.C:
                            var x = t[c++], _ = t[c++], g = t[c++], y = t[c++], b = t[c++], w = t[c++];
                            f = Jr(r, o, x, _, g, y, b, w, 10), r = b, o = w;
                            break;
                        case hk.Q:
                            var x = t[c++], _ = t[c++], g = t[c++], y = t[c++];
                            f = oo(r, o, x, _, g, y, 10), r = g, o = y;
                            break;
                        case hk.A:
                            var S = t[c++], M = t[c++], I = t[c++], T = t[c++], C = t[c++], A = t[c++], D = A + C;
                            c += 1;
                        {
                            !t[c++]
                        }
                            d && (a = xk(C) * I + S, s = _k(C) * T + M), f = mk(I, T) * vk(Mk, Math.abs(A)), r = xk(D) * I + S, o = _k(D) * T + M;
                            break;
                        case hk.R:
                            a = r = t[c++], s = o = t[c++];
                            var L = t[c++], k = t[c++];
                            f = 2 * L + 2 * k;
                            break;
                        case hk.Z:
                            var v = a - r, m = s - o;
                            f = Math.sqrt(v * v + m * m), r = a, o = s
                    }
                    f >= 0 && (l[h++] = f, u += f)
                }
                return this._pathLen = u, u
            }, t.prototype.rebuildPath = function (t, e) {
                var n, i, r, o, a, s, l, u, h, c, p, d = this.data, f = this._ux, g = this._uy, y = this._len, v = 1 > e,
                    m = 0, x = 0, _ = 0;
                if (!v || (this._pathSegLen || this._calculateLength(), l = this._pathSegLen, u = this._pathLen, h = e * u)) t:for (var b = 0; y > b;) {
                    var w = d[b++], S = 1 === b;
                    switch (S && (r = d[b], o = d[b + 1], n = r, i = o), w) {
                        case hk.M:
                            _ > 0 && (t.lineTo(c, p), _ = 0), n = r = d[b++], i = o = d[b++], t.moveTo(r, o);
                            break;
                        case hk.L:
                            a = d[b++], s = d[b++];
                            var M = wk(a - r), I = wk(s - o);
                            if (M > f || I > g) {
                                if (v) {
                                    var T = l[x++];
                                    if (m + T > h) {
                                        var C = (h - m) / T;
                                        t.lineTo(r * (1 - C) + a * C, o * (1 - C) + s * C);
                                        break t
                                    }
                                    m += T
                                }
                                t.lineTo(a, s), r = a, o = s, _ = 0
                            } else {
                                var A = M * M + I * I;
                                A > _ && (c = a, p = s, _ = A)
                            }
                            break;
                        case hk.C:
                            var D = d[b++], L = d[b++], k = d[b++], P = d[b++], O = d[b++], R = d[b++];
                            if (v) {
                                var T = l[x++];
                                if (m + T > h) {
                                    var C = (h - m) / T;
                                    Kr(r, D, k, O, C, ck), Kr(o, L, P, R, C, pk), t.bezierCurveTo(ck[1], pk[1], ck[2], pk[2], ck[3], pk[3]);
                                    break t
                                }
                                m += T
                            }
                            t.bezierCurveTo(D, L, k, P, O, R), r = O, o = R;
                            break;
                        case hk.Q:
                            var D = d[b++], L = d[b++], k = d[b++], P = d[b++];
                            if (v) {
                                var T = l[x++];
                                if (m + T > h) {
                                    var C = (h - m) / T;
                                    io(r, D, k, C, ck), io(o, L, P, C, pk), t.quadraticCurveTo(ck[1], pk[1], ck[2], pk[2]);
                                    break t
                                }
                                m += T
                            }
                            t.quadraticCurveTo(D, L, k, P), r = k, o = P;
                            break;
                        case hk.A:
                            var z = d[b++], E = d[b++], N = d[b++], B = d[b++], V = d[b++], F = d[b++], G = d[b++],
                                H = !d[b++], W = N > B ? N : B, X = wk(N - B) > .001, Y = V + F, Z = !1;
                            if (v) {
                                var T = l[x++];
                                m + T > h && (Y = V + F * (h - m) / T, Z = !0), m += T
                            }
                            if (X && t.ellipse ? t.ellipse(z, E, N, B, G, V, Y, H) : t.arc(z, E, W, V, Y, H), Z) break t;
                            S && (n = xk(V) * N + z, i = _k(V) * B + E), r = xk(Y) * N + z, o = _k(Y) * B + E;
                            break;
                        case hk.R:
                            n = r = d[b], i = o = d[b + 1], a = d[b++], s = d[b++];
                            var U = d[b++], j = d[b++];
                            if (v) {
                                var T = l[x++];
                                if (m + T > h) {
                                    var q = h - m;
                                    t.moveTo(a, s), t.lineTo(a + vk(q, U), s), q -= U, q > 0 && t.lineTo(a + U, s + vk(q, j)), q -= j, q > 0 && t.lineTo(a + mk(U - q, 0), s + j), q -= U, q > 0 && t.lineTo(a, s + mk(j - q, 0));
                                    break t
                                }
                                m += T
                            }
                            t.rect(a, s, U, j);
                            break;
                        case hk.Z:
                            if (_ > 0 && (t.lineTo(c, p), _ = 0), v) {
                                var T = l[x++];
                                if (m + T > h) {
                                    var C = (h - m) / T;
                                    t.lineTo(r * (1 - C) + n * C, o * (1 - C) + i * C);
                                    break t
                                }
                                m += T
                            }
                            t.closePath(), r = n, o = i
                    }
                }
            }, t.CMD = hk, t.initDefaultProps = function () {
                var e = t.prototype;
                e._saveData = !0, e._needsDash = !1, e._dashOffset = 0, e._dashIdx = 0, e._dashSum = 0, e._ux = 0, e._uy = 0, e._pendingPtDist = 0, e._version = 0
            }(), t
        }(), Ak = 2 * Math.PI, Dk = 2 * Math.PI, Lk = Ck.CMD, kk = 2 * Math.PI, Pk = 1e-4, Ok = [-1, -1, -1], Rk = [-1, -1],
        zk = c({
            fill: "#000",
            stroke: null,
            strokePercent: 1,
            fillOpacity: 1,
            strokeOpacity: 1,
            lineDashOffset: 0,
            lineWidth: 1,
            lineCap: "butt",
            miterLimit: 10,
            strokeNoScale: !1,
            strokeFirst: !1
        }, BL), Ek = {
            style: c({
                fill: !0,
                stroke: !0,
                strokePercent: !0,
                fillOpacity: !0,
                strokeOpacity: !0,
                lineDashOffset: !0,
                lineWidth: !0,
                miterLimit: !0
            }, VL.style)
        },
        Nk = ["x", "y", "rotation", "scaleX", "scaleY", "originX", "originY", "invisible", "culling", "z", "z2", "zlevel", "parent"],
        Bk = function (t) {
            function n(e) {
                return t.call(this, e) || this
            }

            return e(n, t), n.prototype.update = function () {
                var e = this;
                t.prototype.update.call(this);
                var i = this.style;
                if (i.decal) {
                    var r = this._decalEl = this._decalEl || new n;
                    r.buildPath === n.prototype.buildPath && (r.buildPath = function (t) {
                        e.buildPath(t, e.shape)
                    }), r.silent = !0;
                    var o = r.style;
                    for (var a in i) o[a] !== i[a] && (o[a] = i[a]);
                    o.fill = i.fill ? i.decal : null, o.decal = null, o.shadowColor = null, i.strokeFirst && (o.stroke = null);
                    for (var s = 0; s < Nk.length; ++s) r[Nk[s]] = this[Nk[s]];
                    r.__dirty |= jA
                } else this._decalEl && (this._decalEl = null)
            }, n.prototype.getDecalElement = function () {
                return this._decalEl
            }, n.prototype._init = function (e) {
                var n = b(e);
                this.shape = this.getDefaultShape();
                var i = this.getDefaultStyle();
                i && this.useStyle(i);
                for (var r = 0; r < n.length; r++) {
                    var o = n[r], a = e[o];
                    "style" === o ? this.style ? h(this.style, a) : this.useStyle(a) : "shape" === o ? h(this.shape, a) : t.prototype.attrKV.call(this, o, a)
                }
                this.style || this.useStyle({})
            }, n.prototype.getDefaultStyle = function () {
                return null
            }, n.prototype.getDefaultShape = function () {
                return {}
            }, n.prototype.canBeInsideText = function () {
                return this.hasFill()
            }, n.prototype.getInsideTextFill = function () {
                var t = this.style.fill;
                if ("none" !== t) {
                    if (T(t)) {
                        var e = yn(t, 0);
                        return e > .5 ? kD : e > .2 ? OD : PD
                    }
                    if (t) return PD
                }
                return kD
            }, n.prototype.getInsideTextStroke = function (t) {
                var e = this.style.fill;
                if (T(e)) {
                    var n = this.__zr, i = !(!n || !n.isDarkMode()), r = yn(t, 0) < LD;
                    if (i === r) return e
                }
            }, n.prototype.buildPath = function () {
            }, n.prototype.pathUpdated = function () {
                this.__dirty &= ~KA
            }, n.prototype.createPathProxy = function () {
                this.path = new Ck(!1)
            }, n.prototype.hasStroke = function () {
                var t = this.style, e = t.stroke;
                return !(null == e || "none" === e || !(t.lineWidth > 0))
            }, n.prototype.hasFill = function () {
                var t = this.style, e = t.fill;
                return null != e && "none" !== e
            }, n.prototype.getBoundingRect = function () {
                var t = this._rect, e = this.style, n = !t;
                if (n) {
                    var i = !1;
                    this.path || (i = !0, this.createPathProxy());
                    var r = this.path;
                    (i || this.__dirty & KA) && (r.beginPath(), this.buildPath(r, this.shape, !1), this.pathUpdated()), t = r.getBoundingRect()
                }
                if (this._rect = t, this.hasStroke() && this.path && this.path.len() > 0) {
                    var o = this._rectWithStroke || (this._rectWithStroke = t.clone());
                    if (this.__dirty || n) {
                        o.copy(t);
                        var a = e.strokeNoScale ? this.getLineScale() : 1, s = e.lineWidth;
                        if (!this.hasFill()) {
                            var l = this.strokeContainThreshold;
                            s = Math.max(s, null == l ? 4 : l)
                        }
                        a > 1e-10 && (o.width += s / a, o.height += s / a, o.x -= s / a / 2, o.y -= s / a / 2)
                    }
                    return o
                }
                return t
            }, n.prototype.contain = function (t, e) {
                var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(), r = this.style;
                if (t = n[0], e = n[1], i.contain(t, e)) {
                    var o = this.path;
                    if (this.hasStroke()) {
                        var a = r.lineWidth, s = r.strokeNoScale ? this.getLineScale() : 1;
                        if (s > 1e-10 && (this.hasFill() || (a = Math.max(a, this.strokeContainThreshold)), Co(o, a / s, t, e))) return !0
                    }
                    if (this.hasFill()) return To(o, t, e)
                }
                return !1
            }, n.prototype.dirtyShape = function () {
                this.__dirty |= KA, this._rect && (this._rect = null), this._decalEl && this._decalEl.dirtyShape(), this.markRedraw()
            }, n.prototype.dirty = function () {
                this.dirtyStyle(), this.dirtyShape()
            }, n.prototype.animateShape = function (t) {
                return this.animate("shape", t)
            }, n.prototype.updateDuringAnimation = function (t) {
                "style" === t ? this.dirtyStyle() : "shape" === t ? this.dirtyShape() : this.markRedraw()
            }, n.prototype.attrKV = function (e, n) {
                "shape" === e ? this.setShape(n) : t.prototype.attrKV.call(this, e, n)
            }, n.prototype.setShape = function (t, e) {
                var n = this.shape;
                return n || (n = this.shape = {}), "string" == typeof t ? n[t] = e : h(n, t), this.dirtyShape(), this
            }, n.prototype.shapeChanged = function () {
                return !!(this.__dirty & KA)
            }, n.prototype.createStyle = function (t) {
                return j(zk, t)
            }, n.prototype._innerSaveToNormal = function (e) {
                t.prototype._innerSaveToNormal.call(this, e);
                var n = this._normalState;
                e.shape && !n.shape && (n.shape = h({}, this.shape))
            }, n.prototype._applyStateObj = function (e, n, i, r, o, a) {
                t.prototype._applyStateObj.call(this, e, n, i, r, o, a);
                var s, l = !(n && r);
                if (n && n.shape ? o ? r ? s = n.shape : (s = h({}, i.shape), h(s, n.shape)) : (s = h({}, r ? this.shape : i.shape), h(s, n.shape)) : l && (s = i.shape), s) if (o) {
                    this.shape = h({}, this.shape);
                    for (var u = {}, c = b(s), p = 0; p < c.length; p++) {
                        var d = c[p];
                        "object" == typeof s[d] ? this.shape[d] = s[d] : u[d] = s[d]
                    }
                    this._transitionState(e, {shape: u}, a)
                } else this.shape = s, this.dirtyShape()
            }, n.prototype._mergeStates = function (e) {
                for (var n, i = t.prototype._mergeStates.call(this, e), r = 0; r < e.length; r++) {
                    var o = e[r];
                    o.shape && (n = n || {}, this._mergeStyle(n, o.shape))
                }
                return n && (i.shape = n), i
            }, n.prototype.getAnimationStyleProps = function () {
                return Ek
            }, n.prototype.isZeroArea = function () {
                return !1
            }, n.extend = function (t) {
                var i = function (n) {
                    function i(e) {
                        var i = n.call(this, e) || this;
                        return t.init && t.init.call(i, e), i
                    }

                    return e(i, n), i.prototype.getDefaultStyle = function () {
                        return s(t.style)
                    }, i.prototype.getDefaultShape = function () {
                        return s(t.shape)
                    }, i
                }(n);
                for (var r in t) "function" == typeof t[r] && (i.prototype[r] = t[r]);
                return i
            }, n.initDefaultProps = function () {
                var t = n.prototype;
                t.type = "path", t.strokeContainThreshold = 5, t.segmentIgnoreThreshold = 0, t.subPixelOptimize = !1, t.autoBatch = !1, t.__dirty = jA | qA | KA
            }(), n
        }(HL),
        Vk = c({strokeFirst: !0, font: QD, x: 0, y: 0, textAlign: "left", textBaseline: "top", miterLimit: 2}, zk),
        Fk = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.hasStroke = function () {
                var t = this.style, e = t.stroke;
                return null != e && "none" !== e && t.lineWidth > 0
            }, n.prototype.hasFill = function () {
                var t = this.style, e = t.fill;
                return null != e && "none" !== e
            }, n.prototype.createStyle = function (t) {
                return j(Vk, t)
            }, n.prototype.setBoundingRect = function (t) {
                this._rect = t
            }, n.prototype.getBoundingRect = function () {
                var t = this.style;
                if (!this._rect) {
                    var e = t.text;
                    null != e ? e += "" : e = "";
                    var n = ti(e, t.font, t.textAlign, t.textBaseline);
                    if (n.x += t.x || 0, n.y += t.y || 0, this.hasStroke()) {
                        var i = t.lineWidth;
                        n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i
                    }
                    this._rect = n
                }
                return this._rect
            }, n.initDefaultProps = function () {
                var t = n.prototype;
                t.dirtyRectTolerance = 10
            }(), n
        }(HL);
    Fk.prototype.type = "tspan";
    var Gk = c({x: 0, y: 0}, BL),
        Hk = {style: c({x: !0, y: !0, width: !0, height: !0, sx: !0, sy: !0, sWidth: !0, sHeight: !0}, VL.style)},
        Wk = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.createStyle = function (t) {
                return j(Gk, t)
            }, n.prototype._getSize = function (t) {
                var e = this.style, n = e[t];
                if (null != n) return n;
                var i = Ao(e.image) ? e.image : this.__image;
                if (!i) return 0;
                var r = "width" === t ? "height" : "width", o = e[r];
                return null == o ? i[t] : i[t] / i[r] * o
            }, n.prototype.getWidth = function () {
                return this._getSize("width")
            }, n.prototype.getHeight = function () {
                return this._getSize("height")
            }, n.prototype.getAnimationStyleProps = function () {
                return Hk
            }, n.prototype.getBoundingRect = function () {
                var t = this.style;
                return this._rect || (this._rect = new $D(t.x || 0, t.y || 0, this.getWidth(), this.getHeight())), this._rect
            }, n
        }(HL);
    Wk.prototype.type = "image";
    var Xk = Math.round, Yk = function () {
        function t() {
            this.x = 0, this.y = 0, this.width = 0, this.height = 0
        }

        return t
    }(), Zk = {}, Uk = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new Yk
        }, n.prototype.buildPath = function (t, e) {
            var n, i, r, o;
            if (this.subPixelOptimize) {
                var a = ko(Zk, e, this.style);
                n = a.x, i = a.y, r = a.width, o = a.height, a.r = e.r, e = a
            } else n = e.x, i = e.y, r = e.width, o = e.height;
            e.r ? Do(t, e) : t.rect(n, i, r, o)
        }, n.prototype.isZeroArea = function () {
            return !this.shape.width || !this.shape.height
        }, n
    }(Bk);
    Uk.prototype.type = "rect";
    var jk = {fill: "#000"}, qk = 2, Kk = {
            style: c({
                fill: !0,
                stroke: !0,
                fillOpacity: !0,
                strokeOpacity: !0,
                lineWidth: !0,
                fontSize: !0,
                lineHeight: !0,
                width: !0,
                height: !0,
                textShadowColor: !0,
                textShadowBlur: !0,
                textShadowOffsetX: !0,
                textShadowOffsetY: !0,
                backgroundColor: !0,
                padding: !0,
                borderColor: !0,
                borderWidth: !0,
                borderRadius: !0
            }, VL.style)
        }, $k = function (t) {
            function n(e) {
                var n = t.call(this) || this;
                return n.type = "text", n._children = [], n._defaultStyle = jk, n.attr(e), n
            }

            return e(n, t), n.prototype.childrenRef = function () {
                return this._children
            }, n.prototype.update = function () {
                this.styleChanged() && this._updateSubTexts();
                for (var e = 0; e < this._children.length; e++) {
                    var n = this._children[e];
                    n.zlevel = this.zlevel, n.z = this.z, n.z2 = this.z2, n.culling = this.culling, n.cursor = this.cursor, n.invisible = this.invisible
                }
                var i = this.attachedTransform;
                if (i) {
                    i.updateTransform();
                    var r = i.transform;
                    r ? (this.transform = this.transform || [], Wn(this.transform, r)) : this.transform = null
                } else t.prototype.update.call(this)
            }, n.prototype.getComputedTransform = function () {
                return this.__hostTarget && (this.__hostTarget.getComputedTransform(), this.__hostTarget.updateInnerText(!0)), this.attachedTransform ? this.attachedTransform.getComputedTransform() : t.prototype.getComputedTransform.call(this)
            }, n.prototype._updateSubTexts = function () {
                this._childCursor = 0, Oo(this.style), this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(), this._children.length = this._childCursor, this.styleUpdated()
            }, n.prototype.addSelfToZr = function (e) {
                t.prototype.addSelfToZr.call(this, e);
                for (var n = 0; n < this._children.length; n++) this._children[n].__zr = e
            }, n.prototype.removeSelfFromZr = function (e) {
                t.prototype.removeSelfFromZr.call(this, e);
                for (var n = 0; n < this._children.length; n++) this._children[n].__zr = null
            }, n.prototype.getBoundingRect = function () {
                if (this.styleChanged() && this._updateSubTexts(), !this._rect) {
                    for (var t = new $D(0, 0, 0, 0), e = this._children, n = [], i = null, r = 0; r < e.length; r++) {
                        var o = e[r], a = o.getBoundingRect(), s = o.getLocalTransform(n);
                        s ? (t.copy(a), t.applyTransform(s), i = i || t.clone(), i.union(t)) : (i = i || a.clone(), i.union(a))
                    }
                    this._rect = i || t
                }
                return this._rect
            }, n.prototype.setDefaultTextStyle = function (t) {
                this._defaultStyle = t || jk
            }, n.prototype.setTextContent = function () {
                throw new Error("Can't attach text on another text")
            }, n.prototype._mergeStyle = function (t, e) {
                if (!e) return t;
                var n = e.rich, i = t.rich || n && {};
                return h(t, e), n && i ? (this._mergeRich(i, n), t.rich = i) : i && (t.rich = i), t
            }, n.prototype._mergeRich = function (t, e) {
                for (var n = b(e), i = 0; i < n.length; i++) {
                    var r = n[i];
                    t[r] = t[r] || {}, h(t[r], e[r])
                }
            }, n.prototype.getAnimationStyleProps = function () {
                return Kk
            }, n.prototype._getOrCreateChild = function (t) {
                var e = this._children[this._childCursor];
                return e && e instanceof t || (e = new t), this._children[this._childCursor++] = e, e.__zr = this.__zr, e.parent = this, e
            }, n.prototype._updatePlainTexts = function () {
                var t = this.style, e = t.font || QD, n = t.padding, i = Bo(t), r = Nr(i, t), o = Vo(t),
                    a = !!t.backgroundColor, s = r.outerHeight, l = r.lines, u = r.lineHeight, h = this._defaultStyle,
                    c = t.x || 0, p = t.y || 0, d = t.align || h.align || "left",
                    f = t.verticalAlign || h.verticalAlign || "top", g = c, y = ni(p, r.contentHeight, f);
                if (o || n) {
                    var v = r.width;
                    n && (v += n[1] + n[3]);
                    var m = ei(c, v, d), x = ni(p, s, f);
                    o && this._renderBackground(t, t, m, x, v, s)
                }
                y += u / 2, n && (g = No(c, d, n), "top" === f ? y += n[0] : "bottom" === f && (y -= n[2]));
                for (var _ = 0, b = !1, w = (Eo("fill" in t ? t.fill : (b = !0, h.fill))), S = (zo("stroke" in t ? t.stroke : a || h.autoStroke && !b ? null : (_ = qk, h.stroke))), M = t.textShadowBlur > 0, I = null != t.width && ("truncate" === t.overflow || "break" === t.overflow || "breakAll" === t.overflow), T = r.calculatedLineHeight, C = 0; C < l.length; C++) {
                    var A = this._getOrCreateChild(Fk), D = A.createStyle();
                    A.useStyle(D), D.text = l[C], D.x = g, D.y = y, d && (D.textAlign = d), D.textBaseline = "middle", D.opacity = t.opacity, D.strokeFirst = !0, M && (D.shadowBlur = t.textShadowBlur || 0, D.shadowColor = t.textShadowColor || "transparent", D.shadowOffsetX = t.textShadowOffsetX || 0, D.shadowOffsetY = t.textShadowOffsetY || 0), S && (D.stroke = S, D.lineWidth = t.lineWidth || _, D.lineDash = t.lineDash, D.lineDashOffset = t.lineDashOffset || 0), w && (D.fill = w), D.font = e, y += u, I && A.setBoundingRect(new $D(ei(D.x, t.width, D.textAlign), ni(D.y, T, D.textBaseline), t.width, T))
                }
            }, n.prototype._updateRichTexts = function () {
                var t = this.style, e = Bo(t), n = Br(e, t), i = n.width, r = n.outerWidth, o = n.outerHeight,
                    a = t.padding, s = t.x || 0, l = t.y || 0, u = this._defaultStyle, h = t.align || u.align,
                    c = t.verticalAlign || u.verticalAlign, p = ei(s, r, h), d = ni(l, o, c), f = p, g = d;
                a && (f += a[3], g += a[0]);
                var y = f + i;
                Vo(t) && this._renderBackground(t, t, p, d, r, o);
                for (var v = !!t.backgroundColor, m = 0; m < n.lines.length; m++) {
                    for (var x = n.lines[m], _ = x.tokens, b = _.length, w = x.lineHeight, S = x.width, M = 0, I = f, T = y, C = b - 1, A = void 0; b > M && (A = _[M], !A.align || "left" === A.align);) this._placeToken(A, t, w, g, I, "left", v), S -= A.width, I += A.width, M++;
                    for (; C >= 0 && (A = _[C], "right" === A.align);) this._placeToken(A, t, w, g, T, "right", v), S -= A.width, T -= A.width, C--;
                    for (I += (i - (I - f) - (y - T) - S) / 2; C >= M;) A = _[M], this._placeToken(A, t, w, g, I + A.width / 2, "center", v), I += A.width, M++;
                    g += w
                }
            }, n.prototype._placeToken = function (t, e, n, i, r, o, a) {
                var s = e.rich[t.styleName] || {};
                s.text = t.text;
                var l = t.verticalAlign, u = i + n / 2;
                "top" === l ? u = i + t.height / 2 : "bottom" === l && (u = i + n - t.height / 2);
                var h = !t.isLineHolder && Vo(s);
                h && this._renderBackground(s, e, "right" === o ? r - t.width : "center" === o ? r - t.width / 2 : r, u - t.height / 2, t.width, t.height);
                var c = !!s.backgroundColor, p = t.textPadding;
                p && (r = No(r, o, p), u -= t.height / 2 - p[0] - t.innerHeight / 2);
                var d = this._getOrCreateChild(Fk), f = d.createStyle();
                d.useStyle(f);
                var g = this._defaultStyle, y = !1, v = 0,
                    m = zo("fill" in s ? s.fill : "fill" in e ? e.fill : (y = !0, g.fill)),
                    x = zo("stroke" in s ? s.stroke : "stroke" in e ? e.stroke : c || a || g.autoStroke && !y ? null : (v = qk, g.stroke)),
                    _ = s.textShadowBlur > 0 || e.textShadowBlur > 0;
                f.text = t.text, f.x = r, f.y = u, _ && (f.shadowBlur = s.textShadowBlur || e.textShadowBlur || 0, f.shadowColor = s.textShadowColor || e.textShadowColor || "transparent", f.shadowOffsetX = s.textShadowOffsetX || e.textShadowOffsetX || 0, f.shadowOffsetY = s.textShadowOffsetY || e.textShadowOffsetY || 0), f.textAlign = o, f.textBaseline = "middle", f.font = t.font || QD, f.opacity = V(s.opacity, e.opacity, 1), x && (f.lineWidth = V(s.lineWidth, e.lineWidth, v), f.lineDash = B(s.lineDash, e.lineDash), f.lineDashOffset = e.lineDashOffset || 0, f.stroke = x), m && (f.fill = m);
                var b = t.contentWidth, w = t.contentHeight;
                d.setBoundingRect(new $D(ei(f.x, b, f.textAlign), ni(f.y, w, f.textBaseline), b, w))
            }, n.prototype._renderBackground = function (t, e, n, i, r, o) {
                var a, s, l = t.backgroundColor, u = t.borderWidth, h = t.borderColor, c = l && l.image, p = l && !c,
                    d = t.borderRadius, f = this;
                if (p || u && h) {
                    a = this._getOrCreateChild(Uk), a.useStyle(a.createStyle()), a.style.fill = null;
                    var g = a.shape;
                    g.x = n, g.y = i, g.width = r, g.height = o, g.r = d, a.dirtyShape()
                }
                if (p) {
                    var y = a.style;
                    y.fill = l || null, y.fillOpacity = B(t.fillOpacity, 1)
                } else if (c) {
                    s = this._getOrCreateChild(Wk), s.onload = function () {
                        f.dirtyStyle()
                    };
                    var v = s.style;
                    v.image = l.image, v.x = n, v.y = i, v.width = r, v.height = o
                }
                if (u && h) {
                    var y = a.style;
                    y.lineWidth = u, y.stroke = h, y.strokeOpacity = B(t.strokeOpacity, 1), y.lineDash = t.borderDash, y.lineDashOffset = t.borderDashOffset || 0, a.strokeContainThreshold = 0, a.hasFill() && a.hasStroke() && (y.strokeFirst = !0, y.lineWidth *= 2)
                }
                var m = (a || s).style;
                m.shadowBlur = t.shadowBlur || 0, m.shadowColor = t.shadowColor || "transparent", m.shadowOffsetX = t.shadowOffsetX || 0, m.shadowOffsetY = t.shadowOffsetY || 0, m.opacity = V(t.opacity, e.opacity, 1)
            }, n.makeFont = function (t) {
                var e = "";
                if (t.fontSize || t.fontFamily || t.fontWeight) {
                    var n = "";
                    n = "string" != typeof t.fontSize || -1 === t.fontSize.indexOf("px") && -1 === t.fontSize.indexOf("rem") && -1 === t.fontSize.indexOf("em") ? isNaN(+t.fontSize) ? "12px" : t.fontSize + "px" : t.fontSize, e = [t.fontStyle, t.fontWeight, n, t.fontFamily || "sans-serif"].join(" ")
                }
                return e && W(e) || t.textFont || t.font
            }, n
        }(HL), Jk = {left: !0, right: 1, center: 1}, Qk = {top: 1, bottom: 1, middle: 1}, tP = ur(), eP = 1, nP = {},
        iP = ur(), rP = 0, oP = 1, aP = 2, sP = ["emphasis", "blur", "select"],
        lP = ["normal", "emphasis", "blur", "select"], uP = 10, hP = 9, cP = "highlight", pP = "downplay",
        dP = "select", fP = "unselect", gP = "toggleSelect", yP = new rD(100), vP = ["emphasis", "blur", "select"],
        mP = {itemStyle: "getItemStyle", lineStyle: "getLineStyle", areaStyle: "getAreaStyle"}, xP = Ck.CMD,
        _P = [[], [], []], bP = Math.sqrt, wP = Math.atan2, SP = Math.sqrt, MP = Math.sin, IP = Math.cos, TP = Math.PI,
        CP = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, AP = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, DP = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.applyTransform = function () {
            }, n
        }(Bk), LP = function () {
            function t() {
                this.cx = 0, this.cy = 0, this.r = 0
            }

            return t
        }(), kP = function (t) {
            function n(e) {
                return t.call(this, e) || this
            }

            return e(n, t), n.prototype.getDefaultShape = function () {
                return new LP
            }, n.prototype.buildPath = function (t, e, n) {
                n && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI)
            }, n
        }(Bk);
    kP.prototype.type = "circle";
    var PP = function () {
        function t() {
            this.cx = 0, this.cy = 0, this.rx = 0, this.ry = 0
        }

        return t
    }(), OP = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new PP
        }, n.prototype.buildPath = function (t, e) {
            var n = .5522848, i = e.cx, r = e.cy, o = e.rx, a = e.ry, s = o * n, l = a * n;
            t.moveTo(i - o, r), t.bezierCurveTo(i - o, r - l, i - s, r - a, i, r - a), t.bezierCurveTo(i + s, r - a, i + o, r - l, i + o, r), t.bezierCurveTo(i + o, r + l, i + s, r + a, i, r + a), t.bezierCurveTo(i - s, r + a, i - o, r + l, i - o, r), t.closePath()
        }, n
    }(Bk);
    OP.prototype.type = "ellipse";
    var RP = Math.PI, zP = 2 * RP, EP = Math.sin, NP = Math.cos, BP = Math.acos, VP = Math.atan2, FP = Math.abs,
        GP = Math.sqrt, HP = Math.max, WP = Math.min, XP = 1e-4, YP = function () {
            function t() {
                this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0, this.cornerRadius = 0, this.innerCornerRadius = 0
            }

            return t
        }(), ZP = function (t) {
            function n(e) {
                return t.call(this, e) || this
            }

            return e(n, t), n.prototype.getDefaultShape = function () {
                return new YP
            }, n.prototype.buildPath = function (t, e) {
                Za(t, e)
            }, n.prototype.isZeroArea = function () {
                return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0
            }, n
        }(Bk);
    ZP.prototype.type = "sector";
    var UP = function () {
        function t() {
            this.cx = 0, this.cy = 0, this.r = 0, this.r0 = 0
        }

        return t
    }(), jP = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new UP
        }, n.prototype.buildPath = function (t, e) {
            var n = e.cx, i = e.cy, r = 2 * Math.PI;
            t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0)
        }, n
    }(Bk);
    jP.prototype.type = "ring";
    var qP = function () {
        function t() {
            this.points = null, this.smooth = 0, this.smoothConstraint = null
        }

        return t
    }(), KP = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new qP
        }, n.prototype.buildPath = function (t, e) {
            Ka(t, e, !0)
        }, n
    }(Bk);
    KP.prototype.type = "polygon";
    var $P = function () {
        function t() {
            this.points = null, this.percent = 1, this.smooth = 0, this.smoothConstraint = null
        }

        return t
    }(), JP = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultStyle = function () {
            return {stroke: "#000", fill: null}
        }, n.prototype.getDefaultShape = function () {
            return new $P
        }, n.prototype.buildPath = function (t, e) {
            Ka(t, e, !1)
        }, n
    }(Bk);
    JP.prototype.type = "polyline";
    var QP = {}, tO = function () {
        function t() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
        }

        return t
    }(), eO = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultStyle = function () {
            return {stroke: "#000", fill: null}
        }, n.prototype.getDefaultShape = function () {
            return new tO
        }, n.prototype.buildPath = function (t, e) {
            var n, i, r, o;
            if (this.subPixelOptimize) {
                var a = Lo(QP, e, this.style);
                n = a.x1, i = a.y1, r = a.x2, o = a.y2
            } else n = e.x1, i = e.y1, r = e.x2, o = e.y2;
            var s = e.percent;
            0 !== s && (t.moveTo(n, i), 1 > s && (r = n * (1 - s) + r * s, o = i * (1 - s) + o * s), t.lineTo(r, o))
        }, n.prototype.pointAt = function (t) {
            var e = this.shape;
            return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t]
        }, n
    }(Bk);
    eO.prototype.type = "line";
    var nO = [], iO = function () {
        function t() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.percent = 1
        }

        return t
    }(), rO = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultStyle = function () {
            return {stroke: "#000", fill: null}
        }, n.prototype.getDefaultShape = function () {
            return new iO
        }, n.prototype.buildPath = function (t, e) {
            var n = e.x1, i = e.y1, r = e.x2, o = e.y2, a = e.cpx1, s = e.cpy1, l = e.cpx2, u = e.cpy2, h = e.percent;
            0 !== h && (t.moveTo(n, i), null == l || null == u ? (1 > h && (io(n, a, r, h, nO), a = nO[1], r = nO[2], io(i, s, o, h, nO), s = nO[1], o = nO[2]), t.quadraticCurveTo(a, s, r, o)) : (1 > h && (Kr(n, a, l, r, h, nO), a = nO[1], l = nO[2], r = nO[3], Kr(i, s, u, o, h, nO), s = nO[1], u = nO[2], o = nO[3]), t.bezierCurveTo(a, s, l, u, r, o)))
        }, n.prototype.pointAt = function (t) {
            return $a(this.shape, t, !1)
        }, n.prototype.tangentAt = function (t) {
            var e = $a(this.shape, t, !0);
            return he(e, e)
        }, n
    }(Bk);
    rO.prototype.type = "bezier-curve";
    var oO = function () {
        function t() {
            this.cx = 0, this.cy = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0
        }

        return t
    }(), aO = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultStyle = function () {
            return {stroke: "#000", fill: null}
        }, n.prototype.getDefaultShape = function () {
            return new oO
        }, n.prototype.buildPath = function (t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r, 0), o = e.startAngle, a = e.endAngle, s = e.clockwise,
                l = Math.cos(o), u = Math.sin(o);
            t.moveTo(l * r + n, u * r + i), t.arc(n, i, r, o, a, !s)
        }, n
    }(Bk);
    aO.prototype.type = "arc";
    var sO = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = "compound", e
        }

        return e(n, t), n.prototype._updatePathDirty = function () {
            for (var t = this.shape.paths, e = this.shapeChanged(), n = 0; n < t.length; n++) e = e || t[n].shapeChanged();
            e && this.dirtyShape()
        }, n.prototype.beforeBrush = function () {
            this._updatePathDirty();
            for (var t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++) t[n].path || t[n].createPathProxy(), t[n].path.setScale(e[0], e[1], t[n].segmentIgnoreThreshold)
        }, n.prototype.buildPath = function (t, e) {
            for (var n = e.paths || [], i = 0; i < n.length; i++) n[i].buildPath(t, n[i].shape, !0)
        }, n.prototype.afterBrush = function () {
            for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].pathUpdated()
        }, n.prototype.getBoundingRect = function () {
            return this._updatePathDirty.call(this), Bk.prototype.getBoundingRect.call(this)
        }, n
    }(Bk), lO = function () {
        function t(t) {
            this.colorStops = t || []
        }

        return t.prototype.addColorStop = function (t, e) {
            this.colorStops.push({offset: t, color: e})
        }, t
    }(), uO = function (t) {
        function n(e, n, i, r, o, a) {
            var s = t.call(this, o) || this;
            return s.x = null == e ? 0 : e, s.y = null == n ? 0 : n, s.x2 = null == i ? 1 : i, s.y2 = null == r ? 0 : r, s.type = "linear", s.global = a || !1, s
        }

        return e(n, t), n
    }(lO), hO = function (t) {
        function n(e, n, i, r, o) {
            var a = t.call(this, r) || this;
            return a.x = null == e ? .5 : e, a.y = null == n ? .5 : n, a.r = null == i ? .5 : i, a.type = "radial", a.global = o || !1, a
        }

        return e(n, t), n
    }(lO), cO = [0, 0], pO = [0, 0], dO = new HD, fO = new HD, gO = function () {
        function t(t, e) {
            this._corners = [], this._axes = [], this._origin = [0, 0];
            for (var n = 0; 4 > n; n++) this._corners[n] = new HD;
            for (var n = 0; 2 > n; n++) this._axes[n] = new HD;
            t && this.fromBoundingRect(t, e)
        }

        return t.prototype.fromBoundingRect = function (t, e) {
            var n = this._corners, i = this._axes, r = t.x, o = t.y, a = r + t.width, s = o + t.height;
            if (n[0].set(r, o), n[1].set(a, o), n[2].set(a, s), n[3].set(r, s), e) for (var l = 0; 4 > l; l++) n[l].transform(e);
            HD.sub(i[0], n[1], n[0]), HD.sub(i[1], n[3], n[0]), i[0].normalize(), i[1].normalize();
            for (var l = 0; 2 > l; l++) this._origin[l] = i[l].dot(n[0])
        }, t.prototype.intersect = function (t, e) {
            var n = !0, i = !e;
            return dO.set(1 / 0, 1 / 0), fO.set(0, 0), !this._intersectCheckOneSide(this, t, dO, fO, i, 1) && (n = !1, i) ? n : !this._intersectCheckOneSide(t, this, dO, fO, i, -1) && (n = !1, i) ? n : (i || HD.copy(e, n ? dO : fO), n)
        }, t.prototype._intersectCheckOneSide = function (t, e, n, i, r, o) {
            for (var a = !0, s = 0; 2 > s; s++) {
                var l = this._axes[s];
                if (this._getProjMinMaxOnAxis(s, t._corners, cO), this._getProjMinMaxOnAxis(s, e._corners, pO), cO[1] < pO[0] || cO[0] > pO[1]) {
                    if (a = !1, r) return a;
                    var u = Math.abs(pO[0] - cO[1]), h = Math.abs(cO[0] - pO[1]);
                    Math.min(u, h) > i.len() && (h > u ? HD.scale(i, l, -u * o) : HD.scale(i, l, h * o))
                } else if (n) {
                    var u = Math.abs(pO[0] - cO[1]), h = Math.abs(cO[0] - pO[1]);
                    Math.min(u, h) < n.len() && (h > u ? HD.scale(n, l, u * o) : HD.scale(n, l, -h * o))
                }
            }
            return a
        }, t.prototype._getProjMinMaxOnAxis = function (t, e, n) {
            for (var i = this._axes[t], r = this._origin, o = e[0].dot(i) + r[t], a = o, s = o, l = 1; l < e.length; l++) {
                var u = e[l].dot(i) + r[t];
                a = Math.min(u, a), s = Math.max(u, s)
            }
            n[0] = a, n[1] = s
        }, t
    }(), yO = [], vO = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.notClear = !0, e.incremental = !0, e._displayables = [], e._temporaryDisplayables = [], e._cursor = 0, e
        }

        return e(n, t), n.prototype.traverse = function (t, e) {
            t.call(e, this)
        }, n.prototype.useStyle = function () {
            this.style = {}
        }, n.prototype.getCursor = function () {
            return this._cursor
        }, n.prototype.innerAfterBrush = function () {
            this._cursor = this._displayables.length
        }, n.prototype.clearDisplaybles = function () {
            this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.markRedraw(), this.notClear = !1
        }, n.prototype.clearTemporalDisplayables = function () {
            this._temporaryDisplayables = []
        }, n.prototype.addDisplayable = function (t, e) {
            e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.markRedraw()
        }, n.prototype.addDisplayables = function (t, e) {
            e = e || !1;
            for (var n = 0; n < t.length; n++) this.addDisplayable(t[n], e)
        }, n.prototype.getDisplayables = function () {
            return this._displayables
        }, n.prototype.getTemporalDisplayables = function () {
            return this._temporaryDisplayables
        }, n.prototype.eachPendingDisplayable = function (t) {
            for (var e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]);
            for (var e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e])
        }, n.prototype.update = function () {
            this.updateTransform();
            for (var t = this._cursor; t < this._displayables.length; t++) {
                var e = this._displayables[t];
                e.parent = this, e.update(), e.parent = null
            }
            for (var t = 0; t < this._temporaryDisplayables.length; t++) {
                var e = this._temporaryDisplayables[t];
                e.parent = this, e.update(), e.parent = null
            }
        }, n.prototype.getBoundingRect = function () {
            if (!this._rect) {
                for (var t = new $D(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) {
                    var n = this._displayables[e], i = n.getBoundingRect().clone();
                    n.needLocalTransform() && i.applyTransform(n.getLocalTransform(yO)), t.union(i)
                }
                this._rect = t
            }
            return this._rect
        }, n.prototype.contain = function (t, e) {
            var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect();
            if (i.contain(n[0], n[1])) for (var r = 0; r < this._displayables.length; r++) {
                var o = this._displayables[r];
                if (o.contain(t, e)) return !0
            }
            return !1
        }, n
    }(HL), mO = Math.max, xO = Math.min, _O = {}, bO = Ha, wO = Wa, SO = Po;
    ts("circle", kP), ts("ellipse", OP), ts("sector", ZP), ts("ring", jP), ts("polygon", KP), ts("polyline", JP), ts("rect", Uk), ts("line", eO), ts("bezierCurve", rO), ts("arc", aO);
    var MO = (Object.freeze || Object)({
            extendShape: Ja,
            extendPath: Qa,
            registerShape: ts,
            getShapeClass: es,
            makePath: ns,
            makeImage: is,
            mergePath: wO,
            resizePath: os,
            subPixelOptimizeLine: as,
            subPixelOptimizeRect: ss,
            subPixelOptimize: SO,
            updateProps: us,
            initProps: hs,
            removeElement: cs,
            removeElementWithFadeOut: ds,
            isElementRemoved: fs,
            getTransform: gs,
            applyTransform: ys,
            transformDirection: vs,
            groupTransition: _s,
            clipPointsByRect: bs,
            clipRectByRect: ws,
            createIcon: Ss,
            linePolygonIntersect: Ms,
            lineLineIntersect: Is,
            setTooltipConfig: As,
            Group: sL,
            Image: Wk,
            Text: $k,
            Circle: kP,
            Ellipse: OP,
            Sector: ZP,
            Ring: jP,
            Polygon: KP,
            Polyline: JP,
            Rect: Uk,
            Line: eO,
            BezierCurve: rO,
            Arc: aO,
            IncrementalDisplayable: vO,
            CompoundPath: sO,
            LinearGradient: uO,
            RadialGradient: hO,
            BoundingRect: $D,
            OrientedBoundingRect: gO,
            Point: HD,
            Path: Bk
        }), IO = {},
        TO = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"],
        CO = ["align", "lineHeight", "width", "height", "tag", "verticalAlign"],
        AO = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"],
        DO = ur(), LO = ["textStyle", "color"], kO = new $k, PO = function () {
            function t() {
            }

            return t.prototype.getTextColor = function (t) {
                var e = this.ecModel;
                return this.getShallow("color") || (!t && e ? e.get(LO) : null)
            }, t.prototype.getFont = function () {
                return Bs({
                    fontStyle: this.getShallow("fontStyle"),
                    fontWeight: this.getShallow("fontWeight"),
                    fontSize: this.getShallow("fontSize"),
                    fontFamily: this.getShallow("fontFamily")
                }, this.ecModel)
            }, t.prototype.getTextRect = function (t) {
                return kO.useStyle({
                    text: t,
                    fontStyle: this.getShallow("fontStyle"),
                    fontWeight: this.getShallow("fontWeight"),
                    fontSize: this.getShallow("fontSize"),
                    fontFamily: this.getShallow("fontFamily"),
                    verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline"),
                    padding: this.getShallow("padding"),
                    lineHeight: this.getShallow("lineHeight"),
                    rich: this.getShallow("rich")
                }), kO.update(), kO.getBoundingRect()
            }, t
        }(),
        OO = [["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["lineDash", "type"], ["lineDashOffset", "dashOffset"], ["lineCap", "cap"], ["lineJoin", "join"], ["miterLimit"]],
        RO = Ar(OO), zO = function () {
            function t() {
            }

            return t.prototype.getLineStyle = function (t) {
                return RO(this, t)
            }, t
        }(),
        EO = [["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["lineDash", "borderType"], ["lineDashOffset", "borderDashOffset"], ["lineCap", "borderCap"], ["lineJoin", "borderJoin"], ["miterLimit", "borderMiterLimit"]],
        NO = Ar(EO), BO = function () {
            function t() {
            }

            return t.prototype.getItemStyle = function (t, e) {
                return NO(this, t, e)
            }, t
        }(), VO = function () {
            function t(t, e, n) {
                this.parentModel = e, this.ecModel = n, this.option = t
            }

            return t.prototype.init = function () {
                for (var t = [], e = 3; e < arguments.length; e++) t[e - 3] = arguments[e]
            }, t.prototype.mergeOption = function (t) {
                l(this.option, t, !0)
            }, t.prototype.get = function (t, e) {
                return null == t ? this.option : this._doGet(this.parsePath(t), !e && this.parentModel)
            }, t.prototype.getShallow = function (t, e) {
                var n = this.option, i = null == n ? n : n[t];
                if (null == i && !e) {
                    var r = this.parentModel;
                    r && (i = r.getShallow(t))
                }
                return i
            }, t.prototype.getModel = function (e, n) {
                var i = null != e, r = i ? this.parsePath(e) : null, o = i ? this._doGet(r) : this.option;
                return n = n || this.parentModel && this.parentModel.getModel(this.resolveParentPath(r)), new t(o, n, this.ecModel)
            }, t.prototype.isEmpty = function () {
                return null == this.option
            }, t.prototype.restoreData = function () {
            }, t.prototype.clone = function () {
                var t = this.constructor;
                return new t(s(this.option))
            }, t.prototype.parsePath = function (t) {
                return "string" == typeof t ? t.split(".") : t
            }, t.prototype.resolveParentPath = function (t) {
                return t
            }, t.prototype.isAnimationEnabled = function () {
                if (!oA.node && this.option) {
                    if (null != this.option.animation) return !!this.option.animation;
                    if (this.parentModel) return this.parentModel.isAnimationEnabled()
                }
            }, t.prototype._doGet = function (t, e) {
                var n = this.option;
                if (!t) return n;
                for (var i = 0; i < t.length && (!t[i] || (n = n && "object" == typeof n ? n[t[i]] : null, null != n)); i++) ;
                return null == n && e && (n = e._doGet(this.resolveParentPath(t), e.parentModel)), n
            }, t
        }();
    br(VO), Mr(VO), f(VO, zO), f(VO, BO), f(VO, LL), f(VO, PO);
    var FO = Math.round(10 * Math.random()), GO = {
        time: {
            month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
            monthAbbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
            dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
            dayOfWeekAbbr: ["日", "一", "二", "三", "四", "五", "六"]
        },
        legend: {selector: {all: "全选", inverse: "反选"}},
        toolbox: {
            brush: {
                title: {
                    rect: "矩形选择",
                    polygon: "圈选",
                    lineX: "横向选择",
                    lineY: "纵向选择",
                    keep: "保持选择",
                    clear: "清除选择"
                }
            },
            dataView: {title: "数据视图", lang: ["数据视图", "关闭", "刷新"]},
            dataZoom: {title: {zoom: "区域缩放", back: "区域缩放还原"}},
            magicType: {title: {line: "切换为折线图", bar: "切换为柱状图", stack: "切换为堆叠", tiled: "切换为平铺"}},
            restore: {title: "还原"},
            saveAsImage: {title: "保存为图片", lang: ["右键另存为图片"]}
        },
        series: {
            typeNames: {
                pie: "饼图",
                bar: "柱状图",
                line: "折线图",
                scatter: "散点图",
                effectScatter: "涟漪散点图",
                radar: "雷达图",
                tree: "树图",
                treemap: "矩形树图",
                boxplot: "箱型图",
                candlestick: "K线图",
                k: "K线图",
                heatmap: "热力图",
                map: "地图",
                parallel: "平行坐标图",
                lines: "线图",
                graph: "关系图",
                sankey: "桑基图",
                funnel: "漏斗图",
                gauge: "仪表盘图",
                pictorialBar: "象形柱图",
                themeRiver: "主题河流图",
                sunburst: "旭日图"
            }
        },
        aria: {
            general: {withTitle: "这是一个关于“{title}”的图表。", withoutTitle: "这是一个图表,"},
            series: {
                single: {
                    prefix: "",
                    withName: "图表类型是{seriesType},表示{seriesName}。",
                    withoutName: "图表类型是{seriesType}。"
                },
                multiple: {
                    prefix: "它由{seriesCount}个图表系列组成。",
                    withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},",
                    withoutName: "第{seriesId}个系列是一个{seriesType},",
                    separator: {middle: ";", end: "。"}
                }
            },
            data: {
                allData: "其数据是——",
                partialData: "其中,前{displayCnt}项是——",
                withName: "{name}的数据是{value}",
                withoutName: "{value}",
                separator: {middle: ",", end: ""}
            }
        }
    }, HO = {
        time: {
            month: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
            monthAbbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
            dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
            dayOfWeekAbbr: ["日", "一", "二", "三", "四", "五", "六"]
        },
        legend: {selector: {all: "全选", inverse: "反选"}},
        toolbox: {
            brush: {
                title: {
                    rect: "矩形选择",
                    polygon: "圈选",
                    lineX: "横向选择",
                    lineY: "纵向选择",
                    keep: "保持选择",
                    clear: "清除选择"
                }
            },
            dataView: {title: "数据视图", lang: ["数据视图", "关闭", "刷新"]},
            dataZoom: {title: {zoom: "区域缩放", back: "区域缩放还原"}},
            magicType: {title: {line: "切换为折线图", bar: "切换为柱状图", stack: "切换为堆叠", tiled: "切换为平铺"}},
            restore: {title: "还原"},
            saveAsImage: {title: "保存为图片", lang: ["右键另存为图片"]}
        },
        series: {
            typeNames: {
                pie: "饼图",
                bar: "柱状图",
                line: "折线图",
                scatter: "散点图",
                effectScatter: "涟漪散点图",
                radar: "雷达图",
                tree: "树图",
                treemap: "矩形树图",
                boxplot: "箱型图",
                candlestick: "K线图",
                k: "K线图",
                heatmap: "热力图",
                map: "地图",
                parallel: "平行坐标图",
                lines: "线图",
                graph: "关系图",
                sankey: "桑基图",
                funnel: "漏斗图",
                gauge: "仪表盘图",
                pictorialBar: "象形柱图",
                themeRiver: "主题河流图",
                sunburst: "旭日图"
            }
        },
        aria: {
            general: {withTitle: "这是一个关于“{title}”的图表。", withoutTitle: "这是一个图表,"},
            series: {
                single: {
                    prefix: "",
                    withName: "图表类型是{seriesType},表示{seriesName}。",
                    withoutName: "图表类型是{seriesType}。"
                },
                multiple: {
                    prefix: "它由{seriesCount}个图表系列组成。",
                    withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},",
                    withoutName: "第{seriesId}个系列是一个{seriesType},",
                    separator: {middle: ";", end: "。"}
                }
            },
            data: {
                allData: "其数据是——",
                partialData: "其中,前{displayCnt}项是——",
                withName: "{name}的数据是{value}",
                withoutName: "{value}",
                separator: {middle: ",", end: ""}
            }
        }
    }, WO = "ZH", XO = "EN", YO = XO, ZO = {}, UO = {}, jO = oA.domSupported ? function () {
        var t = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();
        return t.indexOf(WO) > -1 ? WO : YO
    }() : YO;
    Ys(XO, GO), Ys(WO, HO);
    var qO = 1e3, KO = 60 * qO, $O = 60 * KO, JO = 24 * $O, QO = 365 * JO, tR = {
            year: "{yyyy}",
            month: "{MMM}",
            day: "{d}",
            hour: "{HH}:{mm}",
            minute: "{HH}:{mm}",
            second: "{HH}:{mm}:{ss}",
            millisecond: "{hh}:{mm}:{ss} {SSS}",
            none: "{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}"
        }, eR = "{yyyy}-{MM}-{dd}", nR = {
            year: "{yyyy}",
            month: "{yyyy}-{MM}",
            day: eR,
            hour: eR + " " + tR.hour,
            minute: eR + " " + tR.minute,
            second: eR + " " + tR.second,
            millisecond: tR.none
        }, iR = ["year", "month", "day", "hour", "minute", "second", "millisecond"],
        rR = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"],
        oR = G, aR = /([&<>"'])/g, sR = {"&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;"},
        lR = ["a", "b", "c", "d", "e", "f", "g"], uR = function (t, e) {
            return "{" + t + (null == e ? "" : e) + "}"
        }, hR = y, cR = ["left", "right", "top", "bottom", "width", "height"],
        pR = [["width", "left", "right"], ["height", "top", "bottom"]], dR = Dl,
        fR = (S(Dl, "vertical"), S(Dl, "horizontal"), ur()), gR = function (t) {
            function n(e, n, i) {
                var r = t.call(this, e, n, i) || this;
                return r.uid = Gs("ec_cpt_model"), r
            }

            return e(n, t), n.prototype.init = function (t, e, n) {
                this.mergeDefaultAndTheme(t, n)
            }, n.prototype.mergeDefaultAndTheme = function (t, e) {
                var n = Rl(this), i = n ? El(t) : {}, r = e.getTheme();
                l(t, r.get(this.mainType)), l(t, this.getDefaultOption()), n && zl(t, i, n)
            }, n.prototype.mergeOption = function (t) {
                l(this.option, t, !0);
                var e = Rl(this);
                e && zl(this.option, t, e)
            }, n.prototype.optionUpdated = function () {
            }, n.prototype.getDefaultOption = function () {
                var t = this.constructor;
                if (!_r(t)) return t.defaultOption;
                var e = fR(this);
                if (!e.defaultOption) {
                    for (var n = [], i = t; i;) {
                        var r = i.prototype.defaultOption;
                        r && n.push(r), i = i.superClass
                    }
                    for (var o = {}, a = n.length - 1; a >= 0; a--) o = l(o, n[a], !0);
                    e.defaultOption = o
                }
                return e.defaultOption
            }, n.prototype.getReferringComponents = function (t, e) {
                var n = t + "Index", i = t + "Id";
                return pr(this.ecModel, t, {index: this.get(n, !0), id: this.get(i, !0)}, e)
            }, n.prototype.getBoxLayoutParams = function () {
                var t = this;
                return {
                    left: t.get("left"),
                    top: t.get("top"),
                    right: t.get("right"),
                    bottom: t.get("bottom"),
                    width: t.get("width"),
                    height: t.get("height")
                }
            }, n.protoInitialize = function () {
                var t = n.prototype;
                t.type = "component", t.id = "", t.name = "", t.mainType = "", t.subType = "", t.componentIndex = 0
            }(), n
        }(VO);
    Sr(gR, VO), Cr(gR), Hs(gR), Ws(gR, Bl);
    var yR = "";
    "undefined" != typeof navigator && (yR = navigator.platform || "");
    var vR, mR, xR = "rgba(0, 0, 0, 0.2)", _R = {
            darkMode: "auto",
            color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"],
            gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
            aria: {
                decal: {
                    decals: [{
                        color: xR,
                        dashArrayX: [1, 0],
                        dashArrayY: [2, 5],
                        symbolSize: 1,
                        rotation: Math.PI / 6
                    }, {
                        color: xR,
                        symbol: "circle",
                        dashArrayX: [[8, 8], [0, 8, 8, 0]],
                        dashArrayY: [6, 0],
                        symbolSize: .8
                    }, {color: xR, dashArrayX: [1, 0], dashArrayY: [4, 3], rotation: -Math.PI / 4}, {
                        color: xR,
                        dashArrayX: [[6, 6], [0, 6, 6, 0]],
                        dashArrayY: [6, 0]
                    }, {
                        color: xR,
                        dashArrayX: [[1, 0], [1, 6]],
                        dashArrayY: [1, 0, 6, 0],
                        rotation: Math.PI / 4
                    }, {
                        color: xR,
                        symbol: "triangle",
                        dashArrayX: [[9, 9], [0, 9, 9, 0]],
                        dashArrayY: [7, 2],
                        symbolSize: .75
                    }]
                }
            },
            textStyle: {
                fontFamily: yR.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
                fontSize: 12,
                fontStyle: "normal",
                fontWeight: "normal"
            },
            blendMode: null,
            stateAnimation: {duration: 300, easing: "cubicOut"},
            animation: "auto",
            animationDuration: 1e3,
            animationDurationUpdate: 500,
            animationEasing: "cubicInOut",
            animationEasingUpdate: "cubicInOut",
            animationThreshold: 2e3,
            progressiveThreshold: 3e3,
            progressive: 400,
            hoverLayerThreshold: 3e3,
            useUTC: !1
        }, bR = Z(["tooltip", "label", "itemName", "itemId", "seriesName"]), wR = "original", SR = "arrayRows",
        MR = "objectRows", IR = "keyedColumns", TR = "typedArray", CR = "unknown", AR = "column", DR = "row",
        LR = {Must: 1, Might: 2, Not: 3}, kR = ur(), PR = Z(), OR = ur(), RR = ur(), zR = function () {
            function t() {
            }

            return t.prototype.getColorFromPalette = function (t, e, n) {
                var i = Hi(this.get("color", !0)), r = this.get("colorLayer", !0);
                return Kl(this, OR, i, r, t, e, n)
            }, t.prototype.clearColorPalette = function () {
                $l(this, OR)
            }, t
        }(), ER = "\x00_ec_inner", NR = 1, BR = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.init = function (t, e, n, i, r, o) {
                i = i || {}, this.option = null, this._theme = new VO(i), this._locale = new VO(r), this._optionManager = o
            }, n.prototype.setOption = function (t, e, n) {
                var i = nu(e);
                this._optionManager.setOption(t, n, i), this._resetOption(null, i)
            }, n.prototype.resetOption = function (t, e) {
                return this._resetOption(t, nu(e))
            }, n.prototype._resetOption = function (t, e) {
                var n = !1, i = this._optionManager;
                if (!t || "recreate" === t) {
                    var r = i.mountOption("recreate" === t);
                    this.option && "recreate" !== t ? (this.restoreData(), this._mergeOption(r, e)) : mR(this, r), n = !0
                }
                if (("timeline" === t || "media" === t) && this.restoreData(), !t || "recreate" === t || "timeline" === t) {
                    var o = i.getTimelineOption(this);
                    o && (n = !0, this._mergeOption(o, e))
                }
                if (!t || "recreate" === t || "media" === t) {
                    var a = i.getMediaOption(this);
                    a.length && y(a, function (t) {
                        n = !0, this._mergeOption(t, e)
                    }, this)
                }
                return n
            }, n.prototype.mergeOption = function (t) {
                this._mergeOption(t, null)
            }, n.prototype._mergeOption = function (t, e) {
                function n(e) {
                    var n = Ul(this, e, Hi(t[e])), a = r.get(e),
                        s = a ? c && c.get(e) ? "replaceMerge" : "normalMerge" : "replaceAll", l = Zi(a, n, s);
                    or(l, e, gR), i[e] = null, r.set(e, null), o.set(e, 0);
                    var u = [], p = [], d = 0;
                    y(l, function (t, n) {
                        var i = t.existing, r = t.newOption;
                        if (r) {
                            var o = "series" === e, a = gR.getClass(e, t.keyInfo.subType, !o);
                            if (!a) return;
                            if (i && i.constructor === a) i.name = t.keyInfo.name, i.mergeOption(r, this), i.optionUpdated(r, !1); else {
                                var s = h({componentIndex: n}, t.keyInfo);
                                i = new a(r, this, this, s), h(i, s), t.brandNew && (i.__requireNewView = !0), i.init(r, this, this), i.optionUpdated(null, !0)
                            }
                        } else i && (i.mergeOption({}, this), i.optionUpdated({}, !1));
                        i ? (u.push(i.option), p.push(i), d++) : (u.push(void 0), p.push(void 0))
                    }, this), i[e] = u, r.set(e, p), o.set(e, d), "series" === e && vR(this)
                }

                var i = this.option, r = this._componentsMap, o = this._componentsCount, a = [], u = Z(),
                    c = e && e.replaceMergeMainTypeMap;
                Vl(this), y(t, function (t, e) {
                    null != t && (gR.hasClass(e) ? e && (a.push(e), u.set(e, !0)) : i[e] = null == i[e] ? s(t) : l(i[e], t, !0))
                }), c && c.each(function (t, e) {
                    gR.hasClass(e) && !u.get(e) && (a.push(e), u.set(e, !0))
                }), gR.topologicalTravel(a, gR.getAllClassMainTypes(), n, this), this._seriesIndices || vR(this)
            }, n.prototype.getOption = function () {
                var t = s(this.option);
                return y(t, function (e, n) {
                    if (gR.hasClass(n)) {
                        for (var i = Hi(e), r = i.length, o = !1, a = r - 1; a >= 0; a--) i[a] && !ir(i[a]) ? o = !0 : (i[a] = null, !o && r--);
                        i.length = r, t[n] = i
                    }
                }), delete t[ER], t
            }, n.prototype.getTheme = function () {
                return this._theme
            }, n.prototype.getLocaleModel = function () {
                return this._locale
            }, n.prototype.getLocale = function (t) {
                var e = this.getLocaleModel();
                return e.get(t)
            }, n.prototype.setUpdatePayload = function (t) {
                this._payload = t
            }, n.prototype.getUpdatePayload = function () {
                return this._payload
            }, n.prototype.getComponent = function (t, e) {
                var n = this._componentsMap.get(t);
                if (n) {
                    var i = n[e || 0];
                    if (i) return i;
                    if (null == e) for (var r = 0; r < n.length; r++) if (n[r]) return n[r]
                }
            }, n.prototype.queryComponents = function (t) {
                var e = t.mainType;
                if (!e) return [];
                var n = t.index, i = t.id, r = t.name, o = this._componentsMap.get(e);
                if (!o || !o.length) return [];
                var a;
                return null != n ? (a = [], y(Hi(n), function (t) {
                    o[t] && a.push(o[t])
                })) : a = null != i ? tu("id", i, o) : null != r ? tu("name", r, o) : x(o, function (t) {
                    return !!t
                }), eu(a, t)
            }, n.prototype.findComponents = function (t) {
                function e(t) {
                    var e = r + "Index", n = r + "Id", i = r + "Name";
                    return !t || null == t[e] && null == t[n] && null == t[i] ? null : {
                        mainType: r,
                        index: t[e],
                        id: t[n],
                        name: t[i]
                    }
                }

                function n(e) {
                    return t.filter ? x(e, t.filter) : e
                }

                var i = t.query, r = t.mainType, o = e(i),
                    a = o ? this.queryComponents(o) : x(this._componentsMap.get(r), function (t) {
                        return !!t
                    });
                return n(eu(a, t))
            }, n.prototype.eachComponent = function (t, e, n) {
                var i = this._componentsMap;
                if (I(t)) {
                    var r = e, o = t;
                    i.each(function (t, e) {
                        for (var n = 0; t && n < t.length; n++) {
                            var i = t[n];
                            i && o.call(r, e, i, i.componentIndex)
                        }
                    })
                } else for (var a = T(t) ? i.get(t) : D(t) ? this.findComponents(t) : null, s = 0; a && s < a.length; s++) {
                    var l = a[s];
                    l && e.call(n, l, l.componentIndex)
                }
            }, n.prototype.getSeriesByName = function (t) {
                var e = er(t, null);
                return x(this._componentsMap.get("series"), function (t) {
                    return !!t && null != e && t.name === e
                })
            }, n.prototype.getSeriesByIndex = function (t) {
                return this._componentsMap.get("series")[t]
            }, n.prototype.getSeriesByType = function (t) {
                return x(this._componentsMap.get("series"), function (e) {
                    return !!e && e.subType === t
                })
            }, n.prototype.getSeries = function () {
                return x(this._componentsMap.get("series").slice(), function (t) {
                    return !!t
                })
            }, n.prototype.getSeriesCount = function () {
                return this._componentsCount.get("series")
            }, n.prototype.eachSeries = function (t, e) {
                y(this._seriesIndices, function (n) {
                    var i = this._componentsMap.get("series")[n];
                    t.call(e, i, n)
                }, this)
            }, n.prototype.eachRawSeries = function (t, e) {
                y(this._componentsMap.get("series"), function (n) {
                    n && t.call(e, n, n.componentIndex)
                })
            }, n.prototype.eachSeriesByType = function (t, e, n) {
                y(this._seriesIndices, function (i) {
                    var r = this._componentsMap.get("series")[i];
                    r.subType === t && e.call(n, r, i)
                }, this)
            }, n.prototype.eachRawSeriesByType = function (t, e, n) {
                return y(this.getSeriesByType(t), e, n)
            }, n.prototype.isSeriesFiltered = function (t) {
                return null == this._seriesIndicesMap.get(t.componentIndex)
            }, n.prototype.getCurrentSeriesIndices = function () {
                return (this._seriesIndices || []).slice()
            }, n.prototype.filterSeries = function (t, e) {
                var n = [];
                y(this._seriesIndices, function (i) {
                    var r = this._componentsMap.get("series")[i];
                    t.call(e, r, i) && n.push(i)
                }, this), this._seriesIndices = n, this._seriesIndicesMap = Z(n)
            }, n.prototype.restoreData = function (t) {
                vR(this);
                var e = this._componentsMap, n = [];
                e.each(function (t, e) {
                    gR.hasClass(e) && n.push(e)
                }), gR.topologicalTravel(n, gR.getAllClassMainTypes(), function (n) {
                    y(e.get(n), function (e) {
                        !e || "series" === n && Jl(e, t) || e.restoreData()
                    })
                })
            }, n.internalField = function () {
                vR = function (t) {
                    var e = t._seriesIndices = [];
                    y(t._componentsMap.get("series"), function (t) {
                        t && e.push(t.componentIndex)
                    }), t._seriesIndicesMap = Z(e)
                }, mR = function (t, e) {
                    t.option = {}, t.option[ER] = NR, t._componentsMap = Z({series: []}), t._componentsCount = Z();
                    var n = e.aria;
                    D(n) && null == n.enabled && (n.enabled = !0), Ql(e, t._theme.option), l(e, _R, !1), t._mergeOption(e, null)
                }
            }(), n
        }(VO);
    f(BR, zR);
    var VR, FR, GR, HR, WR,
        XR = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getOption", "getId", "updateLabelLayout"],
        YR = function () {
            function t(t) {
                y(XR, function (e) {
                    this[e] = xA(t[e], t)
                }, this)
            }

            return t
        }(), ZR = {}, UR = function () {
            function t() {
                this._coordinateSystems = []
            }

            return t.prototype.create = function (t, e) {
                var n = [];
                y(ZR, function (i) {
                    var r = i.create(t, e);
                    n = n.concat(r || [])
                }), this._coordinateSystems = n
            }, t.prototype.update = function (t, e) {
                y(this._coordinateSystems, function (n) {
                    n.update && n.update(t, e)
                })
            }, t.prototype.getCoordinateSystems = function () {
                return this._coordinateSystems.slice()
            }, t.register = function (t, e) {
                ZR[t] = e
            }, t.get = function (t) {
                return ZR[t]
            }, t
        }(), jR = /^(min|max)?(.+)$/, qR = function () {
            function t(t) {
                this._timelineOptions = [], this._mediaList = [], this._currentMediaIndices = [], this._api = t
            }

            return t.prototype.setOption = function (t, e) {
                t && (y(Hi(t.series), function (t) {
                    t && t.data && k(t.data) && X(t.data)
                }), y(Hi(t.dataset), function (t) {
                    t && t.source && k(t.source) && X(t.source)
                })), t = s(t);
                var n = this._optionBackup, i = iu(t, e, !n);
                this._newBaseOption = i.baseOption, n ? (i.timelineOptions.length && (n.timelineOptions = i.timelineOptions), i.mediaList.length && (n.mediaList = i.mediaList), i.mediaDefault && (n.mediaDefault = i.mediaDefault)) : this._optionBackup = i
            }, t.prototype.mountOption = function (t) {
                var e = this._optionBackup;
                return this._timelineOptions = e.timelineOptions, this._mediaList = e.mediaList, this._mediaDefault = e.mediaDefault, this._currentMediaIndices = [], s(t ? e.baseOption : this._newBaseOption)
            }, t.prototype.getTimelineOption = function (t) {
                var e, n = this._timelineOptions;
                if (n.length) {
                    var i = t.getComponent("timeline");
                    i && (e = s(n[i.getCurrentIndex()]))
                }
                return e
            }, t.prototype.getMediaOption = function () {
                var t = this._api.getWidth(), e = this._api.getHeight(), n = this._mediaList, i = this._mediaDefault,
                    r = [], o = [];
                if (!n.length && !i) return o;
                for (var a = 0, l = n.length; l > a; a++) ru(n[a].query, t, e) && r.push(a);
                return !r.length && i && (r = [-1]), r.length && !au(r, this._currentMediaIndices) && (o = v(r, function (t) {
                    return s(-1 === t ? i.option : n[t].option)
                })), this._currentMediaIndices = r, o
            }, t
        }(), KR = y, $R = D, JR = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"],
        QR = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]],
        tz = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"],
        ez = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]],
        nz = function () {
            function t(t) {
                this.data = t.data || (t.sourceFormat === IR ? {} : []), this.sourceFormat = t.sourceFormat || CR, this.seriesLayoutBy = t.seriesLayoutBy || AR, this.startIndex = t.startIndex || 0, this.dimensionsDefine = t.dimensionsDefine, this.dimensionsDetectedCount = t.dimensionsDetectedCount, this.encodeDefine = t.encodeDefine, this.metaRawOption = t.metaRawOption
            }

            return t
        }(), iz = function () {
            function t(t, e) {
                var n = Cu(t) ? t : Du(t);
                this._source = n;
                var i = this._data = n.data;
                n.sourceFormat === TR && (this._offset = 0, this._dimSize = e, this._data = i), WR(this, i, n)
            }

            return t.prototype.getSource = function () {
                return this._source
            }, t.prototype.count = function () {
                return 0
            }, t.prototype.getItem = function () {
            }, t.prototype.appendData = function () {
            }, t.prototype.clean = function () {
            }, t.protoInitialize = function () {
                var e = t.prototype;
                e.pure = !1, e.persistent = !0
            }(), t.internalField = function () {
                function t(t) {
                    for (var e = 0; e < t.length; e++) this._data.push(t[e])
                }

                var e;
                WR = function (t, e, o) {
                    var a = o.sourceFormat, s = o.seriesLayoutBy, l = o.startIndex, u = o.dimensionsDefine,
                        c = HR[Fu(a, s)];
                    if (h(t, c), a === TR) t.getItem = n, t.count = r, t.fillStorage = i; else {
                        var p = Nu(a, s);
                        t.getItem = xA(p, null, e, l, u);
                        var d = Bu(a, s);
                        t.count = xA(d, null, e, l, u)
                    }
                };
                var n = function (t, e) {
                    t -= this._offset, e = e || [];
                    for (var n = this._data, i = this._dimSize, r = i * t, o = 0; i > o; o++) e[o] = n[r + o];
                    return e
                }, i = function (t, e, n, i) {
                    for (var r = this._data, o = this._dimSize, a = 0; o > a; a++) {
                        for (var s = i[a], l = null == s[0] ? 1 / 0 : s[0], u = null == s[1] ? -1 / 0 : s[1], h = e - t, c = n[a], p = 0; h > p; p++) {
                            var d = r[p * o + a];
                            c[t + p] = d, l > d && (l = d), d > u && (u = d)
                        }
                        s[0] = l, s[1] = u
                    }
                }, r = function () {
                    return this._data ? this._data.length / this._dimSize : 0
                };
                e = {}, e[SR + "_" + AR] = {pure: !0, appendData: t}, e[SR + "_" + DR] = {
                    pure: !0,
                    appendData: function () {
                        throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
                    }
                }, e[MR] = {pure: !0, appendData: t}, e[IR] = {
                    pure: !0, appendData: function (t) {
                        var e = this._data;
                        y(t, function (t, n) {
                            for (var i = e[n] || (e[n] = []), r = 0; r < (t || []).length; r++) i.push(t[r])
                        })
                    }
                }, e[wR] = {appendData: t}, e[TR] = {
                    persistent: !1, pure: !0, appendData: function (t) {
                        this._data = t
                    }, clean: function () {
                        this._offset += this.count(), this._data = null
                    }
                }, HR = e
            }(), t
        }(), rz = function (t, e, n, i) {
            return t[i]
        }, oz = (VR = {}, VR[SR + "_" + AR] = function (t, e, n, i) {
            return t[i + e]
        }, VR[SR + "_" + DR] = function (t, e, n, i) {
            i += e;
            for (var r = [], o = t, a = 0; a < o.length; a++) {
                var s = o[a];
                r.push(s ? s[i] : null)
            }
            return r
        }, VR[MR] = rz, VR[IR] = function (t, e, n, i) {
            for (var r = [], o = 0; o < n.length; o++) {
                var a = n[o].name, s = t[a];
                r.push(s ? s[i] : null)
            }
            return r
        }, VR[wR] = rz, VR), az = function (t) {
            return t.length
        }, sz = (FR = {}, FR[SR + "_" + AR] = function (t, e) {
            return Math.max(0, t.length - e)
        }, FR[SR + "_" + DR] = function (t, e) {
            var n = t[0];
            return n ? Math.max(0, n.length - e) : 0
        }, FR[MR] = az, FR[IR] = function (t, e, n) {
            var i = n[0].name, r = t[i];
            return r ? r.length : 0
        }, FR[wR] = az, FR), lz = function (t, e) {
            return null != e ? t[e] : t
        }, uz = (GR = {}, GR[SR] = lz, GR[MR] = function (t, e, n) {
            return null != e ? t[n] : t
        }, GR[IR] = lz, GR[wR] = function (t, e) {
            var n = Xi(t);
            return null != e && n instanceof Array ? n[e] : n
        }, GR[TR] = lz, GR), hz = /\{@(.+?)\}/g, cz = function () {
            function t() {
            }

            return t.prototype.getDataParams = function (t, e) {
                var n = this.getData(e), i = this.getRawValue(t, e), r = n.getRawIndex(t), o = n.getName(t),
                    a = n.getRawDataItem(t), s = n.getItemVisual(t, "style"),
                    l = s && s[n.getItemVisual(t, "drawType") || "fill"], u = s && s.stroke, h = this.mainType,
                    c = "series" === h, p = n.userOutput;
                return {
                    componentType: h,
                    componentSubType: this.subType,
                    componentIndex: this.componentIndex,
                    seriesType: c ? this.subType : null,
                    seriesIndex: this.seriesIndex,
                    seriesId: c ? this.id : null,
                    seriesName: c ? this.name : null,
                    name: o,
                    dataIndex: r,
                    data: a,
                    dataType: e,
                    value: i,
                    color: l,
                    borderColor: u,
                    dimensionNames: p ? p.dimensionNames : null,
                    encode: p ? p.encode : null,
                    $vars: ["seriesName", "name", "value"]
                }
            }, t.prototype.getFormattedLabel = function (t, e, n, i, r, o) {
                e = e || "normal";
                var a = this.getData(n), s = this.getDataParams(t, n);
                if (o && (s.value = o.interpolatedValue), null != i && M(s.value) && (s.value = s.value[i]), !r) {
                    var l = a.getItemModel(t);
                    r = l.get("normal" === e ? ["label", "formatter"] : [e, "label", "formatter"])
                }
                if ("function" == typeof r) return s.status = e, s.dimensionIndex = i, r(s);
                if ("string" == typeof r) {
                    var u = wl(r, s);
                    return u.replace(hz, function (e, n) {
                        var i = n.length, r = "[" === n.charAt(0) && "]" === n.charAt(i - 1) ? +n.slice(1, i - 1) : n,
                            s = Gu(a, t, r);
                        if (o && M(o.interpolatedValue)) {
                            var l = a.getDimensionInfo(r);
                            l && (s = o.interpolatedValue[l.index])
                        }
                        return null != s ? s + "" : ""
                    })
                }
            }, t.prototype.getRawValue = function (t, e) {
                return Gu(this.getData(e), t)
            }, t.prototype.formatTooltip = function () {
            }, t
        }(), pz = function () {
            function t(t) {
                t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0
            }

            return t.prototype.perform = function (t) {
                function e(t) {
                    return !(t >= 1) && (t = 1), t
                }

                var n = this._upstream, i = t && t.skip;
                if (this._dirty && n) {
                    var r = this.context;
                    r.data = r.outputData = n.context.outputData
                }
                this.__pipeline && (this.__pipeline.currentTask = this);
                var o;
                this._plan && !i && (o = this._plan(this.context));
                var a = e(this._modBy), s = this._modDataCount || 0, l = e(t && t.modBy), u = t && t.modDataCount || 0;
                (a !== l || s !== u) && (o = "reset");
                var h;
                (this._dirty || "reset" === o) && (this._dirty = !1, h = this._doReset(i)), this._modBy = l, this._modDataCount = u;
                var c = t && t.step;
                if (this._dueEnd = n ? n._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, this._progress) {
                    var p = this._dueIndex, d = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd);
                    if (!i && (h || d > p)) {
                        var f = this._progress;
                        if (M(f)) for (var g = 0; g < f.length; g++) this._doProgress(f[g], p, d, l, u); else this._doProgress(f, p, d, l, u)
                    }
                    this._dueIndex = d;
                    var y = null != this._settedOutputEnd ? this._settedOutputEnd : d;
                    this._outputDueEnd = y
                } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
                return this.unfinished()
            }, t.prototype.dirty = function () {
                this._dirty = !0, this._onDirty && this._onDirty(this.context)
            }, t.prototype._doProgress = function (t, e, n, i, r) {
                dz.reset(e, n, i, r), this._callingProgress = t, this._callingProgress({
                    start: e,
                    end: n,
                    count: n - e,
                    next: dz.next
                }, this.context)
            }, t.prototype._doReset = function (t) {
                this._dueIndex = this._outputDueEnd = this._dueEnd = 0, this._settedOutputEnd = null;
                var e, n;
                !t && this._reset && (e = this._reset(this.context), e && e.progress && (n = e.forceFirstProgress, e = e.progress), M(e) && !e.length && (e = null)), this._progress = e, this._modBy = this._modDataCount = null;
                var i = this._downstream;
                return i && i.dirty(), n
            }, t.prototype.unfinished = function () {
                return this._progress && this._dueIndex < this._dueEnd
            }, t.prototype.pipe = function (t) {
                (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty())
            }, t.prototype.dispose = function () {
                this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0)
            }, t.prototype.getUpstream = function () {
                return this._upstream
            }, t.prototype.getDownstream = function () {
                return this._downstream
            }, t.prototype.setOutputEnd = function (t) {
                this._outputDueEnd = this._settedOutputEnd = t
            }, t
        }(), dz = function () {
            function t() {
                return n > i ? i++ : null
            }

            function e() {
                var t = i % a * r + Math.ceil(i / a), e = i >= n ? null : o > t ? t : i;
                return i++, e
            }

            var n, i, r, o, a, s = {
                reset: function (l, u, h, c) {
                    i = l, n = u, r = h, o = c, a = Math.ceil(o / r), s.next = r > 1 && o > 0 ? e : t
                }
            };
            return s
        }(), fz = (Z({
            number: function (t) {
                return parseFloat(t)
            }, time: function (t) {
                return +Li(t)
            }, trim: function (t) {
                return "string" == typeof t ? W(t) : t
            }
        }), {
            lt: function (t, e) {
                return e > t
            }, lte: function (t, e) {
                return e >= t
            }, gt: function (t, e) {
                return t > e
            }, gte: function (t, e) {
                return t >= e
            }
        }), gz = (function () {
            function t(t, e) {
                if ("number" != typeof e) {
                    var n = "";
                    Gi(n)
                }
                this._opFn = fz[t], this._rvalFloat = Ei(e)
            }

            return t.prototype.evaluate = function (t) {
                return "number" == typeof t ? this._opFn(t, this._rvalFloat) : this._opFn(Ei(t), this._rvalFloat)
            }, t
        }(), function () {
            function t(t, e) {
                var n = "desc" === t;
                this._resultLT = n ? 1 : -1, null == e && (e = n ? "min" : "max"), this._incomparable = "min" === e ? -1 / 0 : 1 / 0
            }

            return t.prototype.evaluate = function (t, e) {
                var n = typeof t, i = typeof e, r = "number" === n ? t : Ei(t), o = "number" === i ? e : Ei(e),
                    a = isNaN(r), s = isNaN(o);
                if (a && (r = this._incomparable), s && (o = this._incomparable), a && s) {
                    var l = "string" === n, u = "string" === i;
                    l && (r = u ? t : 0), u && (o = l ? e : 0)
                }
                return o > r ? this._resultLT : r > o ? -this._resultLT : 0
            }, t
        }()), yz = (function () {
            function t(t, e) {
                this._rval = e, this._isEQ = t, this._rvalTypeof = typeof e, this._rvalFloat = Ei(e)
            }

            return t.prototype.evaluate = function (t) {
                var e = t === this._rval;
                if (!e) {
                    var n = typeof t;
                    n === this._rvalTypeof || "number" !== n && "number" !== this._rvalTypeof || (e = Ei(t) === this._rvalFloat)
                }
                return this._isEQ ? e : !e
            }, t
        }(), function () {
            function t() {
            }

            return t.prototype.getRawData = function () {
                throw new Error("not supported")
            }, t.prototype.getRawDataItem = function () {
                throw new Error("not supported")
            }, t.prototype.cloneRawData = function () {
            }, t.prototype.getDimensionInfo = function () {
            }, t.prototype.cloneAllDimensionInfo = function () {
            }, t.prototype.count = function () {
            }, t.prototype.retrieveValue = function () {
            }, t.prototype.retrieveValueFromItem = function () {
            }, t.prototype.convertValue = function (t, e) {
                return Xu(t, e)
            }, t
        }()), vz = Z(), mz = function () {
            function t(t) {
                this._sourceList = [], this._upstreamSignList = [], this._versionSignBase = 0, this._sourceHost = t
            }

            return t.prototype.dirty = function () {
                this._setLocalSource([], [])
            }, t.prototype._setLocalSource = function (t, e) {
                this._sourceList = t, this._upstreamSignList = e, this._versionSignBase++, this._versionSignBase > 9e10 && (this._versionSignBase = 0)
            }, t.prototype._getVersionSign = function () {
                return this._sourceHost.uid + "_" + this._versionSignBase
            }, t.prototype.prepareSource = function () {
                this._isDirty() && this._createSource()
            }, t.prototype._createSource = function () {
                this._setLocalSource([], []);
                var t, e, n = this._sourceHost, i = this._getUpstreamSourceManagers(), r = !!i.length;
                if (eh(n)) {
                    var o = n, a = void 0, s = void 0, l = void 0;
                    if (r) {
                        var u = i[0];
                        u.prepareSource(), l = u.getSource(), a = l.data, s = l.sourceFormat, e = [u._getVersionSign()]
                    } else a = o.get("data", !0), s = k(a) ? TR : wR, e = [];
                    var h = this._getSourceMetaRawOption(), c = l ? l.metaRawOption : null,
                        p = B(h.seriesLayoutBy, c ? c.seriesLayoutBy : null),
                        d = B(h.sourceHeader, c ? c.sourceHeader : null), f = B(h.dimensions, c ? c.dimensions : null);
                    t = [Au(a, {seriesLayoutBy: p, sourceHeader: d, dimensions: f}, s, o.get("encode", !0))]
                } else {
                    var g = n;
                    if (r) {
                        var y = this._applyTransform(i);
                        t = y.sourceList, e = y.upstreamSignList
                    } else {
                        var v = g.get("source", !0);
                        t = [Au(v, this._getSourceMetaRawOption(), null, null)], e = []
                    }
                }
                this._setLocalSource(t, e)
            }, t.prototype._applyTransform = function (t) {
                var e = this._sourceHost, n = e.get("transform", !0), i = e.get("fromTransformResult", !0);
                if (null != i) {
                    var r = "";
                    1 !== t.length && nh(r)
                }
                var o, a = [], s = [];
                return y(t, function (t) {
                    t.prepareSource();
                    var e = t.getSource(i || 0), n = "";
                    null == i || e || nh(n), a.push(e), s.push(t._getVersionSign())
                }), n ? o = $u(n, a, {datasetIndex: e.componentIndex}) : null != i && (o = [Lu(a[0])]), {
                    sourceList: o,
                    upstreamSignList: s
                }
            }, t.prototype._isDirty = function () {
                var t = this._sourceList;
                if (!t.length) return !0;
                for (var e = this._getUpstreamSourceManagers(), n = 0; n < e.length; n++) {
                    var i = e[n];
                    if (i._isDirty() || this._upstreamSignList[n] !== i._getVersionSign()) return !0
                }
            }, t.prototype.getSource = function (t) {
                return this._sourceList[t || 0]
            }, t.prototype._getUpstreamSourceManagers = function () {
                var t = this._sourceHost;
                if (eh(t)) {
                    var e = Hl(t);
                    return e ? [e.getSourceManager()] : []
                }
                return v(Wl(t), function (t) {
                    return t.getSourceManager()
                })
            }, t.prototype._getSourceMetaRawOption = function () {
                var t, e, n, i = this._sourceHost;
                if (eh(i)) t = i.get("seriesLayoutBy", !0), e = i.get("sourceHeader", !0), n = i.get("dimensions", !0); else if (!this._getUpstreamSourceManagers().length) {
                    var r = i;
                    t = r.get("seriesLayoutBy", !0), e = r.get("sourceHeader", !0), n = r.get("dimensions", !0)
                }
                return {seriesLayoutBy: t, sourceHeader: e, dimensions: n}
            }, t
        }(), xz = "line-height:1", _z = [0, 10, 20, 30], bz = ["", "\n", "\n\n", "\n\n\n"], wz = {
            section: {
                planLayout: function (t) {
                    var e = t.blocks.length, n = e > 1 || e > 0 && !t.noHeader, i = 0;
                    y(t.blocks, function (t) {
                        oh(t).planLayout(t);
                        var e = t.__gapLevelBetweenSubBlocks;
                        e >= i && (i = e + (!n || e && ("section" !== t.type || t.noHeader) ? 0 : 1))
                    }), t.__gapLevelBetweenSubBlocks = i
                }, build: function (t, e, n, i) {
                    var r = e.noHeader, o = lh(e), a = ah(t, e, r ? n : o.html, i);
                    if (r) return a;
                    var s = bl(e.header, "ordinal", t.useUTC), l = ih(i, t.renderMode).nameStyle;
                    return "richText" === t.renderMode ? ph(t, s, l) + o.richText + a : uh('<div style="' + l + ";" + xz + ';">' + _l(s) + "</div>" + a, n)
                }
            }, nameValue: {
                planLayout: function (t) {
                    t.__gapLevelBetweenSubBlocks = 0
                }, build: function (t, e, n, i) {
                    var r = t.renderMode, o = e.noName, a = e.noValue, s = !e.markerType, l = e.name, u = e.value,
                        h = t.useUTC;
                    if (!o || !a) {
                        var c = s ? "" : t.markupStyleCreator.makeTooltipMarker(e.markerType, e.markerColor || "#333", r),
                            p = o ? "" : bl(l, "ordinal", h), d = e.valueType, f = a ? [] : M(u) ? v(u, function (t, e) {
                                return bl(t, M(d) ? d[e] : d, h)
                            }) : [bl(u, M(d) ? d[0] : d, h)], g = !s || !o, y = !s && o, m = ih(i, r), x = m.nameStyle,
                            _ = m.valueStyle;
                        return "richText" === r ? (s ? "" : c) + (o ? "" : ph(t, p, x)) + (a ? "" : dh(t, f, g, y, _)) : uh((s ? "" : c) + (o ? "" : hh(p, !s, x)) + (a ? "" : ch(f, g, y, _)), n)
                    }
                }
            }
        }, Sz = function () {
            function t() {
                this.richTextStyles = {}, this._nextStyleNameId = Bi()
            }

            return t.prototype._generateStyleName = function () {
                return "__EC_aUTo_" + this._nextStyleNameId++
            }, t.prototype.makeTooltipMarker = function (t, e, n) {
                var i = "richText" === n ? this._generateStyleName() : null,
                    r = Ml({color: e, type: t, renderMode: n, markerId: i});
                return T(r) ? r : (this.richTextStyles[i] = r.style, r.content)
            }, t.prototype.wrapRichTextStyle = function (t, e) {
                var n = {};
                M(e) ? y(e, function (t) {
                    return h(n, t)
                }) : h(n, e);
                var i = this._generateStyleName();
                return this.richTextStyles[i] = n, "{" + i + "|" + t + "}"
            }, t
        }(), Mz = ur(), Iz = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e._selectedDataIndicesMap = {}, e
            }

            return e(n, t), n.prototype.init = function (t, e, n) {
                this.seriesIndex = this.componentIndex, this.dataTask = Wu({
                    count: bh,
                    reset: wh
                }), this.dataTask.context = {model: this}, this.mergeDefaultAndTheme(t, n);
                var i = Mz(this).sourceManager = new mz(this);
                i.prepareSource();
                var r = this.getInitialData(t, n);
                Mh(r, this), this.dataTask.context.data = r, Mz(this).dataBeforeProcessed = r, xh(this), this._initSelectedMapFromData(r)
            }, n.prototype.mergeDefaultAndTheme = function (t, e) {
                var n = Rl(this), i = n ? El(t) : {}, r = this.subType;
                gR.hasClass(r) && (r += "Series"), l(t, e.getTheme().get(this.subType)), l(t, this.getDefaultOption()), Wi(t, "label", ["show"]), this.fillDataTextStyle(t.data), n && zl(t, i, n)
            }, n.prototype.mergeOption = function (t, e) {
                t = l(this.option, t, !0), this.fillDataTextStyle(t.data);
                var n = Rl(this);
                n && zl(this.option, t, n);
                var i = Mz(this).sourceManager;
                i.dirty(), i.prepareSource();
                var r = this.getInitialData(t, e);
                Mh(r, this), this.dataTask.dirty(), this.dataTask.context.data = r, Mz(this).dataBeforeProcessed = r, xh(this), this._initSelectedMapFromData(r)
            }, n.prototype.fillDataTextStyle = function (t) {
                if (t && !k(t)) for (var e = ["show"], n = 0; n < t.length; n++) t[n] && t[n].label && Wi(t[n], "label", e)
            }, n.prototype.getInitialData = function () {
            }, n.prototype.appendData = function (t) {
                var e = this.getRawData();
                e.appendData(t.data)
            }, n.prototype.getData = function (t) {
                var e = Th(this);
                if (e) {
                    var n = e.context.data;
                    return null == t ? n : n.getLinkedData(t)
                }
                return Mz(this).data
            }, n.prototype.getAllData = function () {
                var t = this.getData();
                return t && t.getLinkedDataAll ? t.getLinkedDataAll() : [{data: t}]
            }, n.prototype.setData = function (t) {
                var e = Th(this);
                if (e) {
                    var n = e.context;
                    n.outputData = t, e !== this.dataTask && (n.data = t)
                }
                Mz(this).data = t
            }, n.prototype.getSource = function () {
                return Mz(this).sourceManager.getSource()
            }, n.prototype.getRawData = function () {
                return Mz(this).dataBeforeProcessed
            }, n.prototype.getBaseAxis = function () {
                var t = this.coordinateSystem;
                return t && t.getBaseAxis && t.getBaseAxis()
            }, n.prototype.formatTooltip = function (t, e) {
                return yh({series: this, dataIndex: t, multipleSeries: e})
            }, n.prototype.isAnimationEnabled = function () {
                if (oA.node) return !1;
                var t = this.getShallow("animation");
                return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), !!t
            }, n.prototype.restoreData = function () {
                this.dataTask.dirty()
            }, n.prototype.getColorFromPalette = function (t, e, n) {
                var i = this.ecModel, r = zR.prototype.getColorFromPalette.call(this, t, e, n);
                return r || (r = i.getColorFromPalette(t, e, n)), r
            }, n.prototype.coordDimToDataDim = function (t) {
                return this.getRawData().mapDimensionsAll(t)
            }, n.prototype.getProgressive = function () {
                return this.get("progressive")
            }, n.prototype.getProgressiveThreshold = function () {
                return this.get("progressiveThreshold")
            }, n.prototype.select = function (t, e) {
                this._innerSelect(this.getData(e), t)
            }, n.prototype.unselect = function (t, e) {
                var n = this.option.selectedMap;
                if (n) for (var i = this.getData(e), r = 0; r < t.length; r++) {
                    var o = t[r], a = mh(i, o);
                    n[a] = !1, this._selectedDataIndicesMap[a] = -1
                }
            }, n.prototype.toggleSelect = function (t, e) {
                for (var n = [], i = 0; i < t.length; i++) n[0] = t[i], this.isSelected(t[i], e) ? this.unselect(n, e) : this.select(n, e)
            }, n.prototype.getSelectedDataIndices = function () {
                for (var t = this._selectedDataIndicesMap, e = b(t), n = [], i = 0; i < e.length; i++) {
                    var r = t[e[i]];
                    r >= 0 && n.push(r)
                }
                return n
            }, n.prototype.isSelected = function (t, e) {
                var n = this.option.selectedMap;
                if (!n) return !1;
                var i = this.getData(e), r = mh(i, t);
                return n[r] || !1
            }, n.prototype._innerSelect = function (t, e) {
                var n, i, r = this.option.selectedMode, o = e.length;
                if (r && o) if ("multiple" === r) for (var a = this.option.selectedMap || (this.option.selectedMap = {}), s = 0; o > s; s++) {
                    var l = e[s], u = mh(t, l);
                    a[u] = !0, this._selectedDataIndicesMap[u] = t.getRawIndex(l)
                } else if ("single" === r || r === !0) {
                    var h = e[o - 1], u = mh(t, h);
                    this.option.selectedMap = (n = {}, n[u] = !0, n), this._selectedDataIndicesMap = (i = {}, i[u] = t.getRawIndex(h), i)
                }
            }, n.prototype._initSelectedMapFromData = function (t) {
                if (!this.option.selectedMap) {
                    var e = [];
                    t.hasItemOption && t.each(function (n) {
                        var i = t.getRawDataItem(n);
                        i && i.selected && e.push(n)
                    }), e.length > 0 && this._innerSelect(t, e)
                }
            }, n.registerClass = function (t) {
                return gR.registerClass(t)
            }, n.protoInitialize = function () {
                var t = n.prototype;
                t.type = "series.__base__", t.seriesIndex = 0, t.useColorPaletteOnData = !1, t.ignoreStyleOnData = !1, t.hasSymbolVisual = !1, t.defaultSymbol = "circle", t.visualStyleAccessPath = "itemStyle", t.visualDrawType = "fill"
            }(), n
        }(gR);
    f(Iz, cz), f(Iz, zR), Sr(Iz, gR);
    var Tz = function () {
        function t() {
            this.group = new sL, this.uid = Gs("viewComponent")
        }

        return t.prototype.init = function () {
        }, t.prototype.render = function () {
        }, t.prototype.dispose = function () {
        }, t.prototype.updateView = function () {
        }, t.prototype.updateLayout = function () {
        }, t.prototype.updateVisual = function () {
        }, t.prototype.blurSeries = function () {
        }, t
    }();
    br(Tz), Cr(Tz);
    var Cz = ur(), Az = Ch(), Dz = function () {
        function t() {
            this.group = new sL, this.uid = Gs("viewChart"), this.renderTask = Wu({
                plan: Lh,
                reset: kh
            }), this.renderTask.context = {view: this}
        }

        return t.prototype.init = function () {
        }, t.prototype.render = function () {
        }, t.prototype.highlight = function (t, e, n, i) {
            Dh(t.getData(), i, "emphasis")
        }, t.prototype.downplay = function (t, e, n, i) {
            Dh(t.getData(), i, "normal")
        }, t.prototype.remove = function () {
            this.group.removeAll()
        }, t.prototype.dispose = function () {
        }, t.prototype.updateView = function (t, e, n, i) {
            this.render(t, e, n, i)
        }, t.prototype.updateLayout = function (t, e, n, i) {
            this.render(t, e, n, i)
        }, t.prototype.updateVisual = function (t, e, n, i) {
            this.render(t, e, n, i)
        }, t.markUpdateMethod = function (t, e) {
            Cz(t).updateMethod = e
        }, t.protoInitialize = function () {
            var e = t.prototype;
            e.type = "chart"
        }(), t
    }();
    br(Dz, ["dispose"]), Cr(Dz);
    var Lz, kz = {
            incrementalPrepareRender: {
                progress: function (t, e) {
                    e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload)
                }
            }, render: {
                forceFirstProgress: !0, progress: function (t, e) {
                    e.view.render(e.model, e.ecModel, e.api, e.payload)
                }
            }
        }, Pz = "\x00__throttleOriginMethod", Oz = "\x00__throttleRate", Rz = "\x00__throttleType", zz = ur(),
        Ez = {itemStyle: Ar(EO, !0), lineStyle: Ar(OO, !0)}, Nz = {lineStyle: "stroke", itemStyle: "fill"}, Bz = {
            createOnAllSeries: !0, performRawSeries: !0, reset: function (t, e) {
                var n = t.getData(), i = t.visualStyleAccessPath || "itemStyle", r = t.getModel(i), o = zh(t, i), a = o(r),
                    s = r.getShallow("decal");
                s && (n.setVisual("decal", s), s.dirty = !0);
                var l = Eh(t, i), u = a[l], c = I(u) ? u : null, p = "auto" === a.fill || "auto" === a.stroke;
                if (!a[l] || c || p) {
                    var d = t.getColorFromPalette(t.name, null, e.getSeriesCount());
                    a[l] || (a[l] = d, n.setVisual("colorFromPalette", !0)), a.fill = "auto" === a.fill || "function" == typeof a.fill ? d : a.fill, a.stroke = "auto" === a.stroke || "function" == typeof a.stroke ? d : a.stroke
                }
                return n.setVisual("style", a), n.setVisual("drawType", l), !e.isSeriesFiltered(t) && c ? (n.setVisual("colorFromPalette", !1), {
                    dataEach: function (e, n) {
                        var i = t.getDataParams(n), r = h({}, a);
                        r[l] = c(i), e.setItemVisual(n, "style", r)
                    }
                }) : void 0
            }
        }, Vz = new VO, Fz = {
            createOnAllSeries: !0, performRawSeries: !0, reset: function (t, e) {
                if (!t.ignoreStyleOnData && !e.isSeriesFiltered(t)) {
                    var n = t.getData(), i = t.visualStyleAccessPath || "itemStyle", r = zh(t, i),
                        o = n.getVisual("drawType");
                    return {
                        dataEach: n.hasItemOption ? function (t, e) {
                            var n = t.getRawDataItem(e);
                            if (n && n[i]) {
                                Vz.option = n[i];
                                var a = r(Vz), s = t.ensureUniqueItemVisual(e, "style");
                                h(s, a), Vz.option.decal && (t.setItemVisual(e, "decal", Vz.option.decal), Vz.option.decal.dirty = !0), o in a && t.setItemVisual(e, "colorFromPalette", !1)
                            }
                        } : null
                    }
                }
            }
        }, Gz = {
            performRawSeries: !0, overallReset: function (t) {
                var e = Z();
                t.eachSeries(function (t) {
                    if (t.useColorPaletteOnData) {
                        var n = e.get(t.type);
                        n || (n = {}, e.set(t.type, n)), zz(t).scope = n
                    }
                }), t.eachSeries(function (e) {
                    if (e.useColorPaletteOnData && !t.isSeriesFiltered(e)) {
                        var n = e.getRawData(), i = {}, r = e.getData(), o = zz(e).scope,
                            a = e.visualStyleAccessPath || "itemStyle", s = Eh(e, a);
                        r.each(function (t) {
                            var e = r.getRawIndex(t);
                            i[e] = t
                        }), n.each(function (t) {
                            var a = i[t], l = r.getItemVisual(a, "colorFromPalette");
                            if (l) {
                                var u = r.ensureUniqueItemVisual(a, "style"), h = n.getName(t) || t + "", c = n.count();
                                u[s] = e.getColorFromPalette(h, o, c)
                            }
                        })
                    }
                })
            }
        }, Hz = Math.PI, Wz = function () {
            function t(t, e, n, i) {
                this._stageTaskMap = Z(), this.ecInstance = t, this.api = e, n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice(), this._allHandlers = n.concat(i)
            }

            return t.prototype.restoreData = function (t, e) {
                t.restoreData(e), this._stageTaskMap.each(function (t) {
                    var e = t.overallTask;
                    e && e.dirty()
                })
            }, t.prototype.getPerformArgs = function (t, e) {
                if (t.__pipeline) {
                    var n = this._pipelineMap.get(t.__pipeline.id), i = n.context,
                        r = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n.blockIndex,
                        o = r ? n.step : null, a = i && i.modDataCount, s = null != a ? Math.ceil(a / o) : null;
                    return {step: o, modBy: s, modDataCount: a}
                }
            }, t.prototype.getPipeline = function (t) {
                return this._pipelineMap.get(t)
            }, t.prototype.updateStreamModes = function (t, e) {
                var n = this._pipelineMap.get(t.uid), i = t.getData(), r = i.count(),
                    o = n.progressiveEnabled && e.incrementalPrepareRender && r >= n.threshold,
                    a = t.get("large") && r >= t.get("largeThreshold"),
                    s = "mod" === t.get("progressiveChunkMode") ? r : null;
                t.pipelineContext = n.context = {progressiveRender: o, modDataCount: s, large: a}
            }, t.prototype.restorePipelines = function (t) {
                var e = this, n = e._pipelineMap = Z();
                t.eachSeries(function (t) {
                    var i = t.getProgressive(), r = t.uid;
                    n.set(r, {
                        id: r,
                        head: null,
                        tail: null,
                        threshold: t.getProgressiveThreshold(),
                        progressiveEnabled: i && !(t.preventIncremental && t.preventIncremental()),
                        blockIndex: -1,
                        step: Math.round(i || 700),
                        count: 0
                    }), e._pipe(t, t.dataTask)
                })
            }, t.prototype.prepareStageTasks = function () {
                var t = this._stageTaskMap, e = this.api.getModel(), n = this.api;
                y(this._allHandlers, function (i) {
                    var r = t.get(i.uid) || t.set(i.uid, {}), o = "";
                    H(!(i.reset && i.overallReset), o), i.reset && this._createSeriesStageTask(i, r, e, n), i.overallReset && this._createOverallStageTask(i, r, e, n)
                }, this)
            }, t.prototype.prepareView = function (t, e, n, i) {
                var r = t.renderTask, o = r.context;
                o.model = e, o.ecModel = n, o.api = i, r.__block = !t.incrementalPrepareRender, this._pipe(e, r)
            }, t.prototype.performDataProcessorTasks = function (t, e) {
                this._performStageTasks(this._dataProcessorHandlers, t, e, {block: !0})
            }, t.prototype.performVisualTasks = function (t, e, n) {
                this._performStageTasks(this._visualHandlers, t, e, n)
            }, t.prototype._performStageTasks = function (t, e, n, i) {
                function r(t, e) {
                    return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id))
                }

                i = i || {};
                var o = !1, a = this;
                y(t, function (t) {
                    if (!i.visualType || i.visualType === t.visualType) {
                        var s = a._stageTaskMap.get(t.uid), l = s.seriesTaskMap, u = s.overallTask;
                        if (u) {
                            var h, c = u.agentStubMap;
                            c.each(function (t) {
                                r(i, t) && (t.dirty(), h = !0)
                            }), h && u.dirty(), a.updatePayload(u, n);
                            var p = a.getPerformArgs(u, i.block);
                            c.each(function (t) {
                                t.perform(p)
                            }), u.perform(p) && (o = !0)
                        } else l && l.each(function (s) {
                            r(i, s) && s.dirty();
                            var l = a.getPerformArgs(s, i.block);
                            l.skip = !t.performRawSeries && e.isSeriesFiltered(s.context.model), a.updatePayload(s, n), s.perform(l) && (o = !0)
                        })
                    }
                }), this.unfinished = o || this.unfinished
            }, t.prototype.performSeriesTasks = function (t) {
                var e;
                t.eachSeries(function (t) {
                    e = t.dataTask.perform() || e
                }), this.unfinished = e || this.unfinished
            }, t.prototype.plan = function () {
                this._pipelineMap.each(function (t) {
                    var e = t.tail;
                    do {
                        if (e.__block) {
                            t.blockIndex = e.__idxInPipeline;
                            break
                        }
                        e = e.getUpstream()
                    } while (e)
                })
            }, t.prototype.updatePayload = function (t, e) {
                "remain" !== e && (t.context.payload = e)
            }, t.prototype._createSeriesStageTask = function (t, e, n, i) {
                function r(e) {
                    var r = e.uid, l = s.set(r, a && a.get(r) || Wu({plan: Hh, reset: Wh, count: Yh}));
                    l.context = {
                        model: e,
                        ecModel: n,
                        api: i,
                        useClearVisual: t.isVisual && !t.isLayout,
                        plan: t.plan,
                        reset: t.reset,
                        scheduler: o
                    }, o._pipe(e, l)
                }

                var o = this, a = e.seriesTaskMap, s = e.seriesTaskMap = Z(), l = t.seriesType, u = t.getTargetSeries;
                t.createOnAllSeries ? n.eachRawSeries(r) : l ? n.eachRawSeriesByType(l, r) : u && u(n, i).each(r)
            }, t.prototype._createOverallStageTask = function (t, e, n, i) {
                function r(t) {
                    var e = t.uid, n = l.set(e, s && s.get(e) || (p = !0, Wu({reset: Vh, onDirty: Gh})));
                    n.context = {model: t, overallProgress: c}, n.agent = a, n.__block = c, o._pipe(t, n)
                }

                var o = this, a = e.overallTask = e.overallTask || Wu({reset: Bh});
                a.context = {ecModel: n, api: i, overallReset: t.overallReset, scheduler: o};
                var s = a.agentStubMap, l = a.agentStubMap = Z(), u = t.seriesType, h = t.getTargetSeries, c = !0, p = !1,
                    d = "";
                H(!t.createOnAllSeries, d), u ? n.eachRawSeriesByType(u, r) : h ? h(n, i).each(r) : (c = !1, y(n.getSeries(), r)), p && a.dirty()
            }, t.prototype._pipe = function (t, e) {
                var n = t.uid, i = this._pipelineMap.get(n);
                !i.head && (i.head = e), i.tail && i.tail.pipe(e), i.tail = e, e.__idxInPipeline = i.count++, e.__pipeline = i
            }, t.wrapStageHandler = function (t, e) {
                return I(t) && (t = {
                    overallReset: t,
                    seriesType: Zh(t)
                }), t.uid = Gs("stageHandler"), e && (t.visualType = e), t
            }, t
        }(), Xz = Xh(0), Yz = {}, Zz = {};
    Uh(Yz, BR), Uh(Zz, YR), Yz.eachSeriesByType = Yz.eachRawSeriesByType = function (t) {
        Lz = t
    }, Yz.eachComponent = function (t) {
        "series" === t.mainType && t.subType && (Lz = t.subType)
    };
    var Uz = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"],
        jz = {
            color: Uz,
            colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], Uz]
        }, qz = "#B9B8CE", Kz = "#100C2A", $z = function () {
            return {
                axisLine: {lineStyle: {color: qz}},
                splitLine: {lineStyle: {color: "#484753"}},
                splitArea: {areaStyle: {color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"]}},
                minorSplitLine: {lineStyle: {color: "#20203B"}}
            }
        }, Jz = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"], Qz = {
            darkMode: !0,
            color: Jz,
            backgroundColor: Kz,
            axisPointer: {lineStyle: {color: "#817f91"}, crossStyle: {color: "#817f91"}, label: {color: "#fff"}},
            legend: {textStyle: {color: qz}},
            textStyle: {color: qz},
            title: {textStyle: {color: "#EEF1FA"}, subtextStyle: {color: "#B9B8CE"}},
            toolbox: {iconStyle: {borderColor: qz}},
            dataZoom: {
                borderColor: "#71708A",
                textStyle: {color: qz},
                brushStyle: {color: "rgba(135,163,206,0.3)"},
                handleStyle: {color: "#353450", borderColor: "#C5CBE3"},
                moveHandleStyle: {color: "#B0B6C3", opacity: .3},
                fillerColor: "rgba(135,163,206,0.2)",
                emphasis: {
                    handleStyle: {borderColor: "#91B7F2", color: "#4D587D"},
                    moveHandleStyle: {color: "#636D9A", opacity: .7}
                },
                dataBackground: {lineStyle: {color: "#71708A", width: 1}, areaStyle: {color: "#71708A"}},
                selectedDataBackground: {lineStyle: {color: "#87A3CE"}, areaStyle: {color: "#87A3CE"}}
            },
            visualMap: {textStyle: {color: qz}},
            timeline: {lineStyle: {color: qz}, label: {color: qz}, controlStyle: {color: qz, borderColor: qz}},
            calendar: {itemStyle: {color: Kz}, dayLabel: {color: qz}, monthLabel: {color: qz}, yearLabel: {color: qz}},
            timeAxis: $z(),
            logAxis: $z(),
            valueAxis: $z(),
            categoryAxis: $z(),
            line: {symbol: "circle"},
            graph: {color: Jz},
            gauge: {
                title: {color: qz},
                axisLine: {lineStyle: {color: [[1, "rgba(207,212,219,0.2)"]]}},
                axisLabel: {color: qz},
                detail: {color: "#EEF1FA"}
            },
            candlestick: {itemStyle: {color: "#f64e56", color0: "#54ea92", borderColor: "#f64e56", borderColor0: "#54ea92"}}
        };
    Qz.categoryAxis.splitLine.show = !1;
    var tE = function () {
            function t() {
            }

            return t.prototype.normalizeQuery = function (t) {
                var e = {}, n = {}, i = {};
                if (T(t)) {
                    var r = mr(t);
                    e.mainType = r.main || null, e.subType = r.sub || null
                } else {
                    var o = ["Index", "Name", "Id"], a = {name: 1, dataIndex: 1, dataType: 1};
                    y(t, function (t, r) {
                        for (var s = !1, l = 0; l < o.length; l++) {
                            var u = o[l], h = r.lastIndexOf(u);
                            if (h > 0 && h === r.length - u.length) {
                                var c = r.slice(0, h);
                                "data" !== c && (e.mainType = c, e[u.toLowerCase()] = t, s = !0)
                            }
                        }
                        a.hasOwnProperty(r) && (n[r] = t, s = !0), s || (i[r] = t)
                    })
                }
                return {cptQuery: e, dataQuery: n, otherQuery: i}
            }, t.prototype.filter = function (t, e) {
                function n(t, e, n, i) {
                    return null == t[n] || e[i || n] === t[n]
                }

                var i = this.eventInfo;
                if (!i) return !0;
                var r = i.targetEl, o = i.packedEvent, a = i.model, s = i.view;
                if (!a || !s) return !0;
                var l = e.cptQuery, u = e.dataQuery;
                return n(l, a, "mainType") && n(l, a, "subType") && n(l, a, "index", "componentIndex") && n(l, a, "name") && n(l, a, "id") && n(u, o, "name") && n(u, o, "dataIndex") && n(u, o, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, r, o))
            }, t.prototype.afterTrigger = function () {
                this.eventInfo = null
            }, t
        }(), eE = {
            createOnAllSeries: !0, performRawSeries: !0, reset: function (t, e) {
                function n(e, n) {
                    var i = t.getRawValue(n), a = t.getDataParams(n);
                    u && e.setItemVisual(n, "symbol", r(i, a)), h && e.setItemVisual(n, "symbolSize", o(i, a)), c && e.setItemVisual(n, "symbolRotate", s(i, a)), p && e.setItemVisual(n, "symbolOffset", l(i, a))
                }

                var i = t.getData();
                if (t.legendIcon && i.setVisual("legendIcon", t.legendIcon), t.hasSymbolVisual) {
                    var r = t.get("symbol"), o = t.get("symbolSize"), a = t.get("symbolKeepAspect"),
                        s = t.get("symbolRotate"), l = t.get("symbolOffset"), u = I(r), h = I(o), c = I(s), p = I(l),
                        d = u || h || c || p, f = !u && r ? r : t.defaultSymbol, g = h ? null : o, y = c ? null : s,
                        v = p ? null : l;
                    if (i.setVisual({
                        legendIcon: t.legendIcon || f,
                        symbol: f,
                        symbolSize: g,
                        symbolKeepAspect: a,
                        symbolRotate: y,
                        symbolOffset: v
                    }), !e.isSeriesFiltered(t)) return {dataEach: d ? n : null}
                }
            }
        }, nE = {
            createOnAllSeries: !0, performRawSeries: !0, reset: function (t, e) {
                function n(t, e) {
                    var n = t.getItemModel(e), i = n.getShallow("symbol", !0), r = n.getShallow("symbolSize", !0),
                        o = n.getShallow("symbolRotate", !0), a = n.getShallow("symbolOffset", !0),
                        s = n.getShallow("symbolKeepAspect", !0);
                    null != i && t.setItemVisual(e, "symbol", i), null != r && t.setItemVisual(e, "symbolSize", r), null != o && t.setItemVisual(e, "symbolRotate", o), null != a && t.setItemVisual(e, "symbolOffset", a), null != s && t.setItemVisual(e, "symbolKeepAspect", s)
                }

                if (t.hasSymbolVisual && !e.isSeriesFiltered(t)) {
                    var i = t.getData();
                    return {dataEach: i.hasItemOption ? n : null}
                }
            }
        }, iE = 2 * Math.PI, rE = Ck.CMD, oE = ["top", "right", "bottom", "left"], aE = [], sE = new HD, lE = new HD,
        uE = new HD, hE = new HD, cE = new HD, pE = [], dE = new HD,
        fE = ["align", "verticalAlign", "width", "height", "fontSize"], gE = new GD, yE = ur(), vE = ur(),
        mE = ["x", "y", "rotation"], xE = function () {
            function t() {
                this._labelList = [], this._chartViewList = []
            }

            return t.prototype.clearLabels = function () {
                this._labelList = [], this._chartViewList = []
            }, t.prototype._addLabel = function (t, e, n, i, r) {
                var o = i.style, a = i.__hostTarget, s = a.textConfig || {}, l = i.getComputedTransform(),
                    u = i.getBoundingRect().plain();
                $D.applyTransform(u, u, l), l ? gE.setLocalTransform(l) : (gE.x = gE.y = gE.rotation = gE.originX = gE.originY = 0, gE.scaleX = gE.scaleY = 1);
                var h, c = i.__hostTarget;
                if (c) {
                    h = c.getBoundingRect().plain();
                    var p = c.getComputedTransform();
                    $D.applyTransform(h, h, p)
                }
                var d = h && c.getTextGuideLine();
                this._labelList.push({
                    label: i,
                    labelLine: d,
                    seriesModel: n,
                    dataIndex: t,
                    dataType: e,
                    layoutOption: r,
                    computedLayoutOption: null,
                    rect: u,
                    hostRect: h,
                    priority: h ? h.width * h.height : 0,
                    defaultAttr: {
                        ignore: i.ignore,
                        labelGuideIgnore: d && d.ignore,
                        x: gE.x,
                        y: gE.y,
                        scaleX: gE.scaleX,
                        scaleY: gE.scaleY,
                        rotation: gE.rotation,
                        style: {
                            x: o.x,
                            y: o.y,
                            align: o.align,
                            verticalAlign: o.verticalAlign,
                            width: o.width,
                            height: o.height,
                            fontSize: o.fontSize
                        },
                        cursor: i.cursor,
                        attachedPos: s.position,
                        attachedRot: s.rotation
                    }
                })
            }, t.prototype.addLabelsOfSeries = function (t) {
                var e = this;
                this._chartViewList.push(t);
                var n = t.__model, i = n.get("labelLayout");
                (I(i) || b(i).length) && t.group.traverse(function (t) {
                    if (t.ignore) return !0;
                    var r = t.getTextContent(), o = tP(t);
                    r && !r.disableLabelLayout && e._addLabel(o.dataIndex, o.dataType, n, r, i)
                })
            }, t.prototype.updateLayoutConfig = function (t) {
                function e(t, e) {
                    return function () {
                        ic(t, e)
                    }
                }

                for (var n = t.getWidth(), i = t.getHeight(), r = 0; r < this._labelList.length; r++) {
                    var o = this._labelList[r], a = o.label, s = a.__hostTarget, l = o.defaultAttr, u = void 0;
                    u = "function" == typeof o.layoutOption ? o.layoutOption(yc(o, s)) : o.layoutOption, u = u || {}, o.computedLayoutOption = u;
                    var h = Math.PI / 180;
                    s && s.setTextConfig({
                        local: !1,
                        position: null != u.x || null != u.y ? null : l.attachedPos,
                        rotation: null != u.rotate ? u.rotate * h : l.attachedRot,
                        offset: [u.dx || 0, u.dy || 0]
                    });
                    var c = !1;
                    if (null != u.x ? (a.x = _i(u.x, n), a.setStyle("x", 0), c = !0) : (a.x = l.x, a.setStyle("x", l.style.x)), null != u.y ? (a.y = _i(u.y, i), a.setStyle("y", 0), c = !0) : (a.y = l.y, a.setStyle("y", l.style.y)), u.labelLinePoints) {
                        var p = s.getTextGuideLine();
                        p && (p.setShape({points: u.labelLinePoints}), c = !1)
                    }
                    var d = yE(a);
                    d.needsUpdateLabelLine = c, a.rotation = null != u.rotate ? u.rotate * h : l.rotation, a.scaleX = l.scaleX, a.scaleY = l.scaleY;
                    for (var f = 0; f < fE.length; f++) {
                        var g = fE[f];
                        a.setStyle(g, null != u[g] ? u[g] : l.style[g])
                    }
                    if (u.draggable) {
                        if (a.draggable = !0, a.cursor = "move", s) {
                            var y = o.seriesModel;
                            if (null != o.dataIndex) {
                                var v = o.seriesModel.getData(o.dataType);
                                y = v.getItemModel(o.dataIndex)
                            }
                            a.on("drag", e(s, y.getModel("labelLine")))
                        }
                    } else a.off("drag"), a.cursor = l.cursor
                }
            }, t.prototype.layout = function (t) {
                var e = t.getWidth(), n = t.getHeight(), i = hc(this._labelList), r = x(i, function (t) {
                    return "shiftX" === t.layoutOption.moveOverlap
                }), o = x(i, function (t) {
                    return "shiftY" === t.layoutOption.moveOverlap
                });
                pc(r, 0, e), dc(o, 0, n);
                var a = x(i, function (t) {
                    return t.layoutOption.hideOverlap
                });
                fc(a)
            }, t.prototype.processLabelsOverall = function () {
                var t = this;
                y(this._chartViewList, function (e) {
                    var n = e.__model, i = e.ignoreLabelLineUpdate, r = n.isAnimationEnabled();
                    e.group.traverse(function (e) {
                        if (e.ignore) return !0;
                        var o = !i, a = e.getTextContent();
                        !o && a && (o = yE(a).needsUpdateLabelLine), o && t._updateLabelLine(e, n), r && t._animateLabels(e, n)
                    })
                })
            }, t.prototype._updateLabelLine = function (t, e) {
                var n = t.getTextContent(), i = tP(t), r = i.dataIndex;
                if (n && null != r) {
                    var o = e.getData(i.dataType), a = o.getItemModel(r), s = {}, l = o.getItemVisual(r, "style"),
                        u = o.getVisual("drawType");
                    s.stroke = l[u];
                    var h = a.getModel("labelLine");
                    lc(t, uc(a), s), ic(t, h)
                }
            }, t.prototype._animateLabels = function (t, e) {
                var n = t.getTextContent(), i = t.getTextGuideLine();
                if (n && !n.ignore && !n.invisible && !t.disableLabelAnimation && !fs(t)) {
                    var r = yE(n), o = r.oldLayout, a = tP(t), s = a.dataIndex, l = {x: n.x, y: n.y, rotation: n.rotation},
                        u = e.getData(a.dataType);
                    if (o) {
                        n.attr(o);
                        var h = t.prevStates;
                        h && (p(h, "select") >= 0 && n.attr(r.oldLayoutSelect), p(h, "emphasis") >= 0 && n.attr(r.oldLayoutEmphasis)), us(n, l, e, s)
                    } else if (n.attr(l), !DO(n).valueAnimation) {
                        var c = B(n.style.opacity, 1);
                        n.style.opacity = 0, hs(n, {style: {opacity: c}}, e, s)
                    }
                    if (r.oldLayout = l, n.states.select) {
                        var d = r.oldLayoutSelect = {};
                        vc(d, l, mE), vc(d, n.states.select, mE)
                    }
                    if (n.states.emphasis) {
                        var f = r.oldLayoutEmphasis = {};
                        vc(f, l, mE), vc(f, n.states.emphasis, mE)
                    }
                    Fs(n, s, u, e, e)
                }
                if (i && !i.ignore && !i.invisible) {
                    var r = vE(i), o = r.oldLayout, g = {points: i.shape.points};
                    o ? (i.attr({shape: o}), us(i, {shape: g}, e)) : (i.setShape(g), i.style.strokePercent = 0, hs(i, {style: {strokePercent: 1}}, e)), r.oldLayout = g
                }
            }, t
        }(), _E = Math.round(9 * Math.random()), bE = function () {
            function t() {
                this._id = "__ec_inner_" + _E++
            }

            return t.prototype.get = function (t) {
                return this._guard(t)[this._id]
            }, t.prototype.set = function (t, e) {
                var n = this._guard(t);
                return "function" == typeof Object.defineProperty ? Object.defineProperty(n, this._id, {
                    value: e,
                    enumerable: !1,
                    configurable: !0
                }) : n[this._id] = e, this
            }, t.prototype["delete"] = function (t) {
                return this.has(t) ? (delete this._guard(t)[this._id], !0) : !1
            }, t.prototype.has = function (t) {
                return !!this._guard(t)[this._id]
            }, t.prototype._guard = function (t) {
                if (t !== Object(t)) throw TypeError("Value of WeakMap is not a non-null object.");
                return t
            }, t
        }(), wE = Bk.extend({
            type: "triangle", shape: {cx: 0, cy: 0, width: 0, height: 0}, buildPath: function (t, e) {
                var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2;
                t.moveTo(n, i - o), t.lineTo(n + r, i + o), t.lineTo(n - r, i + o), t.closePath()
            }
        }), SE = Bk.extend({
            type: "diamond", shape: {cx: 0, cy: 0, width: 0, height: 0}, buildPath: function (t, e) {
                var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2;
                t.moveTo(n, i - o), t.lineTo(n + r, i), t.lineTo(n, i + o), t.lineTo(n - r, i), t.closePath()
            }
        }), ME = Bk.extend({
            type: "pin", shape: {x: 0, y: 0, width: 0, height: 0}, buildPath: function (t, e) {
                var n = e.x, i = e.y, r = e.width / 5 * 3, o = Math.max(r, e.height), a = r / 2, s = a * a / (o - a),
                    l = i - o + a + s, u = Math.asin(s / a), h = Math.cos(u) * a, c = Math.sin(u), p = Math.cos(u),
                    d = .6 * a, f = .7 * a;
                t.moveTo(n - h, l + s), t.arc(n, l, a, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(n + h - c * d, l + s + p * d, n, i - f, n, i), t.bezierCurveTo(n, i - f, n - h + c * d, l + s + p * d, n - h, l + s), t.closePath()
            }
        }), IE = Bk.extend({
            type: "arrow", shape: {x: 0, y: 0, width: 0, height: 0}, buildPath: function (t, e) {
                var n = e.height, i = e.width, r = e.x, o = e.y, a = i / 3 * 2;
                t.moveTo(r, o), t.lineTo(r + a, o + n), t.lineTo(r, o + n / 4 * 3), t.lineTo(r - a, o + n), t.lineTo(r, o), t.closePath()
            }
        }), TE = {line: eO, rect: Uk, roundRect: Uk, square: Uk, circle: kP, diamond: SE, pin: ME, arrow: IE, triangle: wE},
        CE = {
            line: function (t, e, n, i, r) {
                r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2
            }, rect: function (t, e, n, i, r) {
                r.x = t, r.y = e, r.width = n, r.height = i
            }, roundRect: function (t, e, n, i, r) {
                r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4
            }, square: function (t, e, n, i, r) {
                var o = Math.min(n, i);
                r.x = t, r.y = e, r.width = o, r.height = o
            }, circle: function (t, e, n, i, r) {
                r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2
            }, diamond: function (t, e, n, i, r) {
                r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i
            }, pin: function (t, e, n, i, r) {
                r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i
            }, arrow: function (t, e, n, i, r) {
                r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i
            }, triangle: function (t, e, n, i, r) {
                r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i
            }
        }, AE = {};
    y(TE, function (t, e) {
        AE[e] = new t
    });
    for (var DE, LE = Bk.extend({
        type: "symbol",
        shape: {symbolType: "", x: 0, y: 0, width: 0, height: 0},
        calculateTextPosition: function (t, e, n) {
            var i = oi(t, e, n), r = this.shape;
            return r && "pin" === r.symbolType && "inside" === e.position && (i.y = n.y + .4 * n.height), i
        },
        buildPath: function (t, e, n) {
            var i = e.symbolType;
            if ("none" !== i) {
                var r = AE[i];
                r || (i = "rect", r = AE[i]), CE[i](e.x, e.y, e.width, e.height, r.shape), r.buildPath(t, r.shape, n)
            }
        }
    }), kE = new Ck(!0), PE = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"], OE = [["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10]], RE = 1, zE = 2, EE = 3, NE = 4, BE = new bE, VE = new rD(100), FE = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"], GE = {
        fill: "fill",
        stroke: "stroke",
        "stroke-width": "lineWidth",
        opacity: "opacity",
        "fill-opacity": "fillOpacity",
        "stroke-opacity": "strokeOpacity",
        "stroke-dasharray": "lineDash",
        "stroke-dashoffset": "lineDashOffset",
        "stroke-linecap": "lineCap",
        "stroke-linejoin": "lineJoin",
        "stroke-miterlimit": "miterLimit",
        "font-family": "fontFamily",
        "font-size": "fontSize",
        "font-style": "fontStyle",
        "font-weight": "fontWeight",
        "text-anchor": "textAlign",
        visibility: "visibility",
        display: "display"
    }, HE = b(GE), WE = {
        "alignment-baseline": "textBaseline",
        "stop-color": "stopColor"
    }, XE = b(WE), YE = function () {
        function t() {
            this._defs = {}, this._root = null
        }

        return t.prototype.parse = function (t, e) {
            e = e || {};
            var n = np(t);
            if (!n) throw new Error("Illegal svg");
            this._defsUsePending = [];
            var i = new sL;
            this._root = i;
            var r = [], o = n.getAttribute("viewBox") || "", a = parseFloat(n.getAttribute("width") || e.width),
                s = parseFloat(n.getAttribute("height") || e.height);
            isNaN(a) && (a = null), isNaN(s) && (s = null), sp(n, i, null, !0, !1);
            for (var l = n.firstChild; l;) this._parseNode(l, i, r, null, !1, !1), l = l.nextSibling;
            hp(this._defs, this._defsUsePending), this._defsUsePending = [];
            var u, h;
            if (o) {
                var c = cp(o);
                c.length >= 4 && (u = {
                    x: parseFloat(c[0] || 0),
                    y: parseFloat(c[1] || 0),
                    width: parseFloat(c[2]),
                    height: parseFloat(c[3])
                })
            }
            if (u && null != a && null != s && (h = gp(u, {x: 0, y: 0, width: a, height: s}), !e.ignoreViewBox)) {
                var p = i;
                i = new sL, i.add(p), p.scaleX = p.scaleY = h.scale, p.x = h.x, p.y = h.y
            }
            return e.ignoreRootClip || null == a || null == s || i.setClipPath(new Uk({
                shape: {
                    x: 0,
                    y: 0,
                    width: a,
                    height: s
                }
            })), {root: i, width: a, height: s, viewBoxRect: u, viewBoxTransform: h, named: r}
        }, t.prototype._parseNode = function (t, e, n, i, r, o) {
            var a, s = t.nodeName.toLowerCase(), l = i;
            if ("defs" === s && (r = !0), "text" === s && (o = !0), "defs" === s || "switch" === s) a = e; else {
                if (!r) {
                    var u = DE[s];
                    if (u && q(DE, s)) {
                        a = u.call(this, t, e);
                        var h = t.getAttribute("name");
                        if (h) {
                            var c = {name: h, namedFrom: null, svgNodeTagLower: s, el: a};
                            n.push(c), "g" === s && (l = c)
                        } else i && n.push({name: i.name, namedFrom: i, svgNodeTagLower: s, el: a});
                        e.add(a)
                    }
                }
                var p = ZE[s];
                if (p && q(ZE, s)) {
                    var d = p.call(this, t), f = t.getAttribute("id");
                    f && (this._defs[f] = d)
                }
            }
            if (a && a.isGroup) for (var g = t.firstChild; g;) 1 === g.nodeType ? this._parseNode(g, a, n, l, r, o) : 3 === g.nodeType && o && this._parseText(g, a), g = g.nextSibling
        }, t.prototype._parseText = function (t, e) {
            var n = new Fk({style: {text: t.textContent}, silent: !0, x: this._textX || 0, y: this._textY || 0});
            op(e, n), sp(t, n, this._defsUsePending, !1, !1), lp(n, e);
            var i = n.style, r = i.fontSize;
            r && 9 > r && (i.fontSize = 9, n.scaleX *= r / 9, n.scaleY *= r / 9);
            var o = (i.fontSize || i.fontFamily) && [i.fontStyle, i.fontWeight, (i.fontSize || 12) + "px", i.fontFamily || "sans-serif"].join(" ");
            i.font = o;
            var a = n.getBoundingRect();
            return this._textX += a.width, e.add(n), n
        }, t.internalField = function () {
            DE = {
                g: function (t, e) {
                    var n = new sL;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n
                }, rect: function (t, e) {
                    var n = new Uk;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n.setShape({
                        x: parseFloat(t.getAttribute("x") || "0"),
                        y: parseFloat(t.getAttribute("y") || "0"),
                        width: parseFloat(t.getAttribute("width") || "0"),
                        height: parseFloat(t.getAttribute("height") || "0")
                    }), n.silent = !0, n
                }, circle: function (t, e) {
                    var n = new kP;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n.setShape({
                        cx: parseFloat(t.getAttribute("cx") || "0"),
                        cy: parseFloat(t.getAttribute("cy") || "0"),
                        r: parseFloat(t.getAttribute("r") || "0")
                    }), n.silent = !0, n
                }, line: function (t, e) {
                    var n = new eO;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n.setShape({
                        x1: parseFloat(t.getAttribute("x1") || "0"),
                        y1: parseFloat(t.getAttribute("y1") || "0"),
                        x2: parseFloat(t.getAttribute("x2") || "0"),
                        y2: parseFloat(t.getAttribute("y2") || "0")
                    }), n.silent = !0, n
                }, ellipse: function (t, e) {
                    var n = new OP;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n.setShape({
                        cx: parseFloat(t.getAttribute("cx") || "0"),
                        cy: parseFloat(t.getAttribute("cy") || "0"),
                        rx: parseFloat(t.getAttribute("rx") || "0"),
                        ry: parseFloat(t.getAttribute("ry") || "0")
                    }), n.silent = !0, n
                }, polygon: function (t, e) {
                    var n, i = t.getAttribute("points");
                    i && (n = ap(i));
                    var r = new KP({shape: {points: n || []}, silent: !0});
                    return op(e, r), sp(t, r, this._defsUsePending, !1, !1), r
                }, polyline: function (t, e) {
                    var n, i = t.getAttribute("points");
                    i && (n = ap(i));
                    var r = new JP({shape: {points: n || []}, silent: !0});
                    return op(e, r), sp(t, r, this._defsUsePending, !1, !1), r
                }, image: function (t, e) {
                    var n = new Wk;
                    return op(e, n), sp(t, n, this._defsUsePending, !1, !1), n.setStyle({
                        image: t.getAttribute("xlink:href"),
                        x: +t.getAttribute("x"),
                        y: +t.getAttribute("y"),
                        width: +t.getAttribute("width"),
                        height: +t.getAttribute("height")
                    }), n.silent = !0, n
                }, text: function (t, e) {
                    var n = t.getAttribute("x") || "0", i = t.getAttribute("y") || "0", r = t.getAttribute("dx") || "0",
                        o = t.getAttribute("dy") || "0";
                    this._textX = parseFloat(n) + parseFloat(r), this._textY = parseFloat(i) + parseFloat(o);
                    var a = new sL;
                    return op(e, a), sp(t, a, this._defsUsePending, !1, !0), a
                }, tspan: function (t, e) {
                    var n = t.getAttribute("x"), i = t.getAttribute("y");
                    null != n && (this._textX = parseFloat(n)), null != i && (this._textY = parseFloat(i));
                    var r = t.getAttribute("dx") || "0", o = t.getAttribute("dy") || "0", a = new sL;
                    return op(e, a), sp(t, a, this._defsUsePending, !1, !0), this._textX += parseFloat(r), this._textY += parseFloat(o), a
                }, path: function (t, e) {
                    var n = t.getAttribute("d") || "", i = Ga(n);
                    return op(e, i), sp(t, i, this._defsUsePending, !1, !1), i.silent = !0, i
                }
            }
        }(), t
    }(), ZE = {
        lineargradient: function (t) {
            var e = parseInt(t.getAttribute("x1") || "0", 10), n = parseInt(t.getAttribute("y1") || "0", 10),
                i = parseInt(t.getAttribute("x2") || "10", 10), r = parseInt(t.getAttribute("y2") || "0", 10),
                o = new uO(e, n, i, r);
            return ip(t, o), rp(t, o), o
        }, radialgradient: function (t) {
            var e = parseInt(t.getAttribute("cx") || "0", 10), n = parseInt(t.getAttribute("cy") || "0", 10),
                i = parseInt(t.getAttribute("r") || "0", 10), r = new hO(e, n, i);
            return ip(t, r), rp(t, r), r
        }
    }, UE = /^url\(\s*#(.*?)\)/, jE = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, qE = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g, KE = Math.PI / 180, $E = /([^\s:;]+)\s*:\s*([^:;]+)/g, JE = 1e-8, QE = [], tN = function () {
        function t(t) {
            this.name = t
        }

        return t.prototype.getCenter = function () {
        }, t
    }(), eN = function (t) {
        function n(e, n, i) {
            var r = t.call(this, e) || this;
            if (r.type = "geoJSON", r.geometries = n, i) i = [i[0], i[1]]; else {
                var o = r.getBoundingRect();
                i = [o.x + o.width / 2, o.y + o.height / 2]
            }
            return r._center = i, r
        }

        return e(n, t), n.prototype.getBoundingRect = function () {
            var t = this._rect;
            if (t) return t;
            for (var e = Number.MAX_VALUE, n = [e, e], i = [-e, -e], r = [], o = [], a = this.geometries, s = 0; s < a.length; s++) if ("polygon" === a[s].type) {
                var l = a[s].exterior;
                ao(l, r, o), ye(n, n, r), ve(i, i, o)
            }
            return 0 === s && (n[0] = n[1] = i[0] = i[1] = 0), this._rect = new $D(n[0], n[1], i[0] - n[0], i[1] - n[1])
        }, n.prototype.contain = function (t) {
            var e = this.getBoundingRect(), n = this.geometries;
            if (!e.contain(t[0], t[1])) return !1;
            t:for (var i = 0, r = n.length; r > i; i++) if ("polygon" === n[i].type) {
                var o = n[i].exterior, a = n[i].interiors;
                if (mp(o, t[0], t[1])) {
                    for (var s = 0; s < (a ? a.length : 0); s++) if (mp(a[s], t[0], t[1])) continue t;
                    return !0
                }
            }
            return !1
        }, n.prototype.transformTo = function (t, e, n, i) {
            var r = this.getBoundingRect(), o = r.width / r.height;
            n ? i || (i = n / o) : n = o * i;
            for (var a = new $D(t, e, n, i), s = r.calculateTransform(a), l = this.geometries, u = 0; u < l.length; u++) if ("polygon" === l[u].type) {
                for (var h = l[u].exterior, c = l[u].interiors, p = 0; p < h.length; p++) ge(h[p], h[p], s);
                for (var d = 0; d < (c ? c.length : 0); d++) for (var p = 0; p < c[d].length; p++) ge(c[d][p], c[d][p], s)
            }
            r = this._rect, r.copy(a), this._center = [r.x + r.width / 2, r.y + r.height / 2]
        }, n.prototype.cloneShallow = function (t) {
            null == t && (t = this.name);
            var e = new n(t, this.geometries, this._center);
            return e._rect = this._rect, e.transformTo = null, e
        }, n.prototype.getCenter = function () {
            return this._center
        }, n.prototype.setCenter = function (t) {
            this._center = t
        }, n
    }(tN), nN = function (t) {
        function n(e, n) {
            var i = t.call(this, e) || this;
            return i.type = "geoSVG", i._elOnlyForCalculate = n, i
        }

        return e(n, t), n.prototype.getCenter = function () {
            var t = this._center;
            return t || (t = this._center = this._calculateCenter()), t
        }, n.prototype._calculateCenter = function () {
            for (var t = this._elOnlyForCalculate, e = t.getBoundingRect(), n = [e.x + e.width / 2, e.y + e.height / 2], i = Hn(QE), r = t; r && !r.isGeoSVGGraphicRoot;) Xn(i, r.getLocalTransform(), i), r = r.parent;
            return jn(i, i), ge(n, n, i), n
        }, n
    }(tN), iN = Z(["rect", "circle", "line", "ellipse", "polygon", "polyline", "path", "text", "tspan", "g"]), rN = function () {
        function t(t, e) {
            this.type = "geoSVG", this._usedGraphicMap = Z(), this._freedGraphics = [], this._mapName = t, this._parsedXML = np(e)
        }

        return t.prototype.load = function () {
            var t = this._firstGraphic;
            if (!t) {
                t = this._firstGraphic = this._buildGraphic(this._parsedXML), this._freedGraphics.push(t), this._boundingRect = this._firstGraphic.boundingRect.clone();
                var e = _p(t.named), n = e.regions, i = e.regionsMap;
                this._regions = n, this._regionsMap = i
            }
            return {boundingRect: this._boundingRect, regions: this._regions, regionsMap: this._regionsMap}
        }, t.prototype._buildGraphic = function (t) {
            var e, n;
            try {
                e = t && yp(t, {ignoreViewBox: !0, ignoreRootClip: !0}) || {}, n = e.root, H(null != n)
            } catch (i) {
                throw new Error("Invalid svg format\n" + i.message)
            }
            var r = new sL;
            r.add(n), r.isGeoSVGGraphicRoot = !0;
            var o = e.width, a = e.height, s = e.viewBoxRect, l = this._boundingRect;
            if (!l) {
                var u = void 0, h = void 0, c = void 0, p = void 0;
                if (null != o ? (u = 0, c = o) : s && (u = s.x, c = s.width), null != a ? (h = 0, p = a) : s && (h = s.y, p = s.height), null == u || null == h) {
                    var d = n.getBoundingRect();
                    null == u && (u = d.x, c = d.width), null == h && (h = d.y, p = d.height)
                }
                l = this._boundingRect = new $D(u, h, c, p)
            }
            if (s) {
                var f = gp(s, l);
                n.scaleX = n.scaleY = f.scale, n.x = f.x, n.y = f.y
            }
            r.setClipPath(new Uk({shape: l.plain()}));
            var g = [];
            return y(e.named, function (t) {
                null != iN.get(t.svgNodeTagLower) && (g.push(t), xp(t.el))
            }), {root: r, boundingRect: l, named: g}
        }, t.prototype.useGraphic = function (t) {
            var e = this._usedGraphicMap, n = e.get(t);
            return n ? n : (n = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML), e.set(t, n), n)
        }, t.prototype.freeGraphic = function (t) {
            var e = this._usedGraphicMap, n = e.get(t);
            n && (e.removeKey(t), this._freedGraphics.push(n))
        }, t
    }(), oN = [126, 25], aN = "南海诸岛", sN = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, .7], [52, .7], [56, 7.7], [59, .7], [64, .7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]], lN = 0; lN < sN.length; lN++) for (var uN = 0; uN < sN[lN].length; uN++) sN[lN][uN][0] /= 10.5, sN[lN][uN][1] /= -14, sN[lN][uN][0] += oN[0], sN[lN][uN][1] += oN[1];
    var hN = {"南海诸岛": [32, 80], "广东": [0, -10], "香港": [10, 5], "澳门": [-10, 10], "天津": [5, 5]},
        cN = {Russia: [100, 60], "United States": [-99, 38], "United States of America": [-99, 38]},
        pN = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]],
        dN = "name", fN = function () {
            function t(t, e, n) {
                this.type = "geoJSON", this._parsedMap = Z(), this._mapName = t, this._specialAreas = n, this._geoJSON = Dp(e)
            }

            return t.prototype.load = function (t, e) {
                e = e || dN;
                var n = this._parsedMap.get(e);
                if (!n) {
                    var i = this._parseToRegions(e);
                    n = this._parsedMap.set(e, {regions: i, boundingRect: Ap(i)})
                }
                var r = Z(), o = [];
                return y(n.regions, function (e) {
                    var n = e.name;
                    t && t.hasOwnProperty(n) && (e = e.cloneShallow(n = t[n])), o.push(e), r.set(n, e)
                }), {regions: o, boundingRect: n.boundingRect || new $D(0, 0, 0, 0), regionsMap: r}
            }, t.prototype._parseToRegions = function (t) {
                var e, n = this._mapName, i = this._geoJSON;
                try {
                    e = i ? Sp(i, t) : []
                } catch (r) {
                    throw new Error("Invalid geoJson format\n" + r.message)
                }
                return Mp(n, e), y(e, function (t) {
                    var e = t.name;
                    Ip(n, t), Tp(n, t), Cp(n, t);
                    var i = this._specialAreas && this._specialAreas[e];
                    i && t.transformTo(i.left, i.top, i.width, i.height)
                }, this), e
            }, t.prototype.getMapForUser = function () {
                return {geoJson: this._geoJSON, geoJSON: this._geoJSON, specialAreas: this._specialAreas}
            }, t
        }(), gN = Z(), yN = {
            registerMap: function (t, e, n) {
                if (e.svg) {
                    var i = new rN(t, e.svg);
                    gN.set(t, i)
                } else {
                    var r = e.geoJson || e.geoJSON;
                    r && !e.features ? n = e.specialAreas : r = e;
                    var i = new fN(t, r, n);
                    gN.set(t, i)
                }
            }, getGeoResource: function (t) {
                return gN.get(t)
            }, getMapForUser: function (t) {
                var e = gN.get(t);
                return e && "geoJSON" === e.type && e.getMapForUser()
            }, load: function (t, e, n) {
                var i = gN.get(t);
                if (i) return i.load(e, n)
            }
        }, vN = H, mN = y, xN = I, _N = D, bN = p, wN = "undefined" != typeof window, SN = "5.1.2", MN = {zrender: "5.1.1"},
        IN = 1, TN = 800, CN = 900, AN = 1e3, DN = 2e3, LN = 5e3, kN = 1e3, PN = 1100, ON = 2e3, RN = 3e3, zN = 4e3,
        EN = 4500, NN = 4600, BN = 5e3, VN = 6e3, FN = 7e3, GN = {
            PROCESSOR: {FILTER: AN, SERIES_FILTER: TN, STATISTIC: LN},
            VISUAL: {
                LAYOUT: kN,
                PROGRESSIVE_LAYOUT: PN,
                GLOBAL: ON,
                CHART: RN,
                POST_CHART_LAYOUT: NN,
                COMPONENT: zN,
                BRUSH: BN,
                CHART_ITEM: EN,
                ARIA: VN,
                DECAL: FN
            }
        }, HN = "__flagInMainProcess", WN = "__optionUpdated", XN = "__needsUpdateStatus", YN = /^[a-zA-Z0-9_]+$/,
        ZN = "__connectUpdateStatus", UN = 0, jN = 1, qN = 2, KN = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n
        }(LA), $N = KN.prototype;
    $N.on = kp("on"), $N.off = kp("off");
    var JN, QN, tB, eB, nB, iB, rB, oB, aB, sB, lB, uB, hB, cB, pB, dB, fB, gB, yB, vB, mB, xB = function (t) {
        function n(e, n, i) {
            function r(t, e) {
                return t.__prio - e.__prio
            }

            var o = t.call(this, new tE) || this;
            o._chartsViews = [], o._chartsMap = {}, o._componentsViews = [], o._componentsMap = {}, o._pendingActions = [], i = i || {}, "string" == typeof n && (n = DB[n]), o._dom = e;
            var a = "canvas", l = !1, u = o._zr = di(e, {
                renderer: i.renderer || a,
                devicePixelRatio: i.devicePixelRatio,
                width: i.width,
                height: i.height,
                useDirtyRect: null == i.useDirtyRect ? l : i.useDirtyRect
            });
            o._throttledZrFlush = Ph(xA(u.flush, u), 17), n = s(n), n && Mu(n, !0), o._theme = n, o._locale = Zs(i.locale || jO), o._coordSysMgr = new UR;
            var h = o._api = fB(o);
            return Ze(AB, r), Ze(MB, r), o._scheduler = new Wz(o, h, MB, AB), o._messageCenter = new KN, o._labelManager = new xE, o._initEvents(), o.resize = xA(o.resize, o), u.animation.on("frame", o._onframe, o), sB(u, o), lB(u, o), X(o), o
        }

        return e(n, t), n.prototype._onframe = function () {
            if (!this._disposed) {
                mB(this);
                var t = this._scheduler;
                if (this[WN]) {
                    var e = this[WN].silent;
                    this[HN] = !0, JN(this), eB.update.call(this), this._zr.flush(), this[HN] = !1, this[WN] = !1, oB.call(this, e), aB.call(this, e)
                } else if (t.unfinished) {
                    var n = IN, i = this._model, r = this._api;
                    t.unfinished = !1;
                    do {
                        var o = +new Date;
                        t.performSeriesTasks(i), t.performDataProcessorTasks(i), iB(this, i), t.performVisualTasks(i), pB(this, this._model, r, "remain"), n -= +new Date - o
                    } while (n > 0 && t.unfinished);
                    t.unfinished || this._zr.flush()
                }
            }
        }, n.prototype.getDom = function () {
            return this._dom
        }, n.prototype.getId = function () {
            return this.id
        }, n.prototype.getZr = function () {
            return this._zr
        }, n.prototype.setOption = function (t, e, n) {
            if (!this._disposed) {
                var i, r, o;
                if (_N(e) && (n = e.lazyUpdate, i = e.silent, r = e.replaceMerge, o = e.transition, e = e.notMerge), this[HN] = !0, !this._model || e) {
                    var a = new qR(this._api), s = this._theme, l = this._model = new BR;
                    l.scheduler = this._scheduler, l.init(null, null, null, s, this._locale, a)
                }
                this._model.setOption(t, {replaceMerge: r}, IB), yB(this, o), n ? (this[WN] = {silent: i}, this[HN] = !1, this.getZr().wakeUp()) : (JN(this), eB.update.call(this), this._zr.flush(), this[WN] = !1, this[HN] = !1, oB.call(this, i), aB.call(this, i))
            }
        }, n.prototype.setTheme = function () {
            console.error("echartsAll#setTheme() is DEPRECATED in echartsAll 3.0")
        }, n.prototype.getModel = function () {
            return this._model
        }, n.prototype.getOption = function () {
            return this._model && this._model.getOption()
        }, n.prototype.getWidth = function () {
            return this._zr.getWidth()
        }, n.prototype.getHeight = function () {
            return this._zr.getHeight()
        }, n.prototype.getDevicePixelRatio = function () {
            return this._zr.painter.dpr || wN && window.devicePixelRatio || 1
        }, n.prototype.getRenderedCanvas = function (t) {
            return oA.canvasSupported ? (t = t || {}, this._zr.painter.getRenderedCanvas({
                backgroundColor: t.backgroundColor || this._model.get("backgroundColor"),
                pixelRatio: t.pixelRatio || this.getDevicePixelRatio()
            })) : void 0
        }, n.prototype.getSvgDataURL = function () {
            if (oA.svgSupported) {
                var t = this._zr, e = t.storage.getDisplayList();
                return y(e, function (t) {
                    t.stopAnimation(null, !0)
                }), t.painter.toDataURL()
            }
        }, n.prototype.getDataURL = function (t) {
            if (!this._disposed) {
                t = t || {};
                var e = t.excludeComponents, n = this._model, i = [], r = this;
                mN(e, function (t) {
                    n.eachComponent({mainType: t}, function (t) {
                        var e = r._componentsMap[t.__viewId];
                        e.group.ignore || (i.push(e), e.group.ignore = !0)
                    })
                });
                var o = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
                return mN(i, function (t) {
                    t.group.ignore = !1
                }), o
            }
        }, n.prototype.getConnectedDataURL = function (t) {
            if (!this._disposed && oA.canvasSupported) {
                var e = "svg" === t.type, n = this.group, i = Math.min, r = Math.max, o = 1 / 0;
                if (PB[n]) {
                    var a = o, l = o, u = -o, h = -o, c = [], p = t && t.pixelRatio || this.getDevicePixelRatio();
                    y(kB, function (o) {
                        if (o.group === n) {
                            var p = e ? o.getZr().painter.getSvgDom().innerHTML : o.getRenderedCanvas(s(t)),
                                d = o.getDom().getBoundingClientRect();
                            a = i(d.left, a), l = i(d.top, l), u = r(d.right, u), h = r(d.bottom, h), c.push({
                                dom: p,
                                left: d.left,
                                top: d.top
                            })
                        }
                    }), a *= p, l *= p, u *= p, h *= p;
                    var d = u - a, f = h - l, g = mA(), v = di(g, {renderer: e ? "svg" : "canvas"});
                    if (v.resize({width: d, height: f}), e) {
                        var m = "";
                        return mN(c, function (t) {
                            var e = t.left - a, n = t.top - l;
                            m += '<g transform="translate(' + e + "," + n + ')">' + t.dom + "</g>"
                        }), v.painter.getSvgRoot().innerHTML = m, t.connectedBackgroundColor && v.painter.setBackgroundColor(t.connectedBackgroundColor), v.refreshImmediately(), v.painter.toDataURL()
                    }
                    return t.connectedBackgroundColor && v.add(new Uk({
                        shape: {x: 0, y: 0, width: d, height: f},
                        style: {fill: t.connectedBackgroundColor}
                    })), mN(c, function (t) {
                        var e = new Wk({style: {x: t.left * p - a, y: t.top * p - l, image: t.dom}});
                        v.add(e)
                    }), v.refreshImmediately(), g.toDataURL("image/" + (t && t.type || "png"))
                }
                return this.getDataURL(t)
            }
        }, n.prototype.convertToPixel = function (t, e) {
            return nB(this, "convertToPixel", t, e)
        }, n.prototype.convertFromPixel = function (t, e) {
            return nB(this, "convertFromPixel", t, e)
        }, n.prototype.containPixel = function (t, e) {
            if (!this._disposed) {
                var n, i = this._model, r = hr(i, t);
                return y(r, function (t, i) {
                    i.indexOf("Models") >= 0 && y(t, function (t) {
                        var r = t.coordinateSystem;
                        if (r && r.containPoint) n = n || !!r.containPoint(e); else if ("seriesModels" === i) {
                            var o = this._chartsMap[t.__viewId];
                            o && o.containPoint && (n = n || o.containPoint(e, t))
                        }
                    }, this)
                }, this), !!n
            }
        }, n.prototype.getVisual = function (t, e) {
            var n = this._model, i = hr(n, t, {defaultMainType: "series"}), r = i.seriesModel, o = r.getData(),
                a = i.hasOwnProperty("dataIndexInside") ? i.dataIndexInside : i.hasOwnProperty("dataIndex") ? o.indexOfRawIndex(i.dataIndex) : null;
            return null != a ? jh(o, a, e) : qh(o, e)
        }, n.prototype.getViewOfComponentModel = function (t) {
            return this._componentsMap[t.__viewId]
        }, n.prototype.getViewOfSeriesModel = function (t) {
            return this._chartsMap[t.__viewId]
        }, n.prototype._initEvents = function () {
            var t = this;
            mN(bB, function (e) {
                var n = function (n) {
                    var i, r = t.getModel(), o = n.target, a = "globalout" === e;
                    if (a ? i = {} : o && bc(o, function (t) {
                        var e = tP(t);
                        if (e && null != e.dataIndex) {
                            var n = e.dataModel || r.getSeriesByIndex(e.seriesIndex);
                            return i = n && n.getDataParams(e.dataIndex, e.dataType) || {}, !0
                        }
                        return e.eventData ? (i = h({}, e.eventData), !0) : void 0
                    }, !0), i) {
                        var s = i.componentType, l = i.componentIndex;
                        ("markLine" === s || "markPoint" === s || "markArea" === s) && (s = "series", l = i.seriesIndex);
                        var u = s && null != l && r.getComponent(s, l),
                            c = u && t["series" === u.mainType ? "_chartsMap" : "_componentsMap"][u.__viewId];
                        i.event = n, i.type = e, t._$eventProcessor.eventInfo = {
                            targetEl: o,
                            packedEvent: i,
                            model: u,
                            view: c
                        }, t.trigger(e, i)
                    }
                };
                n.zrEventfulCallAtLast = !0, t._zr.on(e, n, t)
            }), mN(SB, function (e, n) {
                t._messageCenter.on(n, function (t) {
                    this.trigger(n, t)
                }, t)
            }), mN(["selectchanged"], function (e) {
                t._messageCenter.on(e, function (t) {
                    this.trigger(e, t)
                }, t)
            }), _c(this._messageCenter, this, this._api)
        }, n.prototype.isDisposed = function () {
            return this._disposed
        }, n.prototype.clear = function () {
            this._disposed || this.setOption({series: []}, !0)
        }, n.prototype.dispose = function () {
            if (!this._disposed) {
                this._disposed = !0, dr(this.getDom(), zB, "");
                var t = this._api, e = this._model;
                mN(this._componentsViews, function (n) {
                    n.dispose(e, t)
                }), mN(this._chartsViews, function (n) {
                    n.dispose(e, t)
                }), this._zr.dispose(), delete kB[this.id]
            }
        }, n.prototype.resize = function (t) {
            if (!this._disposed) {
                this._zr.resize(t);
                var e = this._model;
                if (this._loadingFX && this._loadingFX.resize(), e) {
                    var n = e.resetOption("media"), i = t && t.silent;
                    this[WN] && (null == i && (i = this[WN].silent), n = !0, this[WN] = !1), this[HN] = !0, n && JN(this), eB.update.call(this, {
                        type: "resize",
                        animation: h({duration: 0}, t && t.animation)
                    }), this[HN] = !1, oB.call(this, i), aB.call(this, i)
                }
            }
        }, n.prototype.showLoading = function (t, e) {
            if (!this._disposed && (_N(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), LB[t])) {
                var n = LB[t](this._api, e), i = this._zr;
                this._loadingFX = n, i.add(n)
            }
        }, n.prototype.hideLoading = function () {
            this._disposed || (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null)
        }, n.prototype.makeActionFromEvent = function (t) {
            var e = h({}, t);
            return e.type = SB[t.type], e
        }, n.prototype.dispatchAction = function (t, e) {
            if (!this._disposed && (_N(e) || (e = {silent: !!e}), wB[t.type] && this._model)) {
                if (this[HN]) return void this._pendingActions.push(t);
                var n = e.silent;
                rB.call(this, t, n);
                var i = e.flush;
                i ? this._zr.flush() : i !== !1 && oA.browser.weChat && this._throttledZrFlush(), oB.call(this, n), aB.call(this, n)
            }
        }, n.prototype.updateLabelLayout = function () {
            var t = this._labelManager;
            t.updateLayoutConfig(this._api), t.layout(this._api), t.processLabelsOverall()
        }, n.prototype.appendData = function (t) {
            if (!this._disposed) {
                var e = t.seriesIndex, n = this.getModel(), i = n.getSeriesByIndex(e);
                i.appendData(t), this._scheduler.unfinished = !0, this.getZr().wakeUp()
            }
        }, n.internalField = function () {
            function t(t) {
                for (var e = [], n = t.currentStates, i = 0; i < n.length; i++) {
                    var r = n[i];
                    "emphasis" !== r && "blur" !== r && "select" !== r && e.push(r)
                }
                t.selected && t.states.select && e.push("select"), t.hoverState === aP && t.states.emphasis ? e.push("emphasis") : t.hoverState === oP && t.states.blur && e.push("blur"), t.useStates(e)
            }

            function n(t, e) {
                var n = t._zr, i = n.storage, r = 0;
                i.traverse(function (t) {
                    t.isGroup || r++
                }), r > e.get("hoverLayerThreshold") && !oA.node && !oA.worker && e.eachSeries(function (e) {
                    if (!e.preventUsingHoverLayer) {
                        var n = t._chartsMap[e.__viewId];
                        n.__alive && n.group.traverse(function (t) {
                            t.states.emphasis && (t.states.emphasis.hoverLayer = !0)
                        })
                    }
                })
            }

            function i(t, e) {
                var n = t.get("blendMode") || null;
                e.group.traverse(function (t) {
                    t.isGroup || (t.style.blend = n), t.eachPendingDisplayable && t.eachPendingDisplayable(function (t) {
                        t.style.blend = n
                    })
                })
            }

            function r(t, e) {
                t.preventAutoZ || o(e.group, t.get("z") || 0, t.get("zlevel") || 0, -1 / 0)
            }

            function o(t, e, n, i) {
                var r = t.getTextContent(), a = t.getTextGuideLine(), s = t.isGroup;
                if (s) for (var l = t.childrenRef(), u = 0; u < l.length; u++) i = Math.max(o(l[u], e, n, i), i); else t.z = e, t.zlevel = n, i = Math.max(t.z2, i);
                if (r && (r.z = e, r.zlevel = n, isFinite(i) && (r.z2 = i + 2)), a) {
                    var h = t.textGuideLineConfig;
                    a.z = e, a.zlevel = n, isFinite(i) && (a.z2 = i + (h && h.showAbove ? 1 : -1))
                }
                return i
            }

            function a(t, e) {
                e.group.traverse(function (t) {
                    if (!fs(t)) {
                        var e = t.getTextContent(), n = t.getTextGuideLine();
                        t.stateTransition && (t.stateTransition = null), e && e.stateTransition && (e.stateTransition = null), n && n.stateTransition && (n.stateTransition = null), t.hasState() ? (t.prevStates = t.currentStates, t.clearStates()) : t.prevStates && (t.prevStates = null)
                    }
                })
            }

            function s(e, n) {
                var i = e.getModel("stateAnimation"), r = e.isAnimationEnabled(), o = i.get("duration"),
                    a = o > 0 ? {duration: o, delay: i.get("delay"), easing: i.get("easing")} : null;
                n.group.traverse(function (e) {
                    if (e.states && e.states.emphasis) {
                        if (fs(e)) return;
                        if (e instanceof Bk && Pa(e), e.__dirty) {
                            var n = e.prevStates;
                            n && e.useStates(n)
                        }
                        if (r) {
                            e.stateTransition = a;
                            var i = e.getTextContent(), o = e.getTextGuideLine();
                            i && (i.stateTransition = a), o && (o.stateTransition = a)
                        }
                        e.__dirty && t(e)
                    }
                })
            }

            JN = function (t) {
                var e = t._scheduler;
                e.restorePipelines(t._model), e.prepareStageTasks(), QN(t, !0), QN(t, !1), e.plan()
            }, QN = function (t, e) {
                function n(t) {
                    var n = t.__requireNewView;
                    t.__requireNewView = !1;
                    var u = "_ec_" + t.id + "_" + t.type, h = !n && a[u];
                    if (!h) {
                        var c = mr(t.type), p = e ? Tz.getClass(c.main, c.sub) : Dz.getClass(c.sub);
                        h = new p, h.init(i, l), a[u] = h, o.push(h), s.add(h.group)
                    }
                    t.__viewId = h.__id = u, h.__alive = !0, h.__model = t, h.group.__ecComponentInfo = {
                        mainType: t.mainType,
                        index: t.componentIndex
                    }, !e && r.prepareView(h, t, i, l)
                }

                for (var i = t._model, r = t._scheduler, o = e ? t._componentsViews : t._chartsViews, a = e ? t._componentsMap : t._chartsMap, s = t._zr, l = t._api, u = 0; u < o.length; u++) o[u].__alive = !1;
                e ? i.eachComponent(function (t, e) {
                    "series" !== t && n(e)
                }) : i.eachSeries(n);
                for (var u = 0; u < o.length;) {
                    var h = o[u];
                    h.__alive ? u++ : (!e && h.renderTask.dispose(), s.remove(h.group), h.dispose(i, l), o.splice(u, 1), a[h.__id] === h && delete a[h.__id], h.__id = h.group.__ecComponentInfo = null)
                }
            }, tB = function (t, e, n, i, r) {
                function o(i) {
                    i && i.__alive && i[e] && i[e](i.__model, a, t._api, n)
                }

                var a = t._model;
                if (a.setUpdatePayload(n), !i) return void mN([].concat(t._componentsViews).concat(t._chartsViews), o);
                var s = {};
                s[i + "Id"] = n[i + "Id"], s[i + "Index"] = n[i + "Index"], s[i + "Name"] = n[i + "Name"];
                var l = {mainType: i, query: s};
                r && (l.subType = r);
                var u, h = n.excludeSeriesId;
                null != h && (u = Z(), mN(Hi(h), function (t) {
                    var e = er(t, null);
                    null != e && u.set(e, !0)
                })), ka(n) && da(t._api), a && a.eachComponent(l, function (e) {
                    if (!u || null == u.get(e.id)) {
                        if (ka(n)) if (e instanceof Iz) n.type !== cP || n.notBlur || ya(e, n, t._api); else {
                            var r = va(e.mainType, e.componentIndex, n.name, t._api), a = r.focusSelf,
                                s = r.dispatchers;
                            n.type === cP && a && !n.notBlur && ga(e.mainType, e.componentIndex, t._api), s && mN(s, function (t) {
                                n.type === cP ? aa(t) : sa(t)
                            })
                        } else La(n) && e instanceof Iz && (_a(e, n, t._api), ba(e), vB(t));
                        o(t["series" === i ? "_chartsMap" : "_componentsMap"][e.__viewId])
                    }
                }, t)
            }, eB = {
                prepareAndUpdate: function (t) {
                    JN(this), eB.update.call(this, t)
                }, update: function (t) {
                    var e = this._model, n = this._api, i = this._zr, r = this._coordSysMgr, o = this._scheduler;
                    if (e) {
                        e.setUpdatePayload(t), o.restoreData(e, t), o.performSeriesTasks(e), r.create(e, n), o.performDataProcessorTasks(e, t), iB(this, e), r.update(e, n), uB(e), o.performVisualTasks(e, t), hB(this, e, n, t);
                        var a = e.get("backgroundColor") || "transparent", s = e.get("darkMode");
                        if (oA.canvasSupported) i.setBackgroundColor(a), null != s && "auto" !== s && i.setDarkMode(s); else {
                            var l = an(a);
                            a = gn(l, "rgb"), 0 === l[3] && (a = "transparent")
                        }
                        dB(e, n)
                    }
                }, updateTransform: function (t) {
                    var e = this, n = this._model, i = this._api;
                    if (n) {
                        n.setUpdatePayload(t);
                        var r = [];
                        n.eachComponent(function (o, a) {
                            if ("series" !== o) {
                                var s = e.getViewOfComponentModel(a);
                                if (s && s.__alive) if (s.updateTransform) {
                                    var l = s.updateTransform(a, n, i, t);
                                    l && l.update && r.push(s)
                                } else r.push(s)
                            }
                        });
                        var o = Z();
                        n.eachSeries(function (r) {
                            var a = e._chartsMap[r.__viewId];
                            if (a.updateTransform) {
                                var s = a.updateTransform(r, n, i, t);
                                s && s.update && o.set(r.uid, 1)
                            } else o.set(r.uid, 1)
                        }), uB(n), this._scheduler.performVisualTasks(n, t, {
                            setDirty: !0,
                            dirtyMap: o
                        }), pB(this, n, i, t, o), dB(n, this._api)
                    }
                }, updateView: function (t) {
                    var e = this._model;
                    e && (e.setUpdatePayload(t), Dz.markUpdateMethod(t, "updateView"), uB(e), this._scheduler.performVisualTasks(e, t, {setDirty: !0}), hB(this, this._model, this._api, t), dB(e, this._api))
                }, updateVisual: function (t) {
                    var e = this, n = this._model;
                    n && (n.setUpdatePayload(t), n.eachSeries(function (t) {
                        t.getData().clearAllVisual()
                    }), Dz.markUpdateMethod(t, "updateVisual"), uB(n), this._scheduler.performVisualTasks(n, t, {
                        visualType: "visual",
                        setDirty: !0
                    }), n.eachComponent(function (i, r) {
                        if ("series" !== i) {
                            var o = e.getViewOfComponentModel(r);
                            o && o.__alive && o.updateVisual(r, n, e._api, t)
                        }
                    }), n.eachSeries(function (i) {
                        var r = e._chartsMap[i.__viewId];
                        r.updateVisual(i, n, e._api, t)
                    }), dB(n, this._api))
                }, updateLayout: function (t) {
                    eB.update.call(this, t)
                }
            }, nB = function (t, e, n, i) {
                if (!t._disposed) for (var r, o = t._model, a = t._coordSysMgr.getCoordinateSystems(), s = hr(o, n), l = 0; l < a.length; l++) {
                    var u = a[l];
                    if (u[e] && null != (r = u[e](o, s, i))) return r
                }
            }, iB = function (t, e) {
                var n = t._chartsMap, i = t._scheduler;
                e.eachSeries(function (t) {
                    i.updateStreamModes(t, n[t.__viewId])
                })
            }, rB = function (t, e) {
                var n = this, i = this.getModel(), r = t.type, o = t.escapeConnect, a = wB[r], s = a.actionInfo,
                    l = (s.update || "update").split(":"), u = l.pop(), p = null != l[0] && mr(l[0]);
                this[HN] = !0;
                var d = [t], f = !1;
                t.batch && (f = !0, d = v(t.batch, function (e) {
                    return e = c(h({}, e), t), e.batch = null, e
                }));
                var g, y = [], m = La(t), x = ka(t);
                if (mN(d, function (e) {
                    if (g = a.action(e, n._model, n._api), g = g || h({}, e), g.type = s.event || g.type, y.push(g), x) {
                        var i = cr(t), r = i.queryOptionMap, o = i.mainTypeSpecified, l = o ? r.keys()[0] : "series";
                        tB(n, u, e, l), vB(n)
                    } else m ? (tB(n, u, e, "series"), vB(n)) : p && tB(n, u, e, p.main, p.sub)
                }), "none" === u || x || m || p || (this[WN] ? (JN(this), eB.update.call(this, t), this[WN] = !1) : eB[u].call(this, t)), g = f ? {
                    type: s.event || r,
                    escapeConnect: o,
                    batch: y
                } : y[0], this[HN] = !1, !e) {
                    var _ = this._messageCenter;
                    if (_.trigger(g.type, g), m) {
                        var b = {
                            type: "selectchanged",
                            escapeConnect: o,
                            selected: wa(i),
                            isFromClick: t.isFromClick || !1,
                            fromAction: t.type,
                            fromActionPayload: t
                        };
                        _.trigger(b.type, b)
                    }
                }
            }, oB = function (t) {
                for (var e = this._pendingActions; e.length;) {
                    var n = e.shift();
                    rB.call(this, n, t)
                }
            }, aB = function (t) {
                !t && this.trigger("updated")
            }, sB = function (t, e) {
                t.on("rendered", function (n) {
                    e.trigger("rendered", n), !t.animation.isFinished() || e[WN] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished")
                })
            }, lB = function (t, e) {
                t.on("mouseover", function (t) {
                    var n = t.target, i = bc(n, Ca);
                    i && (ma(i, t, e._api), vB(e))
                }).on("mouseout", function (t) {
                    var n = t.target, i = bc(n, Ca);
                    i && (xa(i, t, e._api), vB(e))
                }).on("click", function (t) {
                    var n = t.target, i = bc(n, function (t) {
                        return null != tP(t).dataIndex
                    }, !0);
                    if (i) {
                        var r = i.selected ? "unselect" : "select", o = tP(i);
                        e._api.dispatchAction({
                            type: r,
                            dataType: o.dataType,
                            dataIndexInside: o.dataIndex,
                            seriesIndex: o.seriesIndex,
                            isFromClick: !0
                        })
                    }
                })
            }, uB = function (t) {
                t.clearColorPalette(), t.eachSeries(function (t) {
                    t.clearColorPalette()
                })
            }, hB = function (t, e, n, i) {
                cB(t, e, n, i), mN(t._chartsViews, function (t) {
                    t.__alive = !1
                }), pB(t, e, n, i), mN(t._chartsViews, function (t) {
                    t.__alive || t.remove(e, n)
                })
            }, cB = function (t, e, n, i, o) {
                mN(o || t._componentsViews, function (t) {
                    var o = t.__model;
                    a(o, t), t.render(o, e, n, i), r(o, t), s(o, t)
                })
            }, pB = function (t, e, o, l, u) {
                var h = t._scheduler, c = t._labelManager;
                c.clearLabels();
                var p = !1;
                e.eachSeries(function (e) {
                    var n = t._chartsMap[e.__viewId];
                    n.__alive = !0;
                    var r = n.renderTask;
                    h.updatePayload(r, l), a(e, n), u && u.get(e.uid) && r.dirty(), r.perform(h.getPerformArgs(r)) && (p = !0), e.__transientTransitionOpt = null, n.group.silent = !!e.get("silent"), i(e, n), ba(e), c.addLabelsOfSeries(n)
                }), h.unfinished = p || h.unfinished, c.updateLayoutConfig(o), c.layout(o), c.processLabelsOverall(), e.eachSeries(function (e) {
                    var n = t._chartsMap[e.__viewId];
                    r(e, n), s(e, n)
                }), n(t, e)
            }, dB = function (t, e) {
                mN(CB, function (n) {
                    n(t, e)
                })
            }, vB = function (t) {
                t[XN] = !0, t.getZr().wakeUp()
            }, mB = function (e) {
                e[XN] && (e.getZr().storage.traverse(function (e) {
                    fs(e) || t(e)
                }), e[XN] = !1)
            }, fB = function (t) {
                return new (function (n) {
                    function i() {
                        return null !== n && n.apply(this, arguments) || this
                    }

                    return e(i, n), i.prototype.getCoordinateSystems = function () {
                        return t._coordSysMgr.getCoordinateSystems()
                    }, i.prototype.getComponentByElement = function (e) {
                        for (; e;) {
                            var n = e.__ecComponentInfo;
                            if (null != n) return t._model.getComponent(n.mainType, n.index);
                            e = e.parent
                        }
                    }, i.prototype.enterEmphasis = function (e, n) {
                        aa(e, n), vB(t)
                    }, i.prototype.leaveEmphasis = function (e, n) {
                        sa(e, n), vB(t)
                    }, i.prototype.enterBlur = function (e) {
                        la(e), vB(t)
                    }, i.prototype.leaveBlur = function (e) {
                        ua(e), vB(t)
                    }, i.prototype.enterSelect = function (e) {
                        ha(e), vB(t)
                    }, i.prototype.leaveSelect = function (e) {
                        ca(e), vB(t)
                    }, i.prototype.getModel = function () {
                        return t.getModel()
                    }, i.prototype.getViewOfComponentModel = function (e) {
                        return t.getViewOfComponentModel(e)
                    }, i.prototype.getViewOfSeriesModel = function (e) {
                        return t.getViewOfSeriesModel(e)
                    }, i
                }(YR))(t)
            }, gB = function (t) {
                function e(t, e) {
                    for (var n = 0; n < t.length; n++) {
                        var i = t[n];
                        i[ZN] = e
                    }
                }

                mN(SB, function (n, i) {
                    t._messageCenter.on(i, function (n) {
                        if (PB[t.group] && t[ZN] !== UN) {
                            if (n && n.escapeConnect) return;
                            var i = t.makeActionFromEvent(n), r = [];
                            mN(kB, function (e) {
                                e !== t && e.group === t.group && r.push(e)
                            }), e(r, UN), mN(r, function (t) {
                                t[ZN] !== jN && t.dispatchAction(i)
                            }), e(r, qN)
                        }
                    })
                })
            }, yB = function (t, e) {
                var n = t._model;
                y(Hi(e), function (t) {
                    var e, i = t.from, r = t.to;
                    null == r && Gi(e);
                    var o = {includeMainTypes: ["series"], enableAll: !1, enableNone: !1}, a = i ? hr(n, i, o) : null,
                        s = hr(n, r, o), l = s.seriesModel;
                    null == l && (e = ""), a && a.seriesModel !== l && (e = ""), null != e && Gi(e), l.__transientTransitionOpt = {
                        from: i ? i.dimension : null,
                        to: r.dimension,
                        dividingMethod: t.dividingMethod
                    }
                })
            }
        }(), n
    }(LA), _B = xB.prototype;
    _B.on = Lp("on"), _B.off = Lp("off"), _B.one = function (t, e, n) {
        function i() {
            for (var n = [], o = 0; o < arguments.length; o++) n[o] = arguments[o];
            e && e.apply && e.apply(this, n), r.off(t, i)
        }

        var r = this;
        this.on.call(this, t, i, n)
    };
    var bB = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"],
        wB = {}, SB = {}, MB = [], IB = [], TB = [], CB = [], AB = [], DB = {}, LB = {}, kB = {}, PB = {},
        OB = +new Date - 0, RB = +new Date - 0, zB = "_echartsAll_instance_", EB = zp, NB = [], BB = Ku;
    jp(ON, Bz), jp(EN, Fz), jp(EN, Gz), jp(ON, eE), jp(EN, nE), jp(FN, ep), Fp(Mu), Gp(CN, Iu), Kp("default", Nh), Xp({
        type: cP,
        event: cP,
        update: cP
    }, K), Xp({type: pP, event: pP, update: pP}, K), Xp({type: dP, event: dP, update: dP}, K), Xp({
        type: fP,
        event: fP,
        update: fP
    }, K), Xp({type: gP, event: gP, update: gP}, K), Vp("light", jz), Vp("dark", Qz);
    var VB, FB, GB, HB, WB, XB, YB, ZB, UB, jB, qB, KB, $B, JB, QB = {}, tV = function () {
            function t(t, e, n, i, r, o) {
                this._old = t, this._new = e, this._oldKeyGetter = n || ed, this._newKeyGetter = i || ed, this.context = r, this._diffModeMultiple = "multiple" === o
            }

            return t.prototype.add = function (t) {
                return this._add = t, this
            }, t.prototype.update = function (t) {
                return this._update = t, this
            }, t.prototype.updateManyToOne = function (t) {
                return this._updateManyToOne = t, this
            }, t.prototype.updateOneToMany = function (t) {
                return this._updateOneToMany = t, this
            }, t.prototype.remove = function (t) {
                return this._remove = t, this
            }, t.prototype.execute = function () {
                this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"]()
            }, t.prototype._executeOneToOne = function () {
                var t = this._old, e = this._new, n = {}, i = new Array(t.length), r = new Array(e.length);
                this._initIndexMap(t, null, i, "_oldKeyGetter"), this._initIndexMap(e, n, r, "_newKeyGetter");
                for (var o = 0; o < t.length; o++) {
                    var a = i[o], s = n[a], l = td(s);
                    if (l > 1) {
                        var u = s.shift();
                        1 === s.length && (n[a] = s[0]), this._update && this._update(u, o)
                    } else 1 === l ? (n[a] = null, this._update && this._update(s, o)) : this._remove && this._remove(o)
                }
                this._performRestAdd(r, n)
            }, t.prototype._executeMultiple = function () {
                var t = this._old, e = this._new, n = {}, i = {}, r = [], o = [];
                this._initIndexMap(t, n, r, "_oldKeyGetter"), this._initIndexMap(e, i, o, "_newKeyGetter");
                for (var a = 0; a < r.length; a++) {
                    var s = r[a], l = n[s], u = i[s], h = td(l), c = td(u);
                    if (h > 1 && 1 === c) this._updateManyToOne && this._updateManyToOne(u, l), i[s] = null; else if (1 === h && c > 1) this._updateOneToMany && this._updateOneToMany(u, l), i[s] = null; else if (1 === h && 1 === c) this._update && this._update(u, l), i[s] = null; else if (h > 1) for (var p = 0; h > p; p++) this._remove && this._remove(l[p]); else this._remove && this._remove(l)
                }
                this._performRestAdd(o, i)
            }, t.prototype._performRestAdd = function (t, e) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n], r = e[i], o = td(r);
                    if (o > 1) for (var a = 0; o > a; a++) this._add && this._add(r[a]); else 1 === o && this._add && this._add(r);
                    e[i] = null
                }
            }, t.prototype._initIndexMap = function (t, e, n, i) {
                for (var r = this._diffModeMultiple, o = 0; o < t.length; o++) {
                    var a = "_ec_" + this[i](t[o], o);
                    if (r || (n[o] = a), e) {
                        var s = e[a], l = td(s);
                        0 === l ? (e[a] = o, r && n.push(a)) : 1 === l ? e[a] = [s, o] : s.push(o)
                    }
                }
            }, t
        }(), eV = function () {
            function t(t) {
                this.otherDims = {}, null != t && h(this, t)
            }

            return t
        }(), nV = Math.floor, iV = D, rV = v, oV = "undefined", aV = -1, sV = "e\x00\x00", lV = {
            "float": typeof Float64Array === oV ? Array : Float64Array,
            "int": typeof Int32Array === oV ? Array : Int32Array,
            ordinal: Array,
            number: Array,
            time: Array
        }, uV = typeof Uint32Array === oV ? Array : Uint32Array, hV = typeof Int32Array === oV ? Array : Int32Array,
        cV = typeof Uint16Array === oV ? Array : Uint16Array,
        pV = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"],
        dV = ["_extent", "_approximateExtent", "_rawExtent"], fV = function () {
            function t(t, e) {
                this.type = "list", this._count = 0, this._rawCount = 0, this._storage = {}, this._storageArr = [], this._nameList = [], this._idList = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this._itemLayouts = [], this._graphicEls = [], this._rawExtent = {}, this._extent = {}, this._approximateExtent = {}, this._calculationInfo = {}, this.hasItemOption = !0, this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "lttbDownSample", "map"], this.CHANGABLE_METHODS = ["filterSelf", "selectRange"], this.DOWNSAMPLE_METHODS = ["downSample", "lttbDownSample"], this.getRawIndex = WB, t = t || ["x", "y"];
                for (var n = {}, i = [], r = {}, o = 0; o < t.length; o++) {
                    var a = t[o], s = T(a) ? new eV({name: a}) : a instanceof eV ? a : new eV(a), l = s.name;
                    s.type = s.type || "float", s.coordDim || (s.coordDim = l, s.coordDimIndex = 0);
                    var u = s.otherDims = s.otherDims || {};
                    i.push(l), n[l] = s, s.index = o, s.createInvertedIndices && (r[l] = []), 0 === u.itemName && (this._nameDimIdx = o, this._nameOrdinalMeta = s.ordinalMeta), 0 === u.itemId && (this._idDimIdx = o, this._idOrdinalMeta = s.ordinalMeta)
                }
                this.dimensions = i, this._dimensionInfos = n, this.hostModel = e, this._dimensionsSummary = nd(this), this._invertedIndicesMap = r, this.userOutput = this._dimensionsSummary.userOutput
            }

            return t.prototype.getDimension = function (t) {
                return ("number" == typeof t || !isNaN(t) && !this._dimensionInfos.hasOwnProperty(t)) && (t = this.dimensions[t]), t
            }, t.prototype.getDimensionInfo = function (t) {
                return this._dimensionInfos[this.getDimension(t)]
            }, t.prototype.getDimensionsOnCoord = function () {
                return this._dimensionsSummary.dataDimsOnCoord.slice()
            }, t.prototype.mapDimension = function (t, e) {
                var n = this._dimensionsSummary;
                if (null == e) return n.encodeFirstDimNotExtra[t];
                var i = n.encode[t];
                return i ? i[e] : null
            }, t.prototype.mapDimensionsAll = function (t) {
                var e = this._dimensionsSummary, n = e.encode[t];
                return (n || []).slice()
            }, t.prototype.initData = function (t, e, n) {
                var i = Cu(t) || g(t), r = i ? new iz(t, this.dimensions.length) : t;
                this._rawData = r;
                var o = r.getSource().sourceFormat;
                this._storage = {}, this._indices = null, this._dontMakeIdFromName = null != this._idDimIdx || o === TR || !!r.fillStorage, this._nameList = (e || []).slice(), this._idList = [], this._nameRepeatCount = {}, n || (this.hasItemOption = !1), this.defaultDimValueGetter = VB[o], this._dimValueGetter = n = n || this.defaultDimValueGetter, this._dimValueGetterArrayRows = VB.arrayRows, this._rawExtent = {}, this._initDataFromProvider(0, r.count()), r.pure && (this.hasItemOption = !1)
            }, t.prototype.getProvider = function () {
                return this._rawData
            }, t.prototype.appendData = function (t) {
                var e = this._rawData, n = this.count();
                e.appendData(t);
                var i = e.count();
                e.persistent || (i += n), this._initDataFromProvider(n, i, !0)
            }, t.prototype.appendValues = function (t, e) {
                for (var n = this._storage, i = this.dimensions, r = i.length, o = this._rawExtent, a = this.count(), s = a + Math.max(t.length, e ? e.length : 0), l = 0; r > l; l++) {
                    var u = i[l];
                    o[u] || (o[u] = KB()), HB(n, this._dimensionInfos[u], s, !0)
                }
                for (var h = rV(i, function (t) {
                    return o[t]
                }), c = this._storageArr = rV(i, function (t) {
                    return n[t]
                }), p = [], d = a; s > d; d++) {
                    for (var f = d - a, g = 0; r > g; g++) {
                        var u = i[g], y = this._dimValueGetterArrayRows(t[f] || p, u, f, g);
                        c[g][d] = y;
                        var v = h[g];
                        y < v[0] && (v[0] = y), y > v[1] && (v[1] = y)
                    }
                    e && (this._nameList[d] = e[f], this._dontMakeIdFromName || UB(this, d))
                }
                this._rawCount = this._count = s, this._extent = {}, FB(this)
            }, t.prototype._initDataFromProvider = function (t, e, n) {
                if (!(t >= e)) {
                    for (var i = this._rawData, r = this._storage, o = this.dimensions, a = o.length, s = this._dimensionInfos, l = this._nameList, u = this._idList, h = this._rawExtent, c = i.getSource().sourceFormat, p = c === wR, d = 0; a > d; d++) {
                        var f = o[d];
                        h[f] || (h[f] = KB()), HB(r, s[f], e, n)
                    }
                    var g = this._storageArr = rV(o, function (t) {
                        return r[t]
                    }), y = rV(o, function (t) {
                        return h[t]
                    });
                    if (i.fillStorage) i.fillStorage(t, e, g, y); else for (var v = [], m = t; e > m; m++) {
                        v = i.getItem(m, v);
                        for (var x = 0; a > x; x++) {
                            var f = o[x], _ = g[x], b = this._dimValueGetter(v, f, m, x);
                            _[m] = b;
                            var w = y[x];
                            b < w[0] && (w[0] = b), b > w[1] && (w[1] = b)
                        }
                        if (p && !i.pure && v) {
                            var S = v.name;
                            null == l[m] && null != S && (l[m] = er(S, null));
                            var M = v.id;
                            null == u[m] && null != M && (u[m] = er(M, null))
                        }
                        this._dontMakeIdFromName || UB(this, m)
                    }
                    !i.persistent && i.clean && i.clean(), this._rawCount = this._count = e, this._extent = {}, FB(this)
                }
            }, t.prototype.count = function () {
                return this._count
            }, t.prototype.getIndices = function () {
                var t, e = this._indices;
                if (e) {
                    var n = e.constructor, i = this._count;
                    if (n === Array) {
                        t = new n(i);
                        for (var r = 0; i > r; r++) t[r] = e[r]
                    } else t = new n(e.buffer, 0, i)
                } else {
                    var n = GB(this);
                    t = new n(this.count());
                    for (var r = 0; r < t.length; r++) t[r] = r
                }
                return t
            }, t.prototype.getByDimIdx = function (t, e) {
                if (!(e >= 0 && e < this._count)) return 0 / 0;
                var n = this._storageArr[t];
                return n ? n[this.getRawIndex(e)] : 0 / 0
            }, t.prototype.get = function (t, e) {
                if (!(e >= 0 && e < this._count)) return 0 / 0;
                var n = this._storage[t];
                return n ? n[this.getRawIndex(e)] : 0 / 0
            }, t.prototype.getByRawIndex = function (t, e) {
                if (!(e >= 0 && e < this._rawCount)) return 0 / 0;
                var n = this._storage[t];
                return n ? n[e] : 0 / 0
            }, t.prototype.getValues = function (t, e) {
                var n = [];
                M(t) || (e = t, t = this.dimensions);
                for (var i = 0, r = t.length; r > i; i++) n.push(this.get(t[i], e));
                return n
            }, t.prototype.hasValue = function (t) {
                for (var e = this._dimensionsSummary.dataDimsOnCoord, n = 0, i = e.length; i > n; n++) if (isNaN(this.get(e[n], t))) return !1;
                return !0
            }, t.prototype.getDataExtent = function (t) {
                t = this.getDimension(t);
                var e = this._storage[t], n = KB();
                if (!e) return n;
                var i, r = this.count(), o = !this._indices;
                if (o) return this._rawExtent[t].slice();
                if (i = this._extent[t]) return i.slice();
                i = n;
                for (var a = i[0], s = i[1], l = 0; r > l; l++) {
                    var u = this.getRawIndex(l), h = e[u];
                    a > h && (a = h), h > s && (s = h)
                }
                return i = [a, s], this._extent[t] = i, i
            }, t.prototype.getApproximateExtent = function (t) {
                return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t)
            }, t.prototype.setApproximateExtent = function (t, e) {
                e = this.getDimension(e), this._approximateExtent[e] = t.slice()
            }, t.prototype.getCalculationInfo = function (t) {
                return this._calculationInfo[t]
            }, t.prototype.setCalculationInfo = function (t, e) {
                iV(t) ? h(this._calculationInfo, t) : this._calculationInfo[t] = e
            }, t.prototype.getSum = function (t) {
                var e = this._storage[t], n = 0;
                if (e) for (var i = 0, r = this.count(); r > i; i++) {
                    var o = this.get(t, i);
                    isNaN(o) || (n += o)
                }
                return n
            }, t.prototype.getMedian = function (t) {
                var e = [];
                this.each(t, function (t) {
                    isNaN(t) || e.push(t)
                });
                var n = e.sort(function (t, e) {
                    return t - e
                }), i = this.count();
                return 0 === i ? 0 : i % 2 === 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2
            }, t.prototype.rawIndexOf = function (t, e) {
                var n = t && this._invertedIndicesMap[t], i = n[e];
                return null == i || isNaN(i) ? aV : i
            }, t.prototype.indexOfName = function (t) {
                for (var e = 0, n = this.count(); n > e; e++) if (this.getName(e) === t) return e;
                return -1
            }, t.prototype.indexOfRawIndex = function (t) {
                if (t >= this._rawCount || 0 > t) return -1;
                if (!this._indices) return t;
                var e = this._indices, n = e[t];
                if (null != n && n < this._count && n === t) return t;
                for (var i = 0, r = this._count - 1; r >= i;) {
                    var o = (i + r) / 2 | 0;
                    if (e[o] < t) i = o + 1; else {
                        if (!(e[o] > t)) return o;
                        r = o - 1
                    }
                }
                return -1
            }, t.prototype.indicesOfNearest = function (t, e, n) {
                var i = this._storage, r = i[t], o = [];
                if (!r) return o;
                null == n && (n = 1 / 0);
                for (var a = 1 / 0, s = -1, l = 0, u = 0, h = this.count(); h > u; u++) {
                    var c = this.getRawIndex(u), p = e - r[c], d = Math.abs(p);
                    n >= d && ((a > d || d === a && p >= 0 && 0 > s) && (a = d, s = p, l = 0), p === s && (o[l++] = u))
                }
                return o.length = l, o
            }, t.prototype.getRawDataItem = function (t) {
                if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t));
                for (var e = [], n = 0; n < this.dimensions.length; n++) {
                    var i = this.dimensions[n];
                    e.push(this.get(i, t))
                }
                return e
            }, t.prototype.getName = function (t) {
                var e = this.getRawIndex(t), n = this._nameList[e];
                return null == n && null != this._nameDimIdx && (n = ZB(this, this._nameDimIdx, this._nameOrdinalMeta, e)), null == n && (n = ""), n
            }, t.prototype.getId = function (t) {
                return YB(this, this.getRawIndex(t))
            }, t.prototype.each = function (t, e, n, i) {
                var r = this;
                if (this._count) {
                    "function" == typeof t && (i = n, n = e, e = t, t = []);
                    for (var o = n || i || this, a = rV(jB(t), this.getDimension, this), s = a.length, l = rV(a, function (t) {
                        return r._dimensionInfos[t].index
                    }), u = this._storageArr, h = 0, c = this.count(); c > h; h++) {
                        var p = this.getRawIndex(h);
                        switch (s) {
                            case 0:
                                e.call(o, h);
                                break;
                            case 1:
                                e.call(o, u[l[0]][p], h);
                                break;
                            case 2:
                                e.call(o, u[l[0]][p], u[l[1]][p], h);
                                break;
                            default:
                                for (var d = 0, f = []; s > d; d++) f[d] = u[l[d]][p];
                                f[d] = h, e.apply(o, f)
                        }
                    }
                }
            }, t.prototype.filterSelf = function (t, e, n, i) {
                var r = this;
                if (this._count) {
                    "function" == typeof t && (i = n, n = e, e = t, t = []);
                    for (var o = n || i || this, a = rV(jB(t), this.getDimension, this), s = this.count(), l = GB(this), u = new l(s), h = [], c = a.length, p = 0, d = rV(a, function (t) {
                        return r._dimensionInfos[t].index
                    }), f = d[0], g = this._storageArr, y = 0; s > y; y++) {
                        var v = void 0, m = this.getRawIndex(y);
                        if (0 === c) v = e.call(o, y); else if (1 === c) {
                            var x = g[f][m];
                            v = e.call(o, x, y)
                        } else {
                            for (var _ = 0; c > _; _++) h[_] = g[d[_]][m];
                            h[_] = y, v = e.apply(o, h)
                        }
                        v && (u[p++] = m)
                    }
                    return s > p && (this._indices = u), this._count = p, this._extent = {}, this.getRawIndex = this._indices ? XB : WB, this
                }
            }, t.prototype.selectRange = function (t) {
                var e = this, n = this._count;
                if (n) {
                    var i = [];
                    for (var r in t) t.hasOwnProperty(r) && i.push(r);
                    var o = i.length;
                    if (o) {
                        var a = this.count(), s = GB(this), l = new s(a), u = 0, h = i[0], c = rV(i, function (t) {
                            return e._dimensionInfos[t].index
                        }), p = t[h][0], d = t[h][1], f = this._storageArr, g = !1;
                        if (!this._indices) {
                            var y = 0;
                            if (1 === o) {
                                for (var v = f[c[0]], m = 0; n > m; m++) {
                                    var x = v[m];
                                    (x >= p && d >= x || isNaN(x)) && (l[u++] = y), y++
                                }
                                g = !0
                            } else if (2 === o) {
                                for (var v = f[c[0]], _ = f[c[1]], b = t[i[1]][0], w = t[i[1]][1], m = 0; n > m; m++) {
                                    var x = v[m], S = _[m];
                                    (x >= p && d >= x || isNaN(x)) && (S >= b && w >= S || isNaN(S)) && (l[u++] = y), y++
                                }
                                g = !0
                            }
                        }
                        if (!g) if (1 === o) for (var m = 0; a > m; m++) {
                            var M = this.getRawIndex(m), x = f[c[0]][M];
                            (x >= p && d >= x || isNaN(x)) && (l[u++] = M)
                        } else for (var m = 0; a > m; m++) {
                            for (var I = !0, M = this.getRawIndex(m), T = 0; o > T; T++) {
                                var C = i[T], x = f[c[T]][M];
                                (x < t[C][0] || x > t[C][1]) && (I = !1)
                            }
                            I && (l[u++] = this.getRawIndex(m))
                        }
                        return a > u && (this._indices = l), this._count = u, this._extent = {}, this.getRawIndex = this._indices ? XB : WB, this
                    }
                }
            }, t.prototype.mapArray = function (t, e, n, i) {
                "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this;
                var r = [];
                return this.each(t, function () {
                    r.push(e && e.apply(this, arguments))
                }, n), r
            }, t.prototype.map = function (t, e, n, i) {
                var r = n || i || this, o = rV(jB(t), this.getDimension, this), a = qB(this, o), s = a._storage;
                a._indices = this._indices, a.getRawIndex = a._indices ? XB : WB;
                for (var l = [], u = o.length, h = this.count(), c = [], p = a._rawExtent, d = 0; h > d; d++) {
                    for (var f = 0; u > f; f++) c[f] = this.get(o[f], d);
                    c[u] = d;
                    var g = e && e.apply(r, c);
                    if (null != g) {
                        "object" != typeof g && (l[0] = g, g = l);
                        for (var y = this.getRawIndex(d), v = 0; v < g.length; v++) {
                            var m = o[v], x = g[v], _ = p[m], b = s[m];
                            b && (b[y] = x), x < _[0] && (_[0] = x), x > _[1] && (_[1] = x)
                        }
                    }
                }
                return a
            }, t.prototype.downSample = function (t, e, n, i) {
                for (var r = qB(this, [t]), o = r._storage, a = [], s = nV(1 / e), l = o[t], u = this.count(), h = r._rawExtent[t], c = new (GB(this))(u), p = 0, d = 0; u > d; d += s) {
                    s > u - d && (s = u - d, a.length = s);
                    for (var f = 0; s > f; f++) {
                        var g = this.getRawIndex(d + f);
                        a[f] = l[g]
                    }
                    var y = n(a), v = this.getRawIndex(Math.min(d + i(a, y) || 0, u - 1));
                    l[v] = y, y < h[0] && (h[0] = y), y > h[1] && (h[1] = y), c[p++] = v
                }
                return r._count = p, r._indices = c, r.getRawIndex = XB, r
            }, t.prototype.lttbDownSample = function (t, e) {
                var n, i, r, o = qB(this, []), a = o._storage, s = a[t], l = this.count(), u = new (GB(this))(l), h = 0,
                    c = nV(1 / e), p = this.getRawIndex(0);
                u[h++] = p;
                for (var d = 1; l - 1 > d; d += c) {
                    for (var f = Math.min(d + c, l - 1), g = Math.min(d + 2 * c, l), y = (g + f) / 2, v = 0, m = f; g > m; m++) {
                        var x = this.getRawIndex(m), _ = s[x];
                        isNaN(_) || (v += _)
                    }
                    v /= g - f;
                    var b = d, w = Math.min(d + c, l), S = d - 1, M = s[p];
                    n = -1, r = b;
                    for (var m = b; w > m; m++) {
                        var x = this.getRawIndex(m), _ = s[x];
                        isNaN(_) || (i = Math.abs((S - y) * (_ - M) - (S - m) * (v - M)), i > n && (n = i, r = x))
                    }
                    u[h++] = r, p = r
                }
                return u[h++] = this.getRawIndex(l - 1), o._count = h, o._indices = u, o.getRawIndex = XB, o
            }, t.prototype.getItemModel = function (t) {
                var e = this.hostModel, n = this.getRawDataItem(t);
                return new VO(n, e, e && e.ecModel)
            }, t.prototype.diff = function (t) {
                var e = this;
                return new tV(t ? t.getIndices() : [], this.getIndices(), function (e) {
                    return YB(t, e)
                }, function (t) {
                    return YB(e, t)
                })
            }, t.prototype.getVisual = function (t) {
                var e = this._visual;
                return e && e[t]
            }, t.prototype.setVisual = function (t, e) {
                this._visual = this._visual || {}, iV(t) ? h(this._visual, t) : this._visual[t] = e
            }, t.prototype.getItemVisual = function (t, e) {
                var n = this._itemVisuals[t], i = n && n[e];
                return null == i ? this.getVisual(e) : i
            }, t.prototype.hasItemVisual = function () {
                return this._itemVisuals.length > 0
            }, t.prototype.ensureUniqueItemVisual = function (t, e) {
                var n = this._itemVisuals, i = n[t];
                i || (i = n[t] = {});
                var r = i[e];
                return null == r && (r = this.getVisual(e), M(r) ? r = r.slice() : iV(r) && (r = h({}, r)), i[e] = r), r
            }, t.prototype.setItemVisual = function (t, e, n) {
                var i = this._itemVisuals[t] || {};
                this._itemVisuals[t] = i, iV(e) ? h(i, e) : i[e] = n
            }, t.prototype.clearAllVisual = function () {
                this._visual = {}, this._itemVisuals = []
            }, t.prototype.setLayout = function (t, e) {
                if (iV(t)) for (var n in t) t.hasOwnProperty(n) && this.setLayout(n, t[n]); else this._layout[t] = e
            }, t.prototype.getLayout = function (t) {
                return this._layout[t]
            }, t.prototype.getItemLayout = function (t) {
                return this._itemLayouts[t]
            }, t.prototype.setItemLayout = function (t, e, n) {
                this._itemLayouts[t] = n ? h(this._itemLayouts[t] || {}, e) : e
            }, t.prototype.clearItemLayouts = function () {
                this._itemLayouts.length = 0
            }, t.prototype.setItemGraphicEl = function (t, e) {
                var n = this.hostModel;
                if (e) {
                    var i = tP(e);
                    i.dataIndex = t, i.dataType = this.dataType, i.seriesIndex = n && n.seriesIndex, "group" === e.type && e.traverse($B, e)
                }
                this._graphicEls[t] = e
            }, t.prototype.getItemGraphicEl = function (t) {
                return this._graphicEls[t]
            }, t.prototype.eachItemGraphicEl = function (t, e) {
                y(this._graphicEls, function (n, i) {
                    n && t && t.call(e, n, i)
                })
            }, t.prototype.cloneShallow = function (e) {
                if (!e) {
                    var n = rV(this.dimensions, this.getDimensionInfo, this);
                    e = new t(n, this.hostModel)
                }
                if (e._storage = this._storage, e._storageArr = this._storageArr, JB(e, this), this._indices) {
                    var i = this._indices.constructor;
                    if (i === Array) {
                        var r = this._indices.length;
                        e._indices = new i(r);
                        for (var o = 0; r > o; o++) e._indices[o] = this._indices[o]
                    } else e._indices = new i(this._indices)
                } else e._indices = null;
                return e.getRawIndex = e._indices ? XB : WB, e
            }, t.prototype.wrapMethod = function (t, e) {
                var n = this[t];
                "function" == typeof n && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function () {
                    var t = n.apply(this, arguments);
                    return e.apply(this, [t].concat(F(arguments)))
                })
            }, t.internalField = function () {
                function e(t, e, n, i) {
                    return Xu(t[i], this._dimensionInfos[e])
                }

                function n(t) {
                    var e = t.constructor;
                    return e === Array ? t.slice() : new e(t)
                }

                VB = {
                    arrayRows: e, objectRows: function (t, e) {
                        return Xu(t[e], this._dimensionInfos[e])
                    }, keyedColumns: e, original: function (t, e, n, i) {
                        var r = t && (null == t.value ? t : t.value);
                        return !this._rawData.pure && Yi(t) && (this.hasItemOption = !0), Xu(r instanceof Array ? r[i] : r, this._dimensionInfos[e])
                    }, typedArray: function (t, e, n, i) {
                        return t[i]
                    }
                }, FB = function (t) {
                    var e = t._invertedIndicesMap;
                    y(e, function (n, i) {
                        var r = t._dimensionInfos[i], o = r.ordinalMeta;
                        if (o) {
                            n = e[i] = new hV(o.categories.length);
                            for (var a = 0; a < n.length; a++) n[a] = aV;
                            for (var a = 0; a < t._count; a++) n[t.get(i, a)] = a
                        }
                    })
                }, ZB = function (t, e, n, i) {
                    var r, o = t._storageArr[e];
                    return o && (r = o[i], n && n.categories.length && (r = n.categories[r])), er(r, null)
                }, GB = function (t) {
                    return t._rawCount > 65535 ? uV : cV
                }, HB = function (t, e, n, i) {
                    var r = lV[e.type], o = e.name;
                    if (i) {
                        var a = t[o], s = a && a.length;
                        if (s !== n) {
                            for (var l = new r(n), u = 0; s > u; u++) l[u] = a[u];
                            t[o] = l
                        }
                    } else t[o] = new r(n)
                }, WB = function (t) {
                    return t
                }, XB = function (t) {
                    return t < this._count && t >= 0 ? this._indices[t] : -1
                }, YB = function (t, e) {
                    var n = t._idList[e];
                    return null == n && null != t._idDimIdx && (n = ZB(t, t._idDimIdx, t._idOrdinalMeta, e)), null == n && (n = sV + e), n
                }, jB = function (t) {
                    return M(t) || (t = null != t ? [t] : []), t
                }, qB = function (e, i) {
                    var r = e.dimensions, o = new t(rV(r, e.getDimensionInfo, e), e.hostModel);
                    JB(o, e);
                    for (var a = o._storage = {}, s = e._storage, l = o._storageArr = [], u = 0; u < r.length; u++) {
                        var h = r[u];
                        s[h] && (p(i, h) >= 0 ? (a[h] = n(s[h]), o._rawExtent[h] = KB(), o._extent[h] = null) : a[h] = s[h], l.push(a[h]))
                    }
                    return o
                }, KB = function () {
                    return [1 / 0, -1 / 0]
                }, $B = function (t) {
                    var e = tP(t), n = tP(this);
                    e.seriesIndex = n.seriesIndex, e.dataIndex = n.dataIndex, e.dataType = n.dataType
                }, JB = function (t, e) {
                    y(pV.concat(e.__wrappedMethods || []), function (n) {
                        e.hasOwnProperty(n) && (t[n] = e[n])
                    }), t.__wrappedMethods = e.__wrappedMethods, y(dV, function (n) {
                        t[n] = s(e[n])
                    }), t._calculationInfo = h({}, e._calculationInfo)
                }, UB = function (t, e) {
                    var n = t._nameList, i = t._idList, r = t._nameDimIdx, o = t._idDimIdx, a = n[e], s = i[e];
                    if (null == a && null != r && (n[e] = a = ZB(t, r, t._nameOrdinalMeta, e)), null == s && null != o && (i[e] = s = ZB(t, o, t._idOrdinalMeta, e)), null == s && null != a) {
                        var l = t._nameRepeatCount, u = l[a] = (l[a] || 0) + 1;
                        s = a, u > 1 && (s += "__ec__" + u), i[e] = s
                    }
                }
            }(), t
        }(), gV = function () {
            function t(t) {
                this.coordSysDims = [], this.axisMap = Z(), this.categoryAxisMap = Z(), this.coordSysName = t
            }

            return t
        }(), yV = {
            cartesian2d: function (t, e, n, i) {
                var r = t.getReferringComponents("xAxis", wL).models[0],
                    o = t.getReferringComponents("yAxis", wL).models[0];
                e.coordSysDims = ["x", "y"], n.set("x", r), n.set("y", o), cd(r) && (i.set("x", r), e.firstCategoryDimIndex = 0), cd(o) && (i.set("y", o), null == e.firstCategoryDimIndex && (e.firstCategoryDimIndex = 1))
            }, singleAxis: function (t, e, n, i) {
                var r = t.getReferringComponents("singleAxis", wL).models[0];
                e.coordSysDims = ["single"], n.set("single", r), cd(r) && (i.set("single", r), e.firstCategoryDimIndex = 0)
            }, polar: function (t, e, n, i) {
                var r = t.getReferringComponents("polar", wL).models[0], o = r.findAxisModel("radiusAxis"),
                    a = r.findAxisModel("angleAxis");
                e.coordSysDims = ["radius", "angle"], n.set("radius", o), n.set("angle", a), cd(o) && (i.set("radius", o), e.firstCategoryDimIndex = 0), cd(a) && (i.set("angle", a), null == e.firstCategoryDimIndex && (e.firstCategoryDimIndex = 1))
            }, geo: function (t, e) {
                e.coordSysDims = ["lng", "lat"]
            }, parallel: function (t, e, n, i) {
                var r = t.ecModel, o = r.getComponent("parallel", t.get("parallelIndex")),
                    a = e.coordSysDims = o.dimensions.slice();
                y(o.parallelAxisIndex, function (t, o) {
                    var s = r.getComponent("parallelAxis", t), l = a[o];
                    n.set(l, s), cd(s) && (i.set(l, s), null == e.firstCategoryDimIndex && (e.firstCategoryDimIndex = o))
                })
            }
        }, vV = function () {
            function t(t) {
                this._setting = t || {}, this._extent = [1 / 0, -1 / 0]
            }

            return t.prototype.getSetting = function (t) {
                return this._setting[t]
            }, t.prototype.unionExtent = function (t) {
                var e = this._extent;
                t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1])
            }, t.prototype.unionExtentFromData = function (t, e) {
                this.unionExtent(t.getApproximateExtent(e))
            }, t.prototype.getExtent = function () {
                return this._extent.slice()
            }, t.prototype.setExtent = function (t, e) {
                var n = this._extent;
                isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e)
            }, t.prototype.isInExtentRange = function (t) {
                return this._extent[0] <= t && this._extent[1] >= t
            }, t.prototype.isBlank = function () {
                return this._isBlank
            }, t.prototype.setBlank = function (t) {
                this._isBlank = t
            }, t
        }();
    Cr(vV);
    var mV = function () {
        function t(t) {
            this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication
        }

        return t.createByAxisModel = function (e) {
            var n = e.option, i = n.data, r = i && v(i, md);
            return new t({categories: r, needCollect: !r, deduplication: n.dedplication !== !1})
        }, t.prototype.getOrdinal = function (t) {
            return this._getOrCreateMap().get(t)
        }, t.prototype.parseAndCollect = function (t) {
            var e, n = this._needCollect;
            if ("string" != typeof t && !n) return t;
            if (n && !this._deduplication) return e = this.categories.length, this.categories[e] = t, e;
            var i = this._getOrCreateMap();
            return e = i.get(t), null == e && (n ? (e = this.categories.length, this.categories[e] = t, i.set(t, e)) : e = 0 / 0), e
        }, t.prototype._getOrCreateMap = function () {
            return this._map || (this._map = Z(this.categories))
        }, t
    }(), xV = bi, _V = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            n.type = "ordinal";
            var i = n.getSetting("ordinalMeta");
            return i || (i = new mV({})), M(i) && (i = new mV({
                categories: v(i, function (t) {
                    return D(t) ? t.value : t
                })
            })), n._ordinalMeta = i, n._extent = n.getSetting("extent") || [0, i.categories.length - 1], n
        }

        return e(n, t), n.prototype.parse = function (t) {
            return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t)
        }, n.prototype.contain = function (t) {
            return t = this.parse(t), Sd(t, this._extent) && null != this._ordinalMeta.categories[t]
        }, n.prototype.normalize = function (t) {
            return t = this._getTickNumber(this.parse(t)), Md(t, this._extent)
        }, n.prototype.scale = function (t) {
            return t = Math.round(Id(t, this._extent)), this.getRawOrdinalNumber(t)
        }, n.prototype.getTicks = function () {
            for (var t = [], e = this._extent, n = e[0]; n <= e[1];) t.push({value: n}), n++;
            return t
        }, n.prototype.getMinorTicks = function () {
        }, n.prototype.setSortInfo = function (t) {
            if (null == t) return void (this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null);
            for (var e = t.ordinalNumbers, n = this._ordinalNumbersByTick = [], i = this._ticksByOrdinalNumber = [], r = 0, o = this._ordinalMeta.categories.length, a = Math.min(o, e.length); a > r; ++r) {
                var s = e[r];
                n[r] = s, i[s] = r
            }
            for (var l = 0; o > r; ++r) {
                for (; null != i[l];) l++;
                n.push(l), i[l] = r
            }
        }, n.prototype._getTickNumber = function (t) {
            var e = this._ticksByOrdinalNumber;
            return e && t >= 0 && t < e.length ? e[t] : t
        }, n.prototype.getRawOrdinalNumber = function (t) {
            var e = this._ordinalNumbersByTick;
            return e && t >= 0 && t < e.length ? e[t] : t
        }, n.prototype.getLabel = function (t) {
            if (!this.isBlank()) {
                var e = this.getRawOrdinalNumber(t.value), n = this._ordinalMeta.categories[e];
                return null == n ? "" : n + ""
            }
        }, n.prototype.count = function () {
            return this._extent[1] - this._extent[0] + 1
        }, n.prototype.unionExtentFromData = function (t, e) {
            this.unionExtent(t.getApproximateExtent(e))
        }, n.prototype.isInExtentRange = function (t) {
            return t = this._getTickNumber(t), this._extent[0] <= t && this._extent[1] >= t
        }, n.prototype.getOrdinalMeta = function () {
            return this._ordinalMeta
        }, n.prototype.niceTicks = function () {
        }, n.prototype.niceExtent = function () {
        }, n.type = "ordinal", n
    }(vV);
    vV.registerClass(_V);
    var bV = bi, wV = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = "interval", e._interval = 0, e._intervalPrecision = 2, e
        }

        return e(n, t), n.prototype.parse = function (t) {
            return t
        }, n.prototype.contain = function (t) {
            return Sd(t, this._extent)
        }, n.prototype.normalize = function (t) {
            return Md(t, this._extent)
        }, n.prototype.scale = function (t) {
            return Id(t, this._extent)
        }, n.prototype.setExtent = function (t, e) {
            var n = this._extent;
            isNaN(t) || (n[0] = parseFloat(t)), isNaN(e) || (n[1] = parseFloat(e))
        }, n.prototype.unionExtent = function (t) {
            var e = this._extent;
            t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), this.setExtent(e[0], e[1])
        }, n.prototype.getInterval = function () {
            return this._interval
        }, n.prototype.setInterval = function (t) {
            this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = _d(t)
        }, n.prototype.getTicks = function (t) {
            var e = this._interval, n = this._extent, i = this._niceExtent, r = this._intervalPrecision, o = [];
            if (!e) return o;
            var a = 1e4;
            n[0] < i[0] && o.push(t ? {value: bV(i[0] - e, r)} : {value: n[0]});
            for (var s = i[0]; s <= i[1] && (o.push({value: s}), s = bV(s + e, r), s !== o[o.length - 1].value);) if (o.length > a) return [];
            var l = o.length ? o[o.length - 1].value : i[1];
            return n[1] > l && o.push(t ? {value: bV(l + e, r)} : {value: n[1]}), o
        }, n.prototype.getMinorTicks = function (t) {
            for (var e = this.getTicks(!0), n = [], i = this.getExtent(), r = 1; r < e.length; r++) {
                for (var o = e[r], a = e[r - 1], s = 0, l = [], u = o.value - a.value, h = u / t; t - 1 > s;) {
                    var c = bV(a.value + (s + 1) * h);
                    c > i[0] && c < i[1] && l.push(c), s++
                }
                n.push(l)
            }
            return n
        }, n.prototype.getLabel = function (t, e) {
            if (null == t) return "";
            var n = e && e.precision;
            null == n ? n = Si(t.value) || 0 : "auto" === n && (n = this._intervalPrecision);
            var i = bV(t.value, n, !0);
            return ml(i)
        }, n.prototype.niceTicks = function (t, e, n) {
            t = t || 5;
            var i = this._extent, r = i[1] - i[0];
            if (isFinite(r)) {
                0 > r && (r = -r, i.reverse());
                var o = xd(i, t, e, n);
                this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this._niceExtent = o.niceTickExtent
            }
        }, n.prototype.niceExtent = function (t) {
            var e = this._extent;
            if (e[0] === e[1]) if (0 !== e[0]) {
                var n = e[0];
                t.fixMax ? e[0] -= n / 2 : (e[1] += n / 2, e[0] -= n / 2)
            } else e[1] = 1;
            var i = e[1] - e[0];
            isFinite(i) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var r = this._interval;
            t.fixMin || (e[0] = bV(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = bV(Math.ceil(e[1] / r) * r))
        }, n.type = "interval", n
    }(vV);
    vV.registerClass(wV);
    var SV = "__ec_stack_", MV = .5, IV = "undefined" != typeof Float32Array ? Float32Array : Array, TV = {
            seriesType: "bar", plan: Ch(), reset: function (t) {
                if (zd(t) && Ed(t)) {
                    var e = t.getData(), n = t.coordinateSystem, i = n.master.getRect(), r = n.getBaseAxis(),
                        o = n.getOtherAxis(r), a = e.mapDimension(o.dim), s = e.mapDimension(r.dim), l = o.isHorizontal(),
                        u = l ? 0 : 1, h = Od(kd([t]), r, t).width;
                    return h > MV || (h = MV), {
                        progress: function (t, e) {
                            for (var c, p = t.count, d = new IV(2 * p), f = new IV(2 * p), g = new IV(p), y = [], v = [], m = 0, x = 0; null != (c = t.next());) v[u] = e.get(a, c), v[1 - u] = e.get(s, c), y = n.dataToPoint(v, null), f[m] = l ? i.x + i.width : y[0], d[m++] = y[0], f[m] = l ? y[1] : i.y + i.height, d[m++] = y[1], g[x++] = c;
                            e.setLayout({
                                largePoints: d,
                                largeDataIndices: g,
                                largeBackgroundPoints: f,
                                barWidth: h,
                                valueAxisStart: Nd(r, o, !1),
                                backgroundStart: l ? i.x : i.y,
                                valueAxisHorizontal: l
                            })
                        }
                    }
                }
            }
        }, CV = function (t, e, n, i) {
            for (; i > n;) {
                var r = n + i >>> 1;
                t[r][1] < e ? n = r + 1 : i = r
            }
            return n
        }, AV = function (t) {
            function n(e) {
                var n = t.call(this, e) || this;
                return n.type = "time", n
            }

            return e(n, t), n.prototype.getLabel = function (t) {
                var e = this.getSetting("useUTC");
                return Qs(t.value, nR[Js(Ks(this._minLevelUnit))] || nR.second, e, this.getSetting("locale"))
            }, n.prototype.getFormattedLabel = function (t, e, n) {
                var i = this.getSetting("useUTC"), r = this.getSetting("locale");
                return tl(t, e, n, r, i)
            }, n.prototype.getTicks = function () {
                var t = this._interval, e = this._extent, n = [];
                if (!t) return n;
                n.push({value: e[0], level: 0});
                var i = this.getSetting("useUTC"), r = Yd(this._minLevelUnit, this._approxInterval, i, e);
                return n = n.concat(r), n.push({value: e[1], level: 0}), n
            }, n.prototype.niceExtent = function (t) {
                var e = this._extent;
                if (e[0] === e[1] && (e[0] -= JO, e[1] += JO), e[1] === -1 / 0 && 1 / 0 === e[0]) {
                    var n = new Date;
                    e[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), e[0] = e[1] - JO
                }
                this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval)
            }, n.prototype.niceTicks = function (t, e, n) {
                t = t || 10;
                var i = this._extent, r = i[1] - i[0];
                this._approxInterval = r / t, null != e && this._approxInterval < e && (this._approxInterval = e), null != n && this._approxInterval > n && (this._approxInterval = n);
                var o = DV.length, a = Math.min(CV(DV, this._approxInterval, 0, o), o - 1);
                this._interval = DV[a][1], this._minLevelUnit = DV[Math.max(a - 1, 0)][0]
            }, n.prototype.parse = function (t) {
                return "number" == typeof t ? t : +Li(t)
            }, n.prototype.contain = function (t) {
                return Sd(this.parse(t), this._extent)
            }, n.prototype.normalize = function (t) {
                return Md(this.parse(t), this._extent)
            }, n.prototype.scale = function (t) {
                return Id(t, this._extent)
            }, n.type = "time", n
        }(wV),
        DV = [["second", qO], ["minute", KO], ["hour", $O], ["quarter-day", 6 * $O], ["half-day", 12 * $O], ["day", 1.2 * JO], ["half-week", 3.5 * JO], ["week", 7 * JO], ["month", 31 * JO], ["quarter", 95 * JO], ["half-year", QO / 2], ["year", QO]];
    vV.registerClass(AV);
    var LV = vV.prototype, kV = wV.prototype, PV = bi, OV = Math.floor, RV = Math.ceil, zV = Math.pow, EV = Math.log,
        NV = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "log", e.base = 10, e._originalScale = new wV, e._interval = 0, e
            }

            return e(n, t), n.prototype.getTicks = function (t) {
                var e = this._originalScale, n = this._extent, i = e.getExtent(), r = kV.getTicks.call(this, t);
                return v(r, function (t) {
                    var e = t.value, r = bi(zV(this.base, e));
                    return r = e === n[0] && this._fixMin ? Zd(r, i[0]) : r, r = e === n[1] && this._fixMax ? Zd(r, i[1]) : r, {value: r}
                }, this)
            }, n.prototype.setExtent = function (t, e) {
                var n = this.base;
                t = EV(t) / EV(n), e = EV(e) / EV(n), kV.setExtent.call(this, t, e)
            }, n.prototype.getExtent = function () {
                var t = this.base, e = LV.getExtent.call(this);
                e[0] = zV(t, e[0]), e[1] = zV(t, e[1]);
                var n = this._originalScale, i = n.getExtent();
                return this._fixMin && (e[0] = Zd(e[0], i[0])), this._fixMax && (e[1] = Zd(e[1], i[1])), e
            }, n.prototype.unionExtent = function (t) {
                this._originalScale.unionExtent(t);
                var e = this.base;
                t[0] = EV(t[0]) / EV(e), t[1] = EV(t[1]) / EV(e), LV.unionExtent.call(this, t)
            }, n.prototype.unionExtentFromData = function (t, e) {
                this.unionExtent(t.getApproximateExtent(e))
            }, n.prototype.niceTicks = function (t) {
                t = t || 10;
                var e = this._extent, n = e[1] - e[0];
                if (!(1 / 0 === n || 0 >= n)) {
                    var i = ki(n), r = t / n * i;
                    for (.5 >= r && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0;) i *= 10;
                    var o = [bi(RV(e[0] / i) * i), bi(OV(e[1] / i) * i)];
                    this._interval = i, this._niceExtent = o
                }
            }, n.prototype.niceExtent = function (t) {
                kV.niceExtent.call(this, t), this._fixMin = t.fixMin, this._fixMax = t.fixMax
            }, n.prototype.parse = function (t) {
                return t
            }, n.prototype.contain = function (t) {
                return t = EV(t) / EV(this.base), Sd(t, this._extent)
            }, n.prototype.normalize = function (t) {
                return t = EV(t) / EV(this.base), Md(t, this._extent)
            }, n.prototype.scale = function (t) {
                return t = Id(t, this._extent), zV(this.base, t)
            }, n.type = "log", n
        }(vV), BV = NV.prototype;
    BV.getMinorTicks = kV.getMinorTicks, BV.getLabel = kV.getLabel, vV.registerClass(NV);
    var VV = function () {
            function t(t, e, n) {
                this._prepareParams(t, e, n)
            }

            return t.prototype._prepareParams = function (t, e, n) {
                n[1] < n[0] && (n = [0 / 0, 0 / 0]), this._dataMin = n[0], this._dataMax = n[1];
                var i = this._isOrdinal = "ordinal" === t.type;
                this._needCrossZero = e.getNeedCrossZero && e.getNeedCrossZero();
                var r = this._modelMinRaw = e.get("min", !0);
                I(r) ? this._modelMinNum = jd(t, r({
                    min: n[0],
                    max: n[1]
                })) : "dataMin" !== r && (this._modelMinNum = jd(t, r));
                var o = this._modelMaxRaw = e.get("max", !0);
                if (I(o) ? this._modelMaxNum = jd(t, o({
                    min: n[0],
                    max: n[1]
                })) : "dataMax" !== o && (this._modelMaxNum = jd(t, o)), i) this._axisDataLen = e.getCategories().length; else {
                    var a = e.get("boundaryGap"), s = M(a) ? a : [a || 0, a || 0];
                    this._boundaryGapInner = "boolean" == typeof s[0] || "boolean" == typeof s[1] ? [0, 0] : [ri(s[0], 1), ri(s[1], 1)]
                }
            }, t.prototype.calculate = function () {
                var t = this._isOrdinal, e = this._dataMin, n = this._dataMax, i = this._axisDataLen,
                    r = this._boundaryGapInner, o = t ? null : n - e || Math.abs(e),
                    a = "dataMin" === this._modelMinRaw ? e : this._modelMinNum,
                    s = "dataMax" === this._modelMaxRaw ? n : this._modelMaxNum, l = null != a, u = null != s;
                null == a && (a = t ? i ? 0 : 0 / 0 : e - r[0] * o), null == s && (s = t ? i ? i - 1 : 0 / 0 : n + r[1] * o), (null == a || !isFinite(a)) && (a = 0 / 0), (null == s || !isFinite(s)) && (s = 0 / 0), a > s && (a = 0 / 0, s = 0 / 0);
                var h = E(a) || E(s) || t && !i;
                this._needCrossZero && (a > 0 && s > 0 && !l && (a = 0), 0 > a && 0 > s && !u && (s = 0));
                var c = this._determinedMin, p = this._determinedMax;
                return null != c && (a = c, l = !0), null != p && (s = p, u = !0), {
                    min: a,
                    max: s,
                    minFixed: l,
                    maxFixed: u,
                    isBlank: h
                }
            }, t.prototype.modifyDataMinMax = function (t, e) {
                this[GV[t]] = e
            }, t.prototype.setDeterminedMinMax = function (t, e) {
                var n = FV[t];
                this[n] = e
            }, t.prototype.freeze = function () {
                this.frozen = !0
            }, t
        }(), FV = {min: "_determinedMin", max: "_determinedMax"}, GV = {min: "_dataMin", max: "_dataMax"},
        HV = function () {
            function t() {
            }

            return t.prototype.getNeedCrossZero = function () {
                var t = this.option;
                return !t.scale
            }, t.prototype.getCoordSysModel = function () {
            }, t
        }(), WV = {isDimensionStacked: dd, enableDataStack: pd, getStackedDimension: fd},
        XV = (Object.freeze || Object)({
            createList: uf,
            getLayoutRect: kl,
            dataStack: WV,
            createScale: hf,
            mixinAxisModelCommonMethods: cf,
            getECData: tP,
            createTextStyle: pf,
            createDimensions: ud,
            createSymbol: Sc,
            enableHoverEmphasis: Sa
        }), YV = [], ZV = {
            registerPreprocessor: Fp,
            registerProcessor: Gp,
            registerPostInit: Hp,
            registerPostUpdate: Wp,
            registerAction: Xp,
            registerCoordinateSystem: Yp,
            registerLayout: Up,
            registerVisual: jp,
            registerTransform: BB,
            registerLoading: Kp,
            registerMap: Jp,
            PRIORITY: GN,
            ComponentModel: gR,
            ComponentView: Tz,
            SeriesModel: Iz,
            ChartView: Dz,
            registerComponentModel: function (t) {
                gR.registerClass(t)
            },
            registerComponentView: function (t) {
                Tz.registerClass(t)
            },
            registerSeriesModel: function (t) {
                Iz.registerClass(t)
            },
            registerChartView: function (t) {
                Dz.registerClass(t)
            },
            registerSubTypeDefaulter: function (t, e) {
                gR.registerSubTypeDefaulter(t, e)
            },
            registerPainter: function (t, e) {
                vi(t, e)
            }
        }, UV = (Object.freeze || Object)({
            linearMap: xi,
            round: bi,
            asc: wi,
            getPrecision: Si,
            getPrecisionSafe: Mi,
            getPixelPrecision: Ii,
            getPercentWithPrecision: Ti,
            MAX_SAFE_INTEGER: yL,
            remRadian: Ai,
            isRadianAroundZero: Di,
            parseDate: Li,
            quantity: ki,
            quantityExponent: Pi,
            nice: Oi,
            quantile: Ri,
            reformIntervals: zi,
            isNumeric: Ni,
            numericToNumber: Ei
        }), jV = (Object.freeze || Object)({parse: Li, format: Qs}), qV = (Object.freeze || Object)({
            extendShape: Ja,
            extendPath: Qa,
            makePath: ns,
            makeImage: is,
            mergePath: wO,
            resizePath: os,
            createIcon: Ss,
            updateProps: us,
            initProps: hs,
            getTransform: gs,
            clipPointsByRect: bs,
            clipRectByRect: ws,
            registerShape: ts,
            getShapeClass: es,
            Group: sL,
            Image: Wk,
            Text: $k,
            Circle: kP,
            Ellipse: OP,
            Sector: ZP,
            Ring: jP,
            Polygon: KP,
            Polyline: JP,
            Rect: Uk,
            Line: eO,
            BezierCurve: rO,
            Arc: aO,
            IncrementalDisplayable: vO,
            CompoundPath: sO,
            LinearGradient: uO,
            RadialGradient: hO,
            BoundingRect: $D
        }), KV = (Object.freeze || Object)({
            addCommas: ml,
            toCamelCase: xl,
            normalizeCssArray: oR,
            encodeHTML: _l,
            formatTpl: wl,
            getTooltipMarker: Ml,
            formatTime: Il,
            capitalFirst: Tl,
            truncateText: Or,
            getTextRect: vl
        }), $V = (Object.freeze || Object)({
            map: v,
            each: y,
            indexOf: p,
            inherits: d,
            reduce: m,
            filter: x,
            bind: xA,
            curry: S,
            isArray: M,
            isString: T,
            isObject: D,
            isFunction: I,
            extend: h,
            defaults: c,
            clone: s,
            merge: l
        }), JV = ur(), QV = [0, 1], tF = function () {
            function t(t, e, n) {
                this.onBand = !1, this.inverse = !1, this.dim = t, this.scale = e, this._extent = n || [0, 0]
            }

            return t.prototype.contain = function (t) {
                var e = this._extent, n = Math.min(e[0], e[1]), i = Math.max(e[0], e[1]);
                return t >= n && i >= t
            }, t.prototype.containData = function (t) {
                return this.scale.contain(t)
            }, t.prototype.getExtent = function () {
                return this._extent.slice()
            }, t.prototype.getPixelPrecision = function (t) {
                return Ii(t || this.scale.getExtent(), this._extent)
            }, t.prototype.setExtent = function (t, e) {
                var n = this._extent;
                n[0] = t, n[1] = e
            }, t.prototype.dataToCoord = function (t, e) {
                var n = this._extent, i = this.scale;
                return t = i.normalize(t), this.onBand && "ordinal" === i.type && (n = n.slice(), Af(n, i.count())), xi(t, QV, n, e)
            }, t.prototype.coordToData = function (t, e) {
                var n = this._extent, i = this.scale;
                this.onBand && "ordinal" === i.type && (n = n.slice(), Af(n, i.count()));
                var r = xi(t, n, QV, e);
                return this.scale.scale(r)
            }, t.prototype.pointToData = function () {
            }, t.prototype.getTicksCoords = function (t) {
                t = t || {};
                var e = t.tickModel || this.getTickModel(), n = gf(this, e), i = n.ticks, r = v(i, function (t) {
                    return {
                        coord: this.dataToCoord("ordinal" === this.scale.type ? this.scale.getRawOrdinalNumber(t) : t),
                        tickValue: t
                    }
                }, this), o = e.get("alignWithLabel");
                return Df(this, r, o, t.clamp), r
            }, t.prototype.getMinorTicksCoords = function () {
                if ("ordinal" === this.scale.type) return [];
                var t = this.model.getModel("minorTick"), e = t.get("splitNumber");
                e > 0 && 100 > e || (e = 5);
                var n = this.scale.getMinorTicks(e), i = v(n, function (t) {
                    return v(t, function (t) {
                        return {coord: this.dataToCoord(t), tickValue: t}
                    }, this)
                }, this);
                return i
            }, t.prototype.getViewLabels = function () {
                return ff(this).labels
            }, t.prototype.getLabelModel = function () {
                return this.model.getModel("axisLabel")
            }, t.prototype.getTickModel = function () {
                return this.model.getModel("axisTick")
            }, t.prototype.getBandWidth = function () {
                var t = this._extent, e = this.scale.getExtent(), n = e[1] - e[0] + (this.onBand ? 1 : 0);
                0 === n && (n = 1);
                var i = Math.abs(t[1] - t[0]);
                return Math.abs(i) / n
            }, t.prototype.calculateCategoryInterval = function () {
                return Mf(this)
            }, t
        }(), eF = function (t) {
            function n(e, n, i) {
                var r = t.call(this) || this;
                r.motionBlur = !1, r.lastFrameAlpha = .7, r.dpr = 1, r.virtual = !1, r.config = {}, r.incremental = !1, r.zlevel = 0, r.maxRepaintRectCount = 5, r.__dirty = !0, r.__firstTimePaint = !0, r.__used = !1, r.__drawIndex = 0, r.__startIndex = 0, r.__endIndex = 0, r.__prevStartIndex = null, r.__prevEndIndex = null;
                var o;
                i = i || DD, "string" == typeof e ? o = zf(e, n, i) : D(e) && (o = e, e = o.id), r.id = e, r.dom = o;
                var a = o.style;
                return a && (o.onselectstart = Rf, a.webkitUserSelect = "none", a.userSelect = "none", a.webkitTapHighlightColor = "rgba(0,0,0,0)", a["-webkit-touch-callout"] = "none", a.padding = "0", a.margin = "0", a.borderWidth = "0"), r.domBack = null, r.ctxBack = null, r.painter = n, r.config = null, r.dpr = i, r
            }

            return e(n, t), n.prototype.getElementCount = function () {
                return this.__endIndex - this.__startIndex
            }, n.prototype.afterBrush = function () {
                this.__prevStartIndex = this.__startIndex, this.__prevEndIndex = this.__endIndex
            }, n.prototype.initContext = function () {
                this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr
            }, n.prototype.setUnpainted = function () {
                this.__firstTimePaint = !0
            }, n.prototype.createBackBuffer = function () {
                var t = this.dpr;
                this.domBack = zf("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), 1 !== t && this.ctxBack.scale(t, t)
            }, n.prototype.createRepaintRects = function (t, e, n, i) {
                function r(t) {
                    if (t.isFinite() && !t.isZero()) if (0 === o.length) {
                        var e = new $D(0, 0, 0, 0);
                        e.copy(t), o.push(e)
                    } else {
                        for (var n = !1, i = 1 / 0, r = 0, u = 0; u < o.length; ++u) {
                            var h = o[u];
                            if (h.intersect(t)) {
                                var c = new $D(0, 0, 0, 0);
                                c.copy(h), c.union(t), o[u] = c, n = !0;
                                break
                            }
                            if (s) {
                                l.copy(t), l.union(h);
                                var p = t.width * t.height, d = h.width * h.height, f = l.width * l.height, g = f - p - d;
                                i > g && (i = g, r = u)
                            }
                        }
                        if (s && (o[r].union(t), n = !0), !n) {
                            var e = new $D(0, 0, 0, 0);
                            e.copy(t), o.push(e)
                        }
                        s || (s = o.length >= a)
                    }
                }

                if (this.__firstTimePaint) return this.__firstTimePaint = !1, null;
                for (var o = [], a = this.maxRepaintRectCount, s = !1, l = new $D(0, 0, 0, 0), u = this.__startIndex; u < this.__endIndex; ++u) {
                    var h = t[u];
                    if (h) {
                        var c = h.shouldBePainted(n, i, !0, !0),
                            p = h.__isRendered && (h.__dirty & jA || !c) ? h.getPrevPaintRect() : null;
                        p && r(p);
                        var d = c && (h.__dirty & jA || !h.__isRendered) ? h.getPaintRect() : null;
                        d && r(d)
                    }
                }
                for (var u = this.__prevStartIndex; u < this.__prevEndIndex; ++u) {
                    var h = e[u], c = h.shouldBePainted(n, i, !0, !0);
                    if (h && (!c || !h.__zr) && h.__isRendered) {
                        var p = h.getPrevPaintRect();
                        p && r(p)
                    }
                }
                var f;
                do {
                    f = !1;
                    for (var u = 0; u < o.length;) if (o[u].isZero()) o.splice(u, 1); else {
                        for (var g = u + 1; g < o.length;) o[u].intersect(o[g]) ? (f = !0, o[u].union(o[g]), o.splice(g, 1)) : g++;
                        u++
                    }
                } while (f);
                return this._paintRects = o, o
            }, n.prototype.debugGetPaintRects = function () {
                return (this._paintRects || []).slice()
            }, n.prototype.resize = function (t, e) {
                var n = this.dpr, i = this.dom, r = i.style, o = this.domBack;
                r && (r.width = t + "px", r.height = e + "px"), i.width = t * n, i.height = e * n, o && (o.width = t * n, o.height = e * n, 1 !== n && this.ctxBack.scale(n, n))
            }, n.prototype.clear = function (t, e, n) {
                function i(t, n, i, r) {
                    if (o.clearRect(t, n, i, r), e && "transparent" !== e) {
                        var a = void 0;
                        O(e) ? (a = e.__canvasGradient || Tc(o, e, {
                            x: 0,
                            y: 0,
                            width: i,
                            height: r
                        }), e.__canvasGradient = a) : R(e) && (a = Oc(o, e, {
                            dirty: function () {
                                c.setUnpainted(), c.__painter.refresh()
                            }
                        })), o.save(), o.fillStyle = a || e, o.fillRect(t, n, i, r), o.restore()
                    }
                    l && (o.save(), o.globalAlpha = u, o.drawImage(p, t, n, i, r), o.restore())
                }

                var r = this.dom, o = this.ctx, a = r.width, s = r.height;
                e = e || this.clearColor;
                var l = this.motionBlur && !t, u = this.lastFrameAlpha, h = this.dpr, c = this;
                l && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(r, 0, 0, a / h, s / h));
                var p = this.domBack;
                !n || l ? i(0, 0, a, s) : n.length && y(n, function (t) {
                    i(t.x * h, t.y * h, t.width * h, t.height * h)
                })
            }, n
        }(LA), nF = 1e5, iF = 314159, rF = .01, oF = .001, aF = function () {
            function t(t, e, n) {
                this.type = "canvas", this._zlevelList = [], this._prevDisplayList = [], this._layers = {}, this._layerConfig = {}, this._needsManuallyCompositing = !1, this.type = "canvas";
                var i = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
                this._opts = n = h({}, n || {}), this.dpr = n.devicePixelRatio || DD, this._singleCanvas = i, this.root = t;
                var r = t.style;
                r && (r.webkitTapHighlightColor = "transparent", r.webkitUserSelect = "none", r.userSelect = "none", r["-webkit-touch-callout"] = "none", t.innerHTML = ""), this.storage = e;
                var o = this._zlevelList;
                this._prevDisplayList = [];
                var a = this._layers;
                if (i) {
                    var s = t, l = s.width, u = s.height;
                    null != n.width && (l = n.width), null != n.height && (u = n.height), this.dpr = n.devicePixelRatio || 1, s.width = l * this.dpr, s.height = u * this.dpr, this._width = l, this._height = u;
                    var c = new eF(s, this, this.dpr);
                    c.__builtin__ = !0, c.initContext(), a[iF] = c, c.zlevel = iF, o.push(iF), this._domRoot = t
                } else {
                    this._width = this._getSize(0), this._height = this._getSize(1);
                    var p = this._domRoot = Bf(this._width, this._height);
                    t.appendChild(p)
                }
            }

            return t.prototype.getType = function () {
                return "canvas"
            }, t.prototype.isSingleCanvas = function () {
                return this._singleCanvas
            }, t.prototype.getViewportRoot = function () {
                return this._domRoot
            }, t.prototype.getViewportRootOffset = function () {
                var t = this.getViewportRoot();
                return t ? {offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0} : void 0
            }, t.prototype.refresh = function (t) {
                var e = this.storage.getDisplayList(!0), n = this._prevDisplayList, i = this._zlevelList;
                this._redrawId = Math.random(), this._paintList(e, n, t, this._redrawId);
                for (var r = 0; r < i.length; r++) {
                    var o = i[r], a = this._layers[o];
                    if (!a.__builtin__ && a.refresh) {
                        var s = 0 === r ? this._backgroundColor : null;
                        a.refresh(s)
                    }
                }
                return this._opts.useDirtyRect && (this._prevDisplayList = e.slice()), this
            }, t.prototype.refreshHover = function () {
                this._paintHoverList(this.storage.getDisplayList(!1))
            }, t.prototype._paintHoverList = function (t) {
                var e = t.length, n = this._hoverlayer;
                if (n && n.clear(), e) {
                    for (var i, r = {inHover: !0, viewWidth: this._width, viewHeight: this._height}, o = 0; e > o; o++) {
                        var a = t[o];
                        a.__inHover && (n || (n = this._hoverlayer = this.getLayer(nF)), i || (i = n.ctx, i.save()), Uc(i, a, r, o === e - 1))
                    }
                    i && i.restore()
                }
            }, t.prototype.getHoverLayer = function () {
                return this.getLayer(nF)
            }, t.prototype.paintOne = function (t, e) {
                Zc(t, e)
            }, t.prototype._paintList = function (t, e, n, i) {
                if (this._redrawId === i) {
                    n = n || !1, this._updateLayerStatus(t);
                    var r = this._doPaintList(t, e, n), o = r.finished, a = r.needsRefreshHover;
                    if (this._needsManuallyCompositing && this._compositeManually(), a && this._paintHoverList(t), o) this.eachLayer(function (t) {
                        t.afterBrush && t.afterBrush()
                    }); else {
                        var s = this;
                        QA(function () {
                            s._paintList(t, e, n, i)
                        })
                    }
                }
            }, t.prototype._compositeManually = function () {
                var t = this.getLayer(iF).ctx, e = this._domRoot.width, n = this._domRoot.height;
                t.clearRect(0, 0, e, n), this.eachBuiltinLayer(function (i) {
                    i.virtual && t.drawImage(i.dom, 0, 0, e, n)
                })
            }, t.prototype._doPaintList = function (t, e, n) {
                for (var i = this, r = [], o = this._opts.useDirtyRect, a = 0; a < this._zlevelList.length; a++) {
                    var s = this._zlevelList[a], l = this._layers[s];
                    l.__builtin__ && l !== this._hoverlayer && (l.__dirty || n) && r.push(l)
                }
                for (var u = !0, h = !1, c = function (a) {
                    var s = r[a], l = s.ctx, c = o && s.createRepaintRects(t, e, p._width, p._height),
                        d = n ? s.__startIndex : s.__drawIndex, f = !n && s.incremental && Date.now, g = f && Date.now(),
                        y = s.zlevel === p._zlevelList[0] ? p._backgroundColor : null;
                    if (s.__startIndex === s.__endIndex) s.clear(!1, y, c); else if (d === s.__startIndex) {
                        var v = t[d];
                        v.incremental && v.notClear && !n || s.clear(!1, y, c)
                    }
                    -1 === d && (console.error("For some unknown reason. drawIndex is -1"), d = s.__startIndex);
                    var m, x = function (e) {
                        var n = {inHover: !1, allClipped: !1, prevEl: null, viewWidth: i._width, viewHeight: i._height};
                        for (m = d; m < s.__endIndex; m++) {
                            var r = t[m];
                            if (r.__inHover && (h = !0), i._doPaintEl(r, s, o, e, n, m === s.__endIndex - 1), f) {
                                var a = Date.now() - g;
                                if (a > 15) break
                            }
                        }
                        n.prevElClipPaths && l.restore()
                    };
                    if (c) if (0 === c.length) m = s.__endIndex; else for (var _ = p.dpr, b = 0; b < c.length; ++b) {
                        var w = c[b];
                        l.save(), l.beginPath(), l.rect(w.x * _, w.y * _, w.width * _, w.height * _), l.clip(), x(w), l.restore()
                    } else l.save(), x(), l.restore();
                    s.__drawIndex = m, s.__drawIndex < s.__endIndex && (u = !1)
                }, p = this, d = 0; d < r.length; d++) c(d);
                return oA.wxa && y(this._layers, function (t) {
                    t && t.ctx && t.ctx.draw && t.ctx.draw()
                }), {finished: u, needsRefreshHover: h}
            }, t.prototype._doPaintEl = function (t, e, n, i, r, o) {
                var a = e.ctx;
                if (n) {
                    var s = t.getPaintRect();
                    (!i || s && s.intersect(i)) && (Uc(a, t, r, o), t.setPrevPaintRect(s))
                } else Uc(a, t, r, o)
            }, t.prototype.getLayer = function (t, e) {
                this._singleCanvas && !this._needsManuallyCompositing && (t = iF);
                var n = this._layers[t];
                return n || (n = new eF("zr_" + t, this, this.dpr), n.zlevel = t, n.__builtin__ = !0, this._layerConfig[t] ? l(n, this._layerConfig[t], !0) : this._layerConfig[t - rF] && l(n, this._layerConfig[t - rF], !0), e && (n.virtual = e), this.insertLayer(t, n), n.initContext()), n
            }, t.prototype.insertLayer = function (t, e) {
                var n = this._layers, i = this._zlevelList, r = i.length, o = this._domRoot, s = null, l = -1;
                if (n[t]) return void a("ZLevel " + t + " has been used already");
                if (!Nf(e)) return void a("Layer of zlevel " + t + " is not valid");
                if (r > 0 && t > i[0]) {
                    for (l = 0; r - 1 > l && !(i[l] < t && i[l + 1] > t); l++) ;
                    s = n[i[l]]
                }
                if (i.splice(l + 1, 0, t), n[t] = e, !e.virtual) if (s) {
                    var u = s.dom;
                    u.nextSibling ? o.insertBefore(e.dom, u.nextSibling) : o.appendChild(e.dom)
                } else o.firstChild ? o.insertBefore(e.dom, o.firstChild) : o.appendChild(e.dom);
                e.__painter = this
            }, t.prototype.eachLayer = function (t, e) {
                for (var n = this._zlevelList, i = 0; i < n.length; i++) {
                    var r = n[i];
                    t.call(e, this._layers[r], r)
                }
            }, t.prototype.eachBuiltinLayer = function (t, e) {
                for (var n = this._zlevelList, i = 0; i < n.length; i++) {
                    var r = n[i], o = this._layers[r];
                    o.__builtin__ && t.call(e, o, r)
                }
            }, t.prototype.eachOtherLayer = function (t, e) {
                for (var n = this._zlevelList, i = 0; i < n.length; i++) {
                    var r = n[i], o = this._layers[r];
                    o.__builtin__ || t.call(e, o, r)
                }
            }, t.prototype.getLayers = function () {
                return this._layers
            }, t.prototype._updateLayerStatus = function (t) {
                function e(t) {
                    s && (s.__endIndex !== t && (s.__dirty = !0), s.__endIndex = t)
                }

                if (this.eachBuiltinLayer(function (t) {
                    t.__dirty = t.__used = !1
                }), this._singleCanvas) for (var n = 1; n < t.length; n++) {
                    var i = t[n];
                    if (i.zlevel !== t[n - 1].zlevel || i.incremental) {
                        this._needsManuallyCompositing = !0;
                        break
                    }
                }
                var r, o, s = null, l = 0;
                for (o = 0; o < t.length; o++) {
                    var i = t[o], u = i.zlevel, h = void 0;
                    r !== u && (r = u, l = 0), i.incremental ? (h = this.getLayer(u + oF, this._needsManuallyCompositing), h.incremental = !0, l = 1) : h = this.getLayer(u + (l > 0 ? rF : 0), this._needsManuallyCompositing), h.__builtin__ || a("ZLevel " + u + " has been used by unkown layer " + h.id), h !== s && (h.__used = !0, h.__startIndex !== o && (h.__dirty = !0), h.__startIndex = o, h.__drawIndex = h.incremental ? -1 : o, e(o), s = h), i.__dirty & jA && !i.__inHover && (h.__dirty = !0, h.incremental && h.__drawIndex < 0 && (h.__drawIndex = o))
                }
                e(o), this.eachBuiltinLayer(function (t) {
                    !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex)
                })
            }, t.prototype.clear = function () {
                return this.eachBuiltinLayer(this._clearLayer), this
            }, t.prototype._clearLayer = function (t) {
                t.clear()
            }, t.prototype.setBackgroundColor = function (t) {
                this._backgroundColor = t, y(this._layers, function (t) {
                    t.setUnpainted()
                })
            }, t.prototype.configLayer = function (t, e) {
                if (e) {
                    var n = this._layerConfig;
                    n[t] ? l(n[t], e, !0) : n[t] = e;
                    for (var i = 0; i < this._zlevelList.length; i++) {
                        var r = this._zlevelList[i];
                        if (r === t || r === t + rF) {
                            var o = this._layers[r];
                            l(o, n[t], !0)
                        }
                    }
                }
            }, t.prototype.delLayer = function (t) {
                var e = this._layers, n = this._zlevelList, i = e[t];
                i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(p(n, t), 1))
            }, t.prototype.resize = function (t, e) {
                if (this._domRoot.style) {
                    var n = this._domRoot;
                    n.style.display = "none";
                    var i = this._opts;
                    if (null != t && (i.width = t), null != e && (i.height = e), t = this._getSize(0), e = this._getSize(1), n.style.display = "", this._width !== t || e !== this._height) {
                        n.style.width = t + "px", n.style.height = e + "px";
                        for (var r in this._layers) this._layers.hasOwnProperty(r) && this._layers[r].resize(t, e);
                        this.refresh(!0)
                    }
                    this._width = t, this._height = e
                } else {
                    if (null == t || null == e) return;
                    this._width = t, this._height = e, this.getLayer(iF).resize(t, e)
                }
                return this
            }, t.prototype.clearLayer = function (t) {
                var e = this._layers[t];
                e && e.clear()
            }, t.prototype.dispose = function () {
                this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null
            }, t.prototype.getRenderedCanvas = function (t) {
                if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[iF].dom;
                var e = new eF("image", this, t.pixelRatio || this.dpr);
                e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor);
                var n = e.ctx;
                if (t.pixelRatio <= this.dpr) {
                    this.refresh();
                    var i = e.dom.width, r = e.dom.height;
                    this.eachLayer(function (t) {
                        t.__builtin__ ? n.drawImage(t.dom, 0, 0, i, r) : t.renderToCanvas && (n.save(), t.renderToCanvas(n), n.restore())
                    })
                } else for (var o = {
                    inHover: !1,
                    viewWidth: this._width,
                    viewHeight: this._height
                }, a = this.storage.getDisplayList(!0), s = 0, l = a.length; l > s; s++) {
                    var u = a[s];
                    Uc(n, u, o, s === l - 1)
                }
                return e.dom
            }, t.prototype.getWidth = function () {
                return this._width
            }, t.prototype.getHeight = function () {
                return this._height
            }, t.prototype._getSize = function (t) {
                var e = this._opts, n = ["width", "height"][t], i = ["clientWidth", "clientHeight"][t],
                    r = ["paddingLeft", "paddingTop"][t], o = ["paddingRight", "paddingBottom"][t];
                if (null != e[n] && "auto" !== e[n]) return parseFloat(e[n]);
                var a = this.root, s = document.defaultView.getComputedStyle(a);
                return (a[i] || Ef(s[n]) || Ef(a.style[n])) - (Ef(s[r]) || 0) - (Ef(s[o]) || 0) | 0
            }, t.prototype.pathToImage = function (t, e) {
                e = e || this.dpr;
                var n = document.createElement("canvas"), i = n.getContext("2d"), r = t.getBoundingRect(), o = t.style,
                    a = o.shadowBlur * e, s = o.shadowOffsetX * e, l = o.shadowOffsetY * e,
                    u = t.hasStroke() ? o.lineWidth : 0, c = Math.max(u / 2, -s + a), p = Math.max(u / 2, s + a),
                    d = Math.max(u / 2, -l + a), f = Math.max(u / 2, l + a), g = r.width + c + p, y = r.height + d + f;
                n.width = g * e, n.height = y * e, i.scale(e, e), i.clearRect(0, 0, g, y), i.dpr = e;
                var v = {
                    x: t.x,
                    y: t.y,
                    scaleX: t.scaleX,
                    scaleY: t.scaleY,
                    rotation: t.rotation,
                    originX: t.originX,
                    originY: t.originY
                };
                t.x = c - r.x, t.y = d - r.y, t.rotation = 0, t.scaleX = 1, t.scaleY = 1, t.updateTransform(), t && Uc(i, t, {
                    inHover: !1,
                    viewWidth: this._width,
                    viewHeight: this._height
                }, !0);
                var m = new Wk({style: {x: 0, y: 0, image: n}});
                return h(t, v), m
            }, t
        }(), sF = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "dataset", e
            }

            return e(n, t), n.prototype.init = function (e, n, i) {
                t.prototype.init.call(this, e, n, i), this._sourceManager = new mz(this), th(this)
            }, n.prototype.mergeOption = function (e, n) {
                t.prototype.mergeOption.call(this, e, n), th(this)
            }, n.prototype.optionUpdated = function () {
                this._sourceManager.dirty()
            }, n.prototype.getSourceManager = function () {
                return this._sourceManager
            }, n.type = "dataset", n.defaultOption = {seriesLayoutBy: AR}, n
        }(gR), lF = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "dataset", e
            }

            return e(n, t), n.type = "dataset", n
        }(Tz);
    df([Vf, Ff]);
    var uF = {
        average: function (t) {
            for (var e = 0, n = 0, i = 0; i < t.length; i++) isNaN(t[i]) || (e += t[i], n++);
            return 0 === n ? 0 / 0 : e / n
        }, sum: function (t) {
            for (var e = 0, n = 0; n < t.length; n++) e += t[n] || 0;
            return e
        }, max: function (t) {
            for (var e = -1 / 0, n = 0; n < t.length; n++) t[n] > e && (e = t[n]);
            return isFinite(e) ? e : 0 / 0
        }, min: function (t) {
            for (var e = 1 / 0, n = 0; n < t.length; n++) t[n] < e && (e = t[n]);
            return isFinite(e) ? e : 0 / 0
        }, nearest: function (t) {
            return t[0]
        }
    }, hF = function (t) {
        return Math.round(t.length / 2)
    }, cF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return gd(this.getSource(), this, {useEncodeDefaulter: !0})
        }, n.prototype.getMarkerPosition = function (t) {
            var e = this.coordinateSystem;
            if (e) {
                var n = e.dataToPoint(e.clampData(t)), i = this.getData(), r = i.getLayout("offset"),
                    o = i.getLayout("size"), a = e.getBaseAxis().isHorizontal() ? 0 : 1;
                return n[a] += r + o / 2, n
            }
            return [0 / 0, 0 / 0]
        }, n.type = "series.__base_bar__", n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            barMinHeight: 0,
            barMinAngle: 0,
            large: !1,
            largeThreshold: 400,
            progressive: 3e3,
            progressiveChunkMode: "mod"
        }, n
    }(Iz);
    Iz.registerClass(cF);
    var pF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return gd(this.getSource(), this, {
                useEncodeDefaulter: !0,
                createInvertedIndices: !!this.get("realtimeSort", !0) || null
            })
        }, n.prototype.getProgressive = function () {
            return this.get("large") ? this.get("progressive") : !1
        }, n.prototype.getProgressiveThreshold = function () {
            var t = this.get("progressiveThreshold"), e = this.get("largeThreshold");
            return e > t && (t = e), t
        }, n.prototype.brushSelector = function (t, e, n) {
            return n.rect(e.getItemLayout(t))
        }, n.type = "series.bar", n.dependencies = ["grid", "polar"], n.defaultOption = Xs(cF.defaultOption, {
            clip: !0,
            roundCap: !1,
            showBackground: !1,
            backgroundStyle: {
                color: "rgba(180, 180, 180, 0.2)",
                borderColor: null,
                borderWidth: 0,
                borderType: "solid",
                borderRadius: 0,
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            },
            select: {itemStyle: {borderColor: "#212121"}},
            realtimeSort: !1
        }), n
    }(cF), dF = function () {
        function t() {
            this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = 2 * Math.PI, this.clockwise = !0
        }

        return t
    }(), fF = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "sausage", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new dF
        }, n.prototype.buildPath = function (t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r0 || 0, 0), o = Math.max(e.r, 0), a = .5 * (o - r), s = r + a,
                l = e.startAngle, u = e.endAngle, h = e.clockwise, c = Math.cos(l), p = Math.sin(l), d = Math.cos(u),
                f = Math.sin(u), g = h ? u - l < 2 * Math.PI : l - u < 2 * Math.PI;
            g && (t.moveTo(c * r + n, p * r + i), t.arc(c * s + n, p * s + i, a, -Math.PI + l, l, !h)), t.arc(n, i, o, l, u, !h), t.moveTo(d * o + n, f * o + i), t.arc(d * s + n, f * s + i, a, u - 2 * Math.PI, u - Math.PI, !h), 0 !== r && (t.arc(n, i, r, u, l, h), t.moveTo(c * r + n, f * r + i)), t.closePath()
        }, n
    }(Bk), gF = [0, 0], yF = Math.max, vF = Math.min, mF = function (t) {
        function n() {
            var e = t.call(this) || this;
            return e.type = n.type, e._isFirstFrame = !0, e
        }

        return e(n, t), n.prototype.render = function (t, e, n, i) {
            this._model = t, this._removeOnRenderedListener(n), this._updateDrawMode(t);
            var r = t.get("coordinateSystem");
            ("cartesian2d" === r || "polar" === r) && (this._isLargeDraw ? this._renderLarge(t, e, n) : this._renderNormal(t, e, n, i))
        }, n.prototype.incrementalPrepareRender = function (t) {
            this._clear(), this._updateDrawMode(t), this._updateLargeClip(t)
        }, n.prototype.incrementalRender = function (t, e) {
            this._incrementalRenderLarge(t, e)
        }, n.prototype._updateDrawMode = function (t) {
            var e = t.pipelineContext.large;
            (null == this._isLargeDraw || e !== this._isLargeDraw) && (this._isLargeDraw = e, this._clear())
        }, n.prototype._renderNormal = function (t, e, n, i) {
            function r(t) {
                var e = bF[u.type](s, t), n = og(u, o, e);
                return n.useStyle(v.getItemStyle()), "cartesian2d" === u.type && n.setShape("r", m), x[t] = n, n
            }

            var o, a = this.group, s = t.getData(), l = this._data, u = t.coordinateSystem, h = u.getBaseAxis();
            "cartesian2d" === u.type ? o = h.isHorizontal() : "polar" === u.type && (o = "angle" === h.dim);
            var c = t.isAnimationEnabled() ? t : null, p = qf(t, u);
            p && this._enableRealtimeSort(p, s, n);
            var d = t.get("clip", !0) || p, f = jf(u, s);
            a.removeClipPath();
            var g = t.get("roundCap", !0), y = t.get("showBackground", !0), v = t.getModel("backgroundStyle"),
                m = v.get("borderRadius") || 0, x = [], _ = this._backgroundEls, b = i && i.isInitSort,
                w = i && "changeAxisOrder" === i.type;
            s.diff(l).add(function (e) {
                var n = s.getItemModel(e), i = bF[u.type](s, e, n);
                if (y && r(e), s.hasValue(e)) {
                    var l = !1;
                    d && (l = xF[u.type](f, i));
                    var v = _F[u.type](t, s, e, i, o, c, h.model, !1, g);
                    Jf(v, s, e, n, i, t, o, "polar" === u.type), b ? v.attr({shape: i}) : p ? Kf(p, c, v, i, e, o, !1, !1) : hs(v, {shape: i}, t, e), s.setItemGraphicEl(e, v), a.add(v), v.ignore = l
                }
            }).update(function (e, n) {
                var i = s.getItemModel(e), S = bF[u.type](s, e, i);
                if (y) {
                    var M = void 0;
                    0 === _.length ? M = r(n) : (M = _[n], M.useStyle(v.getItemStyle()), "cartesian2d" === u.type && M.setShape("r", m), x[e] = M);
                    var I = bF[u.type](s, e), T = rg(o, I, u);
                    us(M, {shape: T}, c, e)
                }
                var C = l.getItemGraphicEl(n);
                if (!s.hasValue(e)) return a.remove(C), void (C = null);
                var A = !1;
                d && (A = xF[u.type](f, S), A && a.remove(C)), C || (C = _F[u.type](t, s, e, S, o, c, h.model, !!C, g)), w || Jf(C, s, e, i, S, t, o, "polar" === u.type), b ? C.attr({shape: S}) : p ? Kf(p, c, C, S, e, o, !0, w) : us(C, {shape: S}, t, e, null), s.setItemGraphicEl(e, C), C.ignore = A, a.add(C)
            }).remove(function (e) {
                var n = l.getItemGraphicEl(e);
                n && ds(n, t, e)
            }).execute();
            var S = this._backgroundGroup || (this._backgroundGroup = new sL);
            S.removeAll();
            for (var M = 0; M < x.length; ++M) S.add(x[M]);
            a.add(S), this._backgroundEls = x, this._data = s
        }, n.prototype._renderLarge = function (t) {
            this._clear(), tg(t, this.group), this._updateLargeClip(t)
        }, n.prototype._incrementalRenderLarge = function (t, e) {
            this._removeBackground(), tg(e, this.group, !0)
        }, n.prototype._updateLargeClip = function (t) {
            var e = t.get("clip", !0) ? Xf(t.coordinateSystem, !1, t) : null;
            e ? this.group.setClipPath(e) : this.group.removeClipPath()
        }, n.prototype._enableRealtimeSort = function (t, e, n) {
            var i = this;
            if (e.count()) {
                var r = t.baseAxis;
                if (this._isFirstFrame) this._dispatchInitSort(e, t, n), this._isFirstFrame = !1; else {
                    var o = function (t) {
                        var n = e.getItemGraphicEl(t);
                        if (n) {
                            var i = n.shape;
                            return Math.abs(r.isHorizontal() ? i.height : i.width) || 0
                        }
                        return 0
                    };
                    this._onRendered = function () {
                        i._updateSortWithinSameData(e, o, r, n)
                    }, n.getZr().on("rendered", this._onRendered)
                }
            }
        }, n.prototype._dataSort = function (t, e, n) {
            var i = [];
            return t.each(t.mapDimension(e.dim), function (t, e) {
                var r = n(e);
                r = null == r ? 0 / 0 : r, i.push({dataIndex: e, mappedValue: r, ordinalNumber: t})
            }), i.sort(function (t, e) {
                return e.mappedValue - t.mappedValue
            }), {
                ordinalNumbers: v(i, function (t) {
                    return t.ordinalNumber
                })
            }
        }, n.prototype._isOrderChangedWithinSameData = function (t, e, n) {
            for (var i = n.scale, r = t.mapDimension(n.dim), o = Number.MAX_VALUE, a = 0, s = i.getOrdinalMeta().categories.length; s > a; ++a) {
                var l = t.rawIndexOf(r, i.getRawOrdinalNumber(a)),
                    u = 0 > l ? Number.MIN_VALUE : e(t.indexOfRawIndex(l));
                if (u > o) return !0;
                o = u
            }
            return !1
        }, n.prototype._isOrderDifferentInView = function (t, e) {
            for (var n = e.scale, i = n.getExtent(), r = Math.max(0, i[0]), o = Math.min(i[1], n.getOrdinalMeta().categories.length - 1); o >= r; ++r) if (t.ordinalNumbers[r] !== n.getRawOrdinalNumber(r)) return !0
        }, n.prototype._updateSortWithinSameData = function (t, e, n, i) {
            if (this._isOrderChangedWithinSameData(t, e, n)) {
                var r = this._dataSort(t, n, e);
                this._isOrderDifferentInView(r, n) && (this._removeOnRenderedListener(i), i.dispatchAction({
                    type: "changeAxisOrder",
                    componentType: n.dim + "Axis",
                    axisId: n.index,
                    sortInfo: r
                }))
            }
        }, n.prototype._dispatchInitSort = function (t, e, n) {
            var i = e.baseAxis, r = this._dataSort(t, i, function (n) {
                return t.get(t.mapDimension(e.otherAxis.dim), n)
            });
            n.dispatchAction({
                type: "changeAxisOrder",
                componentType: i.dim + "Axis",
                isInitSort: !0,
                axisId: i.index,
                sortInfo: r,
                animation: {duration: 0}
            })
        }, n.prototype.remove = function (t, e) {
            this._clear(this._model), this._removeOnRenderedListener(e)
        }, n.prototype.dispose = function (t, e) {
            this._removeOnRenderedListener(e)
        }, n.prototype._removeOnRenderedListener = function (t) {
            this._onRendered && (t.getZr().off("rendered", this._onRendered), this._onRendered = null)
        }, n.prototype._clear = function (t) {
            var e = this.group, n = this._data;
            t && t.isAnimationEnabled() && n && !this._isLargeDraw ? (this._removeBackground(), this._backgroundEls = [], n.eachItemGraphicEl(function (e) {
                ds(e, t, tP(e).dataIndex)
            })) : e.removeAll(), this._data = null, this._isFirstFrame = !0
        }, n.prototype._removeBackground = function () {
            this.group.remove(this._backgroundGroup), this._backgroundGroup = null
        }, n.type = "bar", n
    }(Dz), xF = {
        cartesian2d: function (t, e) {
            var n = e.width < 0 ? -1 : 1, i = e.height < 0 ? -1 : 1;
            0 > n && (e.x += e.width, e.width = -e.width), 0 > i && (e.y += e.height, e.height = -e.height);
            var r = t.x + t.width, o = t.y + t.height, a = yF(e.x, t.x), s = vF(e.x + e.width, r), l = yF(e.y, t.y),
                u = vF(e.y + e.height, o), h = a > s, c = l > u;
            return e.x = h && a > r ? s : a, e.y = c && l > o ? u : l, e.width = h ? 0 : s - a, e.height = c ? 0 : u - l, 0 > n && (e.x += e.width, e.width = -e.width), 0 > i && (e.y += e.height, e.height = -e.height), h || c
        }, polar: function (t, e) {
            var n = e.r0 <= e.r ? 1 : -1;
            if (0 > n) {
                var i = e.r;
                e.r = e.r0, e.r0 = i
            }
            var r = vF(e.r, t.r), o = yF(e.r0, t.r0);
            e.r = r, e.r0 = o;
            var a = 0 > r - o;
            if (0 > n) {
                var i = e.r;
                e.r = e.r0, e.r0 = i
            }
            return a
        }
    }, _F = {
        cartesian2d: function (t, e, n, i, r, o) {
            var a = new Uk({shape: h({}, i), z2: 1});
            if (a.__dataIndex = n, a.name = "item", o) {
                var s = a.shape, l = r ? "height" : "width";
                s[l] = 0
            }
            return a
        }, polar: function (t, e, n, i, r, o, a, s, l) {
            var u = i.startAngle < i.endAngle, h = !r && l ? fF : ZP, p = new h({shape: c({clockwise: u}, i), z2: 1});
            if (p.name = "item", o) {
                var d = p.shape, f = r ? "r" : "endAngle", g = {};
                d[f] = r ? 0 : i.startAngle, g[f] = i[f], (s ? us : hs)(p, {shape: g}, o)
            }
            return p
        }
    }, bF = {
        cartesian2d: function (t, e, n) {
            var i = t.getItemLayout(e), r = n ? Qf(n, i) : 0, o = i.width > 0 ? 1 : -1, a = i.height > 0 ? 1 : -1;
            return {x: i.x + o * r / 2, y: i.y + a * r / 2, width: i.width - o * r, height: i.height - a * r}
        }, polar: function (t, e) {
            var n = t.getItemLayout(e);
            return {cx: n.cx, cy: n.cy, r0: n.r0, r: n.r, startAngle: n.startAngle, endAngle: n.endAngle}
        }
    }, wF = function () {
        function t() {
        }

        return t
    }(), SF = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "largeBar", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new wF
        }, n.prototype.buildPath = function (t, e) {
            for (var n = e.points, i = this.__startPoint, r = this.__baseDimIdx, o = 0; o < n.length; o += 2) i[r] = n[o + r], t.moveTo(i[0], i[1]), t.lineTo(n[o], n[o + 1])
        }, n
    }(Bk), MF = Ph(function (t) {
        var e = this, n = eg(e, t.offsetX, t.offsetY);
        tP(e).dataIndex = n >= 0 ? n : null
    }, 30, !1);
    df(ag);
    var IF = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.hasSymbolVisual = !0, e
            }

            return e(n, t), n.prototype.getInitialData = function () {
                return gd(this.getSource(), this, {useEncodeDefaulter: !0})
            }, n.prototype.getLegendIcon = function (t) {
                var e = new sL, n = Sc("line", 0, t.itemHeight / 2, t.itemWidth, 0, t.lineStyle.stroke, !1);
                e.add(n), n.setStyle(t.lineStyle);
                var i = this.getData().getVisual("symbol"), r = this.getData().getVisual("symbolRotate"),
                    o = "none" === i ? "circle" : i, a = .8 * t.itemHeight,
                    s = Sc(o, (t.itemWidth - a) / 2, (t.itemHeight - a) / 2, a, a, t.itemStyle.fill);
                e.add(s), s.setStyle(t.itemStyle);
                var l = "inherit" === t.iconRotate ? r : t.iconRotate || 0;
                return s.rotation = l * Math.PI / 180, s.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), o.indexOf("empty") > -1 && (s.style.stroke = s.style.fill, s.style.fill = "#fff", s.style.lineWidth = 2), e
            }, n.type = "series.line", n.dependencies = ["grid", "polar"], n.defaultOption = {
                zlevel: 0,
                z: 3,
                coordinateSystem: "cartesian2d",
                legendHoverLink: !0,
                clip: !0,
                label: {position: "top"},
                endLabel: {show: !1, valueAnimation: !0, distance: 8},
                lineStyle: {width: 2, type: "solid"},
                emphasis: {scale: !0, lineStyle: {width: "bolder"}},
                step: !1,
                smooth: !1,
                smoothMonotone: null,
                symbol: "emptyCircle",
                symbolSize: 4,
                symbolRotate: null,
                showSymbol: !0,
                showAllSymbol: "auto",
                connectNulls: !1,
                sampling: "none",
                animationEasing: "linear",
                progressive: 0,
                hoverLayerThreshold: 1 / 0
            }, n
        }(Iz), TF = function (t) {
            function n(e, n, i, r) {
                var o = t.call(this) || this;
                return o.updateData(e, n, i, r), o
            }

            return e(n, t), n.prototype._createSymbol = function (t, e, n, i, r) {
                this.removeAll();
                var o = Sc(t, -1, -1, 2, 2, null, r);
                o.attr({
                    z2: 100,
                    culling: !0,
                    scaleX: i[0] / 2,
                    scaleY: i[1] / 2
                }), o.drift = sg, this._symbolType = t, this.add(o)
            }, n.prototype.stopSymbolAnimation = function (t) {
                this.childAt(0).stopAnimation(null, t)
            }, n.prototype.getSymbolPath = function () {
                return this.childAt(0)
            }, n.prototype.highlight = function () {
                aa(this.childAt(0))
            }, n.prototype.downplay = function () {
                sa(this.childAt(0))
            }, n.prototype.setZ = function (t, e) {
                var n = this.childAt(0);
                n.zlevel = t, n.z = e
            }, n.prototype.setDraggable = function (t) {
                var e = this.childAt(0);
                e.draggable = t, e.cursor = t ? "move" : e.cursor
            }, n.prototype.updateData = function (t, e, i, r) {
                this.silent = !1;
                var o = t.getItemVisual(e, "symbol") || "circle", a = t.hostModel, s = n.getSymbolSize(t, e),
                    l = o !== this._symbolType, u = r && r.disableAnimation;
                if (l) {
                    var h = t.getItemVisual(e, "symbolKeepAspect");
                    this._createSymbol(o, t, e, s, h)
                } else {
                    var c = this.childAt(0);
                    c.silent = !1;
                    var p = {scaleX: s[0] / 2, scaleY: s[1] / 2};
                    u ? c.attr(p) : us(c, p, a, e)
                }
                if (this._updateCommon(t, e, s, i, r), l) {
                    var c = this.childAt(0);
                    if (!u) {
                        var p = {scaleX: this._sizeX, scaleY: this._sizeY, style: {opacity: c.style.opacity}};
                        c.scaleX = c.scaleY = 0, c.style.opacity = 0, hs(c, p, a, e)
                    }
                }
                u && this.childAt(0).stopAnimation("remove"), this._seriesModel = a
            }, n.prototype._updateCommon = function (t, e, n, i, r) {
                function o(e) {
                    return C ? t.getName(e) : Zf(t, e)
                }

                var a, s, l, u, c, p, d, f, g = this.childAt(0), y = t.hostModel;
                if (i && (a = i.emphasisItemStyle, s = i.blurItemStyle, l = i.selectItemStyle, u = i.focus, c = i.blurScope, p = i.labelStatesModels, d = i.hoverScale, f = i.cursorStyle), !i || t.hasItemOption) {
                    var v = i && i.itemModel ? i.itemModel : t.getItemModel(e), m = v.getModel("emphasis");
                    a = m.getModel("itemStyle").getItemStyle(), l = v.getModel(["select", "itemStyle"]).getItemStyle(), s = v.getModel(["blur", "itemStyle"]).getItemStyle(), u = m.get("focus"), c = m.get("blurScope"), p = Ps(v), d = m.getShallow("scale"), f = v.getShallow("cursor")
                }
                var x = t.getItemVisual(e, "symbolRotate");
                g.attr("rotation", (x || 0) * Math.PI / 180 || 0);
                var _ = t.getItemVisual(e, "symbolOffset") || 0;
                _ && (M(_) || (_ = [_, _]), g.x = _i(_[0], n[0]), g.y = _i(B(_[1], _[0]) || 0, n[1])), f && g.attr("cursor", f);
                var b = t.getItemVisual(e, "style"), w = b.fill;
                if (g instanceof Wk) {
                    var S = g.style;
                    g.useStyle(h({image: S.image, x: S.x, y: S.y, width: S.width, height: S.height}, b))
                } else g.useStyle(g.__isEmptyBrush ? h({}, b) : b), g.style.decal = null, g.setColor(w, r && r.symbolInnerColor), g.style.strokeNoScale = !0;
                var I = t.getItemVisual(e, "liftZ"), T = this._z2;
                null != I ? null == T && (this._z2 = g.z2, g.z2 += I) : null != T && (g.z2 = T, this._z2 = null);
                var C = r && r.useNameLabel;
                ks(g, p, {
                    labelFetcher: y,
                    labelDataIndex: e,
                    defaultText: o,
                    inheritColor: w,
                    defaultOpacity: b.opacity
                }), this._sizeX = n[0] / 2, this._sizeY = n[1] / 2;
                var A = g.ensureState("emphasis");
                if (A.style = a, g.ensureState("select").style = l, g.ensureState("blur").style = s, d) {
                    var D = Math.max(1.1, 3 / this._sizeY);
                    A.scaleX = this._sizeX * D, A.scaleY = this._sizeY * D
                }
                this.setSymbolScale(1), Sa(this, u, c)
            }, n.prototype.setSymbolScale = function (t) {
                this.scaleX = this.scaleY = t
            }, n.prototype.fadeOut = function (t, e) {
                var n = this.childAt(0), i = this._seriesModel, r = tP(this).dataIndex, o = e && e.animation;
                if (this.silent = n.silent = !0, e && e.fadeLabel) {
                    var a = n.getTextContent();
                    a && cs(a, {style: {opacity: 0}}, i, {
                        dataIndex: r, removeOpt: o, cb: function () {
                            n.removeTextContent()
                        }
                    })
                } else n.removeTextContent();
                cs(n, {style: {opacity: 0}, scaleX: 0, scaleY: 0}, i, {dataIndex: r, cb: t, removeOpt: o})
            }, n.getSymbolSize = function (t, e) {
                var n = t.getItemVisual(e, "symbolSize");
                return M(n) ? n.slice() : [+n, +n]
            }, n
        }(sL), CF = function () {
            function t(t) {
                this.group = new sL, this._SymbolCtor = t || TF
            }

            return t.prototype.updateData = function (t, e) {
                e = ug(e);
                var n = this.group, i = t.hostModel, r = this._data, o = this._SymbolCtor, a = e.disableAnimation,
                    s = hg(t), l = {disableAnimation: a}, u = e.getSymbolPoint || function (e) {
                        return t.getItemLayout(e)
                    };
                r || n.removeAll(), t.diff(r).add(function (i) {
                    var r = u(i);
                    if (lg(t, r, i, e)) {
                        var a = new o(t, i, s, l);
                        a.setPosition(r), t.setItemGraphicEl(i, a), n.add(a)
                    }
                }).update(function (h, c) {
                    var p = r.getItemGraphicEl(c), d = u(h);
                    if (!lg(t, d, h, e)) return void n.remove(p);
                    if (p) {
                        p.updateData(t, h, s, l);
                        var f = {x: d[0], y: d[1]};
                        a ? p.attr(f) : us(p, f, i)
                    } else p = new o(t, h), p.setPosition(d);
                    n.add(p), t.setItemGraphicEl(h, p)
                }).remove(function (t) {
                    var e = r.getItemGraphicEl(t);
                    e && e.fadeOut(function () {
                        n.remove(e)
                    })
                }).execute(), this._getSymbolPoint = u, this._data = t
            }, t.prototype.isPersistent = function () {
                return !0
            }, t.prototype.updateLayout = function () {
                var t = this, e = this._data;
                e && e.eachItemGraphicEl(function (e, n) {
                    var i = t._getSymbolPoint(n);
                    e.setPosition(i), e.markRedraw()
                })
            }, t.prototype.incrementalPrepareUpdate = function (t) {
                this._seriesScope = hg(t), this._data = null, this.group.removeAll()
            }, t.prototype.incrementalUpdate = function (t, e, n) {
                function i(t) {
                    t.isGroup || (t.incremental = !0, t.ensureState("emphasis").hoverLayer = !0)
                }

                n = ug(n);
                for (var r = t.start; r < t.end; r++) {
                    var o = e.getItemLayout(r);
                    if (lg(e, o, r, n)) {
                        var a = new this._SymbolCtor(e, r, this._seriesScope);
                        a.traverse(i), a.setPosition(o), this.group.add(a), e.setItemGraphicEl(r, a)
                    }
                }
            }, t.prototype.remove = function (t) {
                var e = this.group, n = this._data;
                n && t ? n.eachItemGraphicEl(function (t) {
                    t.fadeOut(function () {
                        e.remove(t)
                    })
                }) : e.removeAll()
            }, t
        }(), AF = "undefined" != typeof Float32Array, DF = AF ? Float32Array : Array, LF = Math.min, kF = Math.max,
        PF = function () {
            function t() {
                this.smooth = 0, this.smoothConstraint = !0
            }

            return t
        }(), OF = function (t) {
            function n(e) {
                var n = t.call(this, e) || this;
                return n.type = "ec-polyline", n
            }

            return e(n, t), n.prototype.getDefaultStyle = function () {
                return {stroke: "#000", fill: null}
            }, n.prototype.getDefaultShape = function () {
                return new PF
            }, n.prototype.buildPath = function (t, e) {
                var n = e.points, i = 0, r = n.length / 2;
                if (e.connectNulls) {
                    for (; r > 0 && vg(n[2 * r - 2], n[2 * r - 1]); r--) ;
                    for (; r > i && vg(n[2 * i], n[2 * i + 1]); i++) ;
                }
                for (; r > i;) i += mg(t, n, i, r, r, 1, e.smooth, e.smoothMonotone, e.connectNulls) + 1
            }, n.prototype.getPointOn = function (t, e) {
                this.path || (this.createPathProxy(), this.buildPath(this.path, this.shape));
                for (var n, i, r = this.path, o = r.data, a = Ck.CMD, s = "x" === e, l = [], u = 0; u < o.length;) {
                    var h = o[u++], c = void 0, p = void 0, d = void 0, f = void 0, g = void 0, y = void 0, v = void 0;
                    switch (h) {
                        case a.M:
                            n = o[u++], i = o[u++];
                            break;
                        case a.L:
                            if (c = o[u++], p = o[u++], v = s ? (t - n) / (c - n) : (t - i) / (p - i), 1 >= v && v >= 0) {
                                var m = s ? (p - i) * v + i : (c - n) * v + n;
                                return s ? [t, m] : [m, t]
                            }
                            n = c, i = p;
                            break;
                        case a.C:
                            c = o[u++], p = o[u++], d = o[u++], f = o[u++], g = o[u++], y = o[u++];
                            var x = s ? jr(n, c, d, g, t, l) : jr(i, p, f, y, t, l);
                            if (x > 0) for (var _ = 0; x > _; _++) {
                                var b = l[_];
                                if (1 >= b && b >= 0) {
                                    var m = s ? Zr(i, p, f, y, b) : Zr(n, c, d, g, b);
                                    return s ? [t, m] : [m, t]
                                }
                            }
                            n = g, i = y
                    }
                }
            }, n
        }(Bk), RF = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n
        }(PF), zF = function (t) {
            function n(e) {
                var n = t.call(this, e) || this;
                return n.type = "ec-polygon", n
            }

            return e(n, t), n.prototype.getDefaultShape = function () {
                return new RF
            }, n.prototype.buildPath = function (t, e) {
                var n = e.points, i = e.stackedOnPoints, r = 0, o = n.length / 2, a = e.smoothMonotone;
                if (e.connectNulls) {
                    for (; o > 0 && vg(n[2 * o - 2], n[2 * o - 1]); o--) ;
                    for (; o > r && vg(n[2 * r], n[2 * r + 1]); r++) ;
                }
                for (; o > r;) {
                    var s = mg(t, n, r, o, o, 1, e.smooth, a, e.connectNulls);
                    mg(t, i, r + s - 1, s, o, -1, e.stackedOnSmooth, a, e.connectNulls), r += s + 1, t.closePath()
                }
            }, n
        }(Bk), EF = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.init = function () {
                var t = new sL, e = new CF;
                this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t
            }, n.prototype.render = function (t, e, n) {
                var i = this, r = t.coordinateSystem, o = this.group, a = t.getData(), s = t.getModel("lineStyle"),
                    l = t.getModel("areaStyle"), u = a.getLayout("points") || [], h = "polar" === r.type,
                    p = this._coordSys, d = this._symbolDraw, f = this._polyline, g = this._polygon, y = this._lineGroup,
                    v = t.get("animation"), m = !l.isEmpty(), x = l.get("origin"), _ = cg(r, a, x), b = m && Sg(r, a, _),
                    w = t.get("showSymbol"), S = w && !h && Tg(t, a, r), M = this._data;
                M && M.eachItemGraphicEl(function (t, e) {
                    t.__temp && (o.remove(t), M.setItemGraphicEl(e, null))
                }), w || d.remove(), o.add(y);
                var I, T = h ? !1 : t.get("step");
                r && r.getArea && t.get("clip", !0) && (I = r.getArea(), null != I.width ? (I.x -= .1, I.y -= .1, I.width += .2, I.height += .2) : I.r0 && (I.r0 -= .5, I.r += .5)), this._clipShapeForSymbol = I;
                var C = Ig(a, r) || a.getVisual("style")[a.getVisual("drawType")];
                f && p.type === r.type && T === this._step ? (m && !g ? g = this._newPolygon(u, b) : g && !m && (y.remove(g), g = this._polygon = null), h || this._initOrUpdateEndLabel(t, r, Cl(C)), y.setClipPath(Pg(this, r, !1, t)), w && d.updateData(a, {
                    isIgnore: S,
                    clipShape: I,
                    disableAnimation: !0,
                    getSymbolPoint: function (t) {
                        return [u[2 * t], u[2 * t + 1]]
                    }
                }), xg(this._stackedOnPoints, b) && xg(this._points, u) || (v ? this._doUpdateAnimation(a, b, r, n, T, x) : (T && (u = Mg(u, r, T), b && (b = Mg(b, r, T))), f.setShape({points: u}), g && g.setShape({
                    points: u,
                    stackedOnPoints: b
                })))) : (w && d.updateData(a, {
                    isIgnore: S,
                    clipShape: I,
                    disableAnimation: !0,
                    getSymbolPoint: function (t) {
                        return [u[2 * t], u[2 * t + 1]]
                    }
                }), v && this._initSymbolLabelAnimation(a, r, I), T && (u = Mg(u, r, T), b && (b = Mg(b, r, T))), f = this._newPolyline(u), m && (g = this._newPolygon(u, b)), h || this._initOrUpdateEndLabel(t, r, Cl(C)), y.setClipPath(Pg(this, r, !0, t)));
                var A = t.get(["emphasis", "focus"]), D = t.get(["emphasis", "blurScope"]);
                if (f.useStyle(c(s.getLineStyle(), {
                    fill: "none",
                    stroke: C,
                    lineJoin: "bevel"
                })), Ia(f, t, "lineStyle"), f.style.lineWidth > 0 && "bolder" === t.get(["emphasis", "lineStyle", "width"])) {
                    var L = f.getState("emphasis").style;
                    L.lineWidth = +f.style.lineWidth + 1
                }
                tP(f).seriesIndex = t.seriesIndex, Sa(f, A, D);
                var k = wg(t.get("smooth")), P = t.get("smoothMonotone"), O = t.get("connectNulls");
                if (f.setShape({smooth: k, smoothMonotone: P, connectNulls: O}), g) {
                    var R = a.getCalculationInfo("stackedOnSeries"), z = 0;
                    g.useStyle(c(l.getAreaStyle(), {
                        fill: C,
                        opacity: .7,
                        lineJoin: "bevel",
                        decal: a.getVisual("style").decal
                    })), R && (z = wg(R.get("smooth"))), g.setShape({
                        smooth: k,
                        stackedOnSmooth: z,
                        smoothMonotone: P,
                        connectNulls: O
                    }), Ia(g, t, "areaStyle"), tP(g).seriesIndex = t.seriesIndex, Sa(g, A, D)
                }
                var E = function (t) {
                    i._changePolyState(t)
                };
                a.eachItemGraphicEl(function (t) {
                    t && (t.onHoverStateChange = E)
                }), this._polyline.onHoverStateChange = E, this._data = a, this._coordSys = r, this._stackedOnPoints = b, this._points = u, this._step = T, this._valueOrigin = x
            }, n.prototype.dispose = function () {
            }, n.prototype.highlight = function (t, e, n, i) {
                var r = t.getData(), o = lr(r, i);
                if (this._changePolyState("emphasis"), !(o instanceof Array) && null != o && o >= 0) {
                    var a = r.getLayout("points"), s = r.getItemGraphicEl(o);
                    if (!s) {
                        var l = a[2 * o], u = a[2 * o + 1];
                        if (isNaN(l) || isNaN(u)) return;
                        if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(l, u)) return;
                        var h = t.get("zlevel"), c = t.get("z");
                        s = new TF(r, o), s.x = l, s.y = u, s.setZ(h, c);
                        var p = s.getSymbolPath().getTextContent();
                        p && (p.zlevel = h, p.z = c, p.z2 = this._polyline.z2 + 1), s.__temp = !0, r.setItemGraphicEl(o, s), s.stopSymbolAnimation(!0), this.group.add(s)
                    }
                    s.highlight()
                } else Dz.prototype.highlight.call(this, t, e, n, i)
            }, n.prototype.downplay = function (t, e, n, i) {
                var r = t.getData(), o = lr(r, i);
                if (this._changePolyState("normal"), null != o && o >= 0) {
                    var a = r.getItemGraphicEl(o);
                    a && (a.__temp ? (r.setItemGraphicEl(o, null), this.group.remove(a)) : a.downplay())
                } else Dz.prototype.downplay.call(this, t, e, n, i)
            }, n.prototype._changePolyState = function (t) {
                var e = this._polygon;
                $o(this._polyline, t), e && $o(e, t)
            }, n.prototype._newPolyline = function (t) {
                var e = this._polyline;
                return e && this._lineGroup.remove(e), e = new OF({
                    shape: {points: t},
                    segmentIgnoreThreshold: 2,
                    z2: 10
                }), this._lineGroup.add(e), this._polyline = e, e
            }, n.prototype._newPolygon = function (t, e) {
                var n = this._polygon;
                return n && this._lineGroup.remove(n), n = new zF({
                    shape: {points: t, stackedOnPoints: e},
                    segmentIgnoreThreshold: 2
                }), this._lineGroup.add(n), this._polygon = n, n
            }, n.prototype._initSymbolLabelAnimation = function (t, e, n) {
                var i, r, o = e.getBaseAxis(), a = o.inverse;
                "cartesian2d" === e.type ? (i = o.isHorizontal(), r = !1) : "polar" === e.type && (i = "angle" === o.dim, r = !0);
                var s = t.hostModel, l = s.get("animationDuration");
                "function" == typeof l && (l = l(null));
                var u = s.get("animationDelay") || 0, h = "function" == typeof u ? u(null) : u;
                t.eachItemGraphicEl(function (t, o) {
                    var s = t;
                    if (s) {
                        var c = [t.x, t.y], p = void 0, d = void 0, f = void 0;
                        if (n) if (r) {
                            var g = n, y = e.pointToCoord(c);
                            i ? (p = g.startAngle, d = g.endAngle, f = -y[1] / 180 * Math.PI) : (p = g.r0, d = g.r, f = y[0])
                        } else {
                            var v = n;
                            i ? (p = v.x, d = v.x + v.width, f = t.x) : (p = v.y + v.height, d = v.y, f = t.y)
                        }
                        var m = d === p ? 0 : (f - p) / (d - p);
                        a && (m = 1 - m);
                        var x = "function" == typeof u ? u(o) : l * m + h, _ = s.getSymbolPath(), b = _.getTextContent();
                        s.attr({scaleX: 0, scaleY: 0}), s.animateTo({scaleX: 1, scaleY: 1}, {
                            duration: 200,
                            delay: x
                        }), b && b.animateFrom({style: {opacity: 0}}, {
                            duration: 300,
                            delay: x
                        }), _.disableLabelAnimation = !0
                    }
                })
            }, n.prototype._initOrUpdateEndLabel = function (t, e, n) {
                var i = t.getModel("endLabel");
                if (i.get("show")) {
                    var r = t.getData(), o = this._polyline, a = this._endLabel;
                    a || (a = this._endLabel = new $k({z2: 200}), a.ignoreClip = !0, o.setTextContent(this._endLabel), o.disableLabelAnimation = !0);
                    var s = Dg(r.getLayout("points"));
                    s >= 0 && (ks(o, Ps(t, "endLabel"), {
                        inheritColor: n,
                        labelFetcher: t,
                        labelDataIndex: s,
                        defaultText: function (t, e, n) {
                            return null != n ? Uf(r, n) : Zf(r, t)
                        },
                        enableTextSetter: !0
                    }, Og(i, e)), o.textConfig.position = null)
                } else this._endLabel && (this._polyline.removeTextContent(), this._endLabel = null)
            }, n.prototype._endLabelOnDuring = function (t, e, n, i, r, o, a) {
                var s = this._endLabel, l = this._polyline;
                if (s) {
                    1 > t && null == i.originalX && (i.originalX = s.x, i.originalY = s.y);
                    var u = n.getLayout("points"), h = n.hostModel, c = h.get("connectNulls"), p = o.get("precision"),
                        d = o.get("distance") || 0, f = a.getBaseAxis(), g = f.isHorizontal(), y = f.inverse, v = e.shape,
                        m = y ? g ? v.x : v.y + v.height : g ? v.x + v.width : v.y, x = (g ? d : 0) * (y ? -1 : 1),
                        _ = (g ? 0 : -d) * (y ? -1 : 1), b = g ? "x" : "y", w = kg(u, m, b), S = w.range, M = S[1] - S[0],
                        I = void 0;
                    if (M >= 1) {
                        if (M > 1 && !c) {
                            var T = Lg(u, S[0]);
                            s.attr({x: T[0] + x, y: T[1] + _}), r && (I = h.getRawValue(S[0]))
                        } else {
                            var T = l.getPointOn(m, b);
                            T && s.attr({x: T[0] + x, y: T[1] + _});
                            var C = h.getRawValue(S[0]), A = h.getRawValue(S[1]);
                            r && (I = vr(n, p, C, A, w.t))
                        }
                        i.lastFrameIndex = S[0]
                    } else {
                        var D = 1 === t || i.lastFrameIndex > 0 ? S[0] : 0, T = Lg(u, D);
                        r && (I = h.getRawValue(D)), s.attr({x: T[0] + x, y: T[1] + _})
                    }
                    r && DO(s).setLabelText(I)
                }
            }, n.prototype._doUpdateAnimation = function (t, e, n, i, r, o) {
                var a = this._polyline, s = this._polygon, l = t.hostModel,
                    u = yg(this._data, t, this._stackedOnPoints, e, this._coordSys, n, this._valueOrigin, o), h = u.current,
                    c = u.stackedOnCurrent, p = u.next, d = u.stackedOnNext;
                if (r && (h = Mg(u.current, n, r), c = Mg(u.stackedOnCurrent, n, r), p = Mg(u.next, n, r), d = Mg(u.stackedOnNext, n, r)), bg(h, p) > 3e3 || s && bg(c, d) > 3e3) return a.setShape({points: p}), void (s && s.setShape({
                    points: p,
                    stackedOnPoints: d
                }));
                a.shape.__points = u.current, a.shape.points = h;
                var f = {shape: {points: p}};
                u.current !== h && (f.shape.__points = u.next), a.stopAnimation(), us(a, f, l), s && (s.setShape({
                    points: h,
                    stackedOnPoints: c
                }), s.stopAnimation(), us(s, {shape: {stackedOnPoints: d}}, l), a.shape.points !== s.shape.points && (s.shape.points = a.shape.points));
                for (var g = [], y = u.status, v = 0; v < y.length; v++) {
                    var m = y[v].cmd;
                    if ("=" === m) {
                        var x = t.getItemGraphicEl(y[v].idx1);
                        x && g.push({el: x, ptIdx: v})
                    }
                }
                a.animators && a.animators.length && a.animators[0].during(function () {
                    s && s.dirtyShape();
                    for (var t = a.shape.__points, e = 0; e < g.length; e++) {
                        var n = g[e].el, i = 2 * g[e].ptIdx;
                        n.x = t[i], n.y = t[i + 1], n.markRedraw()
                    }
                })
            }, n.prototype.remove = function () {
                var t = this.group, e = this._data;
                this._lineGroup.removeAll(), this._symbolDraw.remove(!0), e && e.eachItemGraphicEl(function (n, i) {
                    n.__temp && (t.remove(n), e.setItemGraphicEl(i, null))
                }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null
            }, n.type = "line", n
        }(Dz);
    df(zg);
    var NF = 2 * Math.PI, BF = Math.PI / 180, VF = Math.PI / 180, FF = function (t) {
        function n(e, n, i) {
            var r = t.call(this) || this;
            r.z2 = 2;
            var o = new $k;
            return r.setTextContent(o), r.updateData(e, n, i, !0), r
        }

        return e(n, t), n.prototype.updateData = function (t, e, n, i) {
            var r = this, o = t.hostModel, a = t.getItemModel(e), s = a.getModel("emphasis"), l = t.getItemLayout(e),
                u = h(Wg(a.getModel("itemStyle"), l) || {}, l);
            if (isNaN(u.startAngle)) return void r.setShape(u);
            if (i) {
                r.setShape(u);
                var c = o.getShallow("animationType");
                "scale" === c ? (r.shape.r = l.r0, hs(r, {shape: {r: l.r}}, o, e)) : null != n ? (r.setShape({
                    startAngle: n,
                    endAngle: n
                }), hs(r, {
                    shape: {
                        startAngle: l.startAngle,
                        endAngle: l.endAngle
                    }
                }, o, e)) : (r.shape.endAngle = l.startAngle, us(r, {shape: {endAngle: l.endAngle}}, o, e))
            } else us(r, {shape: u}, o, e);
            r.useStyle(t.getItemVisual(e, "style")), Ia(r, a);
            var p = (l.startAngle + l.endAngle) / 2, d = o.get("selectedOffset"), f = Math.cos(p) * d,
                g = Math.sin(p) * d, y = a.getShallow("cursor");
            y && r.attr("cursor", y), this._updateLabel(o, t, e), r.ensureState("emphasis").shape = nA({r: l.r + (s.get("scale") ? s.get("scaleSize") || 0 : 0)}, Wg(s.getModel("itemStyle"), l)), h(r.ensureState("select"), {
                x: f,
                y: g,
                shape: Wg(a.getModel(["select", "itemStyle"]), l)
            }), h(r.ensureState("blur"), {shape: Wg(a.getModel(["blur", "itemStyle"]), l)});
            var v = r.getTextGuideLine(), m = r.getTextContent();
            v && h(v.ensureState("select"), {x: f, y: g}), h(m.ensureState("select"), {
                x: f,
                y: g
            }), Sa(this, s.get("focus"), s.get("blurScope"))
        }, n.prototype._updateLabel = function (t, e, n) {
            var i = this, r = e.getItemModel(n), o = r.getModel("labelLine"), a = e.getItemVisual(n, "style"),
                s = a && a.fill, l = a && a.opacity;
            ks(i, Ps(r), {
                labelFetcher: e.hostModel,
                labelDataIndex: n,
                inheritColor: s,
                defaultOpacity: l,
                defaultText: t.getFormattedLabel(n, "normal") || e.getName(n)
            });
            var u = i.getTextContent();
            i.setTextConfig({position: null, rotation: null}), u.attr({z2: 10});
            var h = t.get(["label", "position"]);
            if ("outside" !== h && "outer" !== h) i.removeTextGuideLine(); else {
                var c = this.getTextGuideLine();
                c || (c = new JP, this.setTextGuideLine(c)), lc(this, uc(r), {
                    stroke: s,
                    opacity: V(o.get(["lineStyle", "opacity"]), l, 1)
                })
            }
        }, n
    }(ZP), GF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.ignoreLabelLineUpdate = !0, e
        }

        return e(n, t), n.prototype.init = function () {
            var t = new sL;
            this._sectorGroup = t
        }, n.prototype.render = function (t) {
            var e, n = t.getData(), i = this._data, r = this.group;
            if (!i && n.count() > 0) {
                for (var o = n.getItemLayout(0), a = 1; isNaN(o && o.startAngle) && a < n.count(); ++a) o = n.getItemLayout(a);
                o && (e = o.startAngle)
            }
            n.diff(i).add(function (t) {
                var i = new FF(n, t, e);
                n.setItemGraphicEl(t, i), r.add(i)
            }).update(function (t, o) {
                var a = i.getItemGraphicEl(o);
                a.updateData(n, t, e), a.off("click"), r.add(a), n.setItemGraphicEl(t, a)
            }).remove(function (e) {
                var n = i.getItemGraphicEl(e);
                ds(n, t, e)
            }).execute(), Hg(t), "expansion" !== t.get("animationTypeUpdate") && (this._data = n)
        }, n.prototype.dispose = function () {
        }, n.prototype.containPoint = function (t, e) {
            var n = e.getData(), i = n.getItemLayout(0);
            if (i) {
                var r = t[0] - i.cx, o = t[1] - i.cy, a = Math.sqrt(r * r + o * o);
                return a <= i.r && a >= i.r0
            }
        }, n.type = "pie", n
    }(Dz), HF = function () {
        function t(t, e) {
            this._getDataWithEncodedVisual = t, this._getRawData = e
        }

        return t.prototype.getAllNames = function () {
            var t = this._getRawData();
            return t.mapArray(t.getName)
        }, t.prototype.containName = function (t) {
            var e = this._getRawData();
            return e.indexOfName(t) >= 0
        }, t.prototype.indexOfName = function (t) {
            var e = this._getDataWithEncodedVisual();
            return e.indexOfName(t)
        }, t.prototype.getItemVisual = function (t, e) {
            var n = this._getDataWithEncodedVisual();
            return n.getItemVisual(t, e)
        }, t
    }(), WF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.useColorPaletteOnData = !0, e
        }

        return e(n, t), n.prototype.init = function (e) {
            t.prototype.init.apply(this, arguments), this.legendVisualProvider = new HF(xA(this.getData, this), xA(this.getRawData, this)), this._defaultLabelLine(e)
        }, n.prototype.mergeOption = function () {
            t.prototype.mergeOption.apply(this, arguments)
        }, n.prototype.getInitialData = function () {
            return Xg(this, {coordDimensions: ["value"], encodeDefaulter: S(Gl, this)})
        }, n.prototype.getDataParams = function (e) {
            var n = this.getData(), i = t.prototype.getDataParams.call(this, e), r = [];
            return n.each(n.mapDimension("value"), function (t) {
                r.push(t)
            }), i.percent = Ti(r, e, n.hostModel.get("percentPrecision")), i.$vars.push("percent"), i
        }, n.prototype._defaultLabelLine = function (t) {
            Wi(t, "labelLine", ["show"]);
            var e = t.labelLine, n = t.emphasis.labelLine;
            e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show
        }, n.type = "series.pie", n.defaultOption = {
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            center: ["50%", "50%"],
            radius: [0, "75%"],
            clockwise: !0,
            startAngle: 90,
            minAngle: 0,
            minShowLabelAngle: 0,
            selectedOffset: 10,
            percentPrecision: 2,
            stillShowZeroSum: !0,
            left: 0,
            top: 0,
            right: 0,
            bottom: 0,
            width: null,
            height: null,
            label: {
                rotate: 0,
                show: !0,
                overflow: "truncate",
                position: "outer",
                alignTo: "none",
                edgeDistance: "25%",
                bleedMargin: 10,
                distanceToLabelLine: 5
            },
            labelLine: {
                show: !0,
                length: 15,
                length2: 15,
                smooth: !1,
                minTurnAngle: 90,
                maxSurfaceAngle: 90,
                lineStyle: {width: 1, type: "solid"}
            },
            itemStyle: {borderWidth: 1},
            labelLayout: {hideOverlap: !0},
            emphasis: {scale: !0, scaleSize: 5},
            avoidLabelOverlap: !0,
            animationType: "expansion",
            animationDuration: 1e3,
            animationTypeUpdate: "transition",
            animationEasingUpdate: "cubicInOut",
            animationDurationUpdate: 500,
            animationEasing: "cubicInOut"
        }, n
    }(Iz);
    df(Yg);
    var XF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.hasSymbolVisual = !0, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return gd(this.getSource(), this, {useEncodeDefaulter: !0})
        }, n.prototype.getProgressive = function () {
            var t = this.option.progressive;
            return null == t ? this.option.large ? 5e3 : this.get("progressive") : t
        }, n.prototype.getProgressiveThreshold = function () {
            var t = this.option.progressiveThreshold;
            return null == t ? this.option.large ? 1e4 : this.get("progressiveThreshold") : t
        }, n.prototype.brushSelector = function (t, e, n) {
            return n.point(e.getItemLayout(t))
        }, n.type = "series.scatter", n.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], n.defaultOption = {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            symbolSize: 10,
            large: !1,
            largeThreshold: 2e3,
            itemStyle: {opacity: .8},
            emphasis: {scale: !0},
            clip: !0,
            select: {itemStyle: {borderColor: "#212121"}}
        }, n
    }(Iz), YF = 4, ZF = function () {
        function t() {
        }

        return t
    }(), UF = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new ZF
        }, n.prototype.buildPath = function (t, e) {
            var n = e.points, i = e.size, r = this.symbolProxy, o = r.shape, a = t.getContext ? t.getContext() : t,
                s = a && i[0] < YF;
            if (s) return void (this._ctx = a);
            this._ctx = null;
            for (var l = 0; l < n.length;) {
                var u = n[l++], h = n[l++];
                isNaN(u) || isNaN(h) || (!this.softClipShape || this.softClipShape.contain(u, h)) && (o.x = u - i[0] / 2, o.y = h - i[1] / 2, o.width = i[0], o.height = i[1], r.buildPath(t, o, !0))
            }
        }, n.prototype.afterBrush = function () {
            var t = this.shape, e = t.points, n = t.size, i = this._ctx;
            if (i) for (var r = 0; r < e.length;) {
                var o = e[r++], a = e[r++];
                isNaN(o) || isNaN(a) || (!this.softClipShape || this.softClipShape.contain(o, a)) && i.fillRect(o - n[0] / 2, a - n[1] / 2, n[0], n[1])
            }
        }, n.prototype.findDataIndex = function (t, e) {
            for (var n = this.shape, i = n.points, r = n.size, o = Math.max(r[0], 4), a = Math.max(r[1], 4), s = i.length / 2 - 1; s >= 0; s--) {
                var l = 2 * s, u = i[l] - o / 2, h = i[l + 1] - a / 2;
                if (t >= u && e >= h && u + o >= t && h + a >= e) return s
            }
            return -1
        }, n
    }(Bk), jF = function () {
        function t() {
            this.group = new sL
        }

        return t.prototype.isPersistent = function () {
            return !this._incremental
        }, t.prototype.updateData = function (t, e) {
            this.group.removeAll();
            var n = new UF({rectHover: !0, cursor: "default"});
            n.setShape({points: t.getLayout("points")}), this._setCommon(n, t, !1, e), this.group.add(n), this._incremental = null
        }, t.prototype.updateLayout = function (t) {
            if (!this._incremental) {
                var e = t.getLayout("points");
                this.group.eachChild(function (t) {
                    if (null != t.startIndex) {
                        var n = 2 * (t.endIndex - t.startIndex), i = 4 * t.startIndex * 2;
                        e = new Float32Array(e.buffer, i, n)
                    }
                    t.setShape("points", e)
                })
            }
        }, t.prototype.incrementalPrepareUpdate = function (t) {
            this.group.removeAll(), this._clearIncremental(), t.count() > 2e6 ? (this._incremental || (this._incremental = new vO({silent: !0})), this.group.add(this._incremental)) : this._incremental = null
        }, t.prototype.incrementalUpdate = function (t, e, n) {
            var i;
            this._incremental ? (i = new UF, this._incremental.addDisplayable(i, !0)) : (i = new UF({
                rectHover: !0,
                cursor: "default",
                startIndex: t.start,
                endIndex: t.end
            }), i.incremental = !0, this.group.add(i)), i.setShape({points: e.getLayout("points")}), this._setCommon(i, e, !!this._incremental, n)
        }, t.prototype._setCommon = function (t, e, n, i) {
            var r = e.hostModel;
            i = i || {};
            var o = e.getVisual("symbolSize");
            t.setShape("size", o instanceof Array ? o : [o, o]), t.softClipShape = i.clipShape || null, t.symbolProxy = Sc(e.getVisual("symbol"), 0, 0, 0, 0), t.setColor = t.symbolProxy.setColor;
            var a = t.shape.size[0] < YF;
            t.useStyle(r.getModel("itemStyle").getItemStyle(a ? ["color", "shadowBlur", "shadowColor"] : ["color"]));
            var s = e.getVisual("style"), l = s && s.fill;
            if (l && t.setColor(l), !n) {
                var u = tP(t);
                u.seriesIndex = r.seriesIndex, t.on("mousemove", function (e) {
                    u.dataIndex = null;
                    var n = t.findDataIndex(e.offsetX, e.offsetY);
                    n >= 0 && (u.dataIndex = n + (t.startIndex || 0))
                })
            }
        }, t.prototype.remove = function () {
            this._clearIncremental(), this._incremental = null, this.group.removeAll()
        }, t.prototype._clearIncremental = function () {
            var t = this._incremental;
            t && t.clearDisplaybles()
        }, t
    }(), qF = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            var e = t.getData(), n = this._updateSymbolDraw(e, t);
            n.updateData(e, {clipShape: this._getClipShape(t)}), this._finished = !0
        }, n.prototype.incrementalPrepareRender = function (t) {
            var e = t.getData(), n = this._updateSymbolDraw(e, t);
            n.incrementalPrepareUpdate(e), this._finished = !1
        }, n.prototype.incrementalRender = function (t, e) {
            this._symbolDraw.incrementalUpdate(t, e.getData(), {clipShape: this._getClipShape(e)}), this._finished = t.end === e.getData().count()
        }, n.prototype.updateTransform = function (t, e, n) {
            var i = t.getData();
            if (this.group.dirty(), !this._finished || i.count() > 1e4 || !this._symbolDraw.isPersistent()) return {update: !0};
            var r = Rg("").reset(t, e, n);
            r.progress && r.progress({start: 0, end: i.count(), count: i.count()}, i), this._symbolDraw.updateLayout(i)
        }, n.prototype._getClipShape = function (t) {
            var e = t.coordinateSystem, n = e && e.getArea && e.getArea();
            return t.get("clip", !0) ? n : null
        }, n.prototype._updateSymbolDraw = function (t, e) {
            var n = this._symbolDraw, i = e.pipelineContext, r = i.large;
            return n && r === this._isLargeDraw || (n && n.remove(), n = this._symbolDraw = r ? new jF : new CF, this._isLargeDraw = r, this.group.removeAll()), this.group.add(n.group), n
        }, n.prototype.remove = function () {
            this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null
        }, n.prototype.dispose = function () {
        }, n.type = "scatter", n
    }(Dz), KF = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.type = "grid", n.dependencies = ["xAxis", "yAxis"], n.layoutMode = "box", n.defaultOption = {
            show: !1,
            zlevel: 0,
            z: 0,
            left: "10%",
            top: 60,
            right: "10%",
            bottom: 70,
            containLabel: !1,
            backgroundColor: "rgba(0,0,0,0)",
            borderWidth: 1,
            borderColor: "#ccc"
        }, n
    }(gR), $F = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.getCoordSysModel = function () {
            return this.getReferringComponents("grid", wL).models[0]
        }, n.type = "cartesian2dAxis", n
    }(gR);
    f($F, HV);
    var JF = {
            show: !0,
            zlevel: 0,
            z: 0,
            inverse: !1,
            name: "",
            nameLocation: "end",
            nameRotate: null,
            nameTruncate: {maxWidth: null, ellipsis: "...", placeholder: "."},
            nameTextStyle: {},
            nameGap: 15,
            silent: !1,
            triggerEvent: !1,
            tooltip: {show: !1},
            axisPointer: {},
            axisLine: {
                show: !0,
                onZero: !0,
                onZeroAxisIndex: null,
                lineStyle: {color: "#6E7079", width: 1, type: "solid"},
                symbol: ["none", "none"],
                symbolSize: [10, 15]
            },
            axisTick: {show: !0, inside: !1, length: 5, lineStyle: {width: 1}},
            axisLabel: {show: !0, inside: !1, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12},
            splitLine: {show: !0, lineStyle: {color: ["#E0E6F1"], width: 1, type: "solid"}},
            splitArea: {show: !1, areaStyle: {color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]}}
        }, QF = l({
            boundaryGap: !0,
            deduplication: null,
            splitLine: {show: !1},
            axisTick: {alignWithLabel: !1, interval: "auto"},
            axisLabel: {interval: "auto"}
        }, JF), tG = l({
            boundaryGap: [0, 0],
            axisLine: {show: "auto"},
            axisTick: {show: "auto"},
            splitNumber: 5,
            minorTick: {show: !1, splitNumber: 5, length: 3, lineStyle: {}},
            minorSplitLine: {show: !1, lineStyle: {color: "#F4F7FD", width: 1}}
        }, JF), eG = l({
            scale: !0,
            splitNumber: 6,
            axisLabel: {showMinLabel: !1, showMaxLabel: !1, rich: {primary: {fontWeight: "bold"}}},
            splitLine: {show: !1}
        }, tG), nG = c({scale: !0, logBase: 10}, tG), iG = {category: QF, value: tG, time: eG, log: nG},
        rG = {value: 1, category: 1, time: 1, log: 1}, oG = function () {
            function t(t) {
                this.type = "cartesian", this._dimList = [], this._axes = {}, this.name = t || ""
            }

            return t.prototype.getAxis = function (t) {
                return this._axes[t]
            }, t.prototype.getAxes = function () {
                return v(this._dimList, function (t) {
                    return this._axes[t]
                }, this)
            }, t.prototype.getAxesByScale = function (t) {
                return t = t.toLowerCase(), x(this.getAxes(), function (e) {
                    return e.scale.type === t
                })
            }, t.prototype.addAxis = function (t) {
                var e = t.dim;
                this._axes[e] = t, this._dimList.push(e)
            }, t
        }(), aG = ["x", "y"], sG = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "cartesian2d", e.dimensions = aG, e
            }

            return e(n, t), n.prototype.calcAffineTransform = function () {
                this._transform = this._invTransform = null;
                var t = this.getAxis("x").scale, e = this.getAxis("y").scale;
                if (jg(t) && jg(e)) {
                    var n = t.getExtent(), i = e.getExtent(), r = this.dataToPoint([n[0], i[0]]),
                        o = this.dataToPoint([n[1], i[1]]), a = n[1] - n[0], s = i[1] - i[0];
                    if (a && s) {
                        var l = (o[0] - r[0]) / a, u = (o[1] - r[1]) / s, h = r[0] - n[0] * l, c = r[1] - i[0] * u,
                            p = this._transform = [l, 0, 0, u, h, c];
                        this._invTransform = jn([], p)
                    }
                }
            }, n.prototype.getBaseAxis = function () {
                return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x")
            }, n.prototype.containPoint = function (t) {
                var e = this.getAxis("x"), n = this.getAxis("y");
                return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1]))
            }, n.prototype.containData = function (t) {
                return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1])
            }, n.prototype.dataToPoint = function (t, e, n) {
                n = n || [];
                var i = t[0], r = t[1];
                if (this._transform && null != i && isFinite(i) && null != r && isFinite(r)) return ge(n, t, this._transform);
                var o = this.getAxis("x"), a = this.getAxis("y");
                return n[0] = o.toGlobalCoord(o.dataToCoord(i, e)), n[1] = a.toGlobalCoord(a.dataToCoord(r, e)), n
            }, n.prototype.clampData = function (t, e) {
                var n = this.getAxis("x").scale, i = this.getAxis("y").scale, r = n.getExtent(), o = i.getExtent(),
                    a = n.parse(t[0]), s = i.parse(t[1]);
                return e = e || [], e[0] = Math.min(Math.max(Math.min(r[0], r[1]), a), Math.max(r[0], r[1])), e[1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), e
            }, n.prototype.pointToData = function (t, e) {
                var n = [];
                if (this._invTransform) return ge(n, t, this._invTransform);
                var i = this.getAxis("x"), r = this.getAxis("y");
                return n[0] = i.coordToData(i.toLocalCoord(t[0]), e), n[1] = r.coordToData(r.toLocalCoord(t[1]), e), n
            }, n.prototype.getOtherAxis = function (t) {
                return this.getAxis("x" === t.dim ? "y" : "x")
            }, n.prototype.getArea = function () {
                var t = this.getAxis("x").getGlobalExtent(), e = this.getAxis("y").getGlobalExtent(),
                    n = Math.min(t[0], t[1]), i = Math.min(e[0], e[1]), r = Math.max(t[0], t[1]) - n,
                    o = Math.max(e[0], e[1]) - i;
                return new $D(n, i, r, o)
            }, n
        }(oG), lG = function (t) {
            function n(e, n, i, r, o) {
                var a = t.call(this, e, n, i) || this;
                return a.index = 0, a.type = r || "value", a.position = o || "bottom", a
            }

            return e(n, t), n.prototype.isHorizontal = function () {
                var t = this.position;
                return "top" === t || "bottom" === t
            }, n.prototype.getGlobalExtent = function (t) {
                var e = this.getExtent();
                return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), e
            }, n.prototype.pointToData = function (t, e) {
                return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e)
            }, n.prototype.setCategorySortInfo = function (t) {
                return "category" !== this.type ? !1 : (this.model.option.categorySortInfo = t, void this.scale.setSortInfo(t))
            }, n
        }(tF), uG = function () {
            function t(t, e, n) {
                this.type = "grid", this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this.axisPointerEnabled = !0, this.dimensions = aG, this._initCartesian(t, e, n), this.model = t
            }

            return t.prototype.getRect = function () {
                return this._rect
            }, t.prototype.update = function (t, e) {
                var n = this._axesMap;
                this._updateScale(t, this.model), y(n.x, function (t) {
                    $d(t.scale, t.model)
                }), y(n.y, function (t) {
                    $d(t.scale, t.model)
                });
                var i = {};
                y(n.x, function (t) {
                    Qg(n, "y", t, i)
                }), y(n.y, function (t) {
                    Qg(n, "x", t, i)
                }), this.resize(this.model, e)
            }, t.prototype.resize = function (t, e, n) {
                function i() {
                    y(s, function (t) {
                        var e = t.isHorizontal(), n = e ? [0, a.width] : [0, a.height], i = t.inverse ? 1 : 0;
                        t.setExtent(n[i], n[1 - i]), ey(t, e ? a.x : a.y)
                    })
                }

                var r = t.getBoxLayoutParams(), o = !n && t.get("containLabel"),
                    a = kl(r, {width: e.getWidth(), height: e.getHeight()});
                this._rect = a;
                var s = this._axesList;
                i(), o && (y(s, function (t) {
                    if (!t.model.get(["axisLabel", "inside"])) {
                        var e = nf(t);
                        if (e) {
                            var n = t.isHorizontal() ? "height" : "width", i = t.model.get(["axisLabel", "margin"]);
                            a[n] -= e[n] + i, "top" === t.position ? a.y += e.height + i : "left" === t.position && (a.x += e.width + i)
                        }
                    }
                }), i()), y(this._coordsList, function (t) {
                    t.calcAffineTransform()
                })
            }, t.prototype.getAxis = function (t, e) {
                var n = this._axesMap[t];
                return null != n ? n[e || 0] : void 0
            }, t.prototype.getAxes = function () {
                return this._axesList.slice()
            }, t.prototype.getCartesian = function (t, e) {
                if (null != t && null != e) {
                    var n = "x" + t + "y" + e;
                    return this._coordsMap[n]
                }
                D(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
                for (var i = 0, r = this._coordsList; i < r.length; i++) if (r[i].getAxis("x").index === t || r[i].getAxis("y").index === e) return r[i]
            }, t.prototype.getCartesians = function () {
                return this._coordsList.slice()
            }, t.prototype.convertToPixel = function (t, e, n) {
                var i = this._findConvertTarget(e);
                return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null
            }, t.prototype.convertFromPixel = function (t, e, n) {
                var i = this._findConvertTarget(e);
                return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null
            }, t.prototype._findConvertTarget = function (t) {
                var e, n, i = t.seriesModel, r = t.xAxisModel || i && i.getReferringComponents("xAxis", wL).models[0],
                    o = t.yAxisModel || i && i.getReferringComponents("yAxis", wL).models[0], a = t.gridModel,
                    s = this._coordsList;
                if (i) e = i.coordinateSystem, p(s, e) < 0 && (e = null); else if (r && o) e = this.getCartesian(r.componentIndex, o.componentIndex); else if (r) n = this.getAxis("x", r.componentIndex); else if (o) n = this.getAxis("y", o.componentIndex); else if (a) {
                    var l = a.coordinateSystem;
                    l === this && (e = this._coordsList[0])
                }
                return {cartesian: e, axis: n}
            }, t.prototype.containPoint = function (t) {
                var e = this._coordsList[0];
                return e ? e.containPoint(t) : void 0
            }, t.prototype._initCartesian = function (t, e) {
                function n(e) {
                    return function (n, i) {
                        if (Jg(n, t)) {
                            var l = n.get("position");
                            "x" === e ? "top" !== l && "bottom" !== l && (l = o.bottom ? "top" : "bottom") : "left" !== l && "right" !== l && (l = o.left ? "right" : "left"), o[l] = !0;
                            var u = new lG(e, Jd(n), [0, 0], n.get("type"), l), h = "category" === u.type;
                            u.onBand = h && n.get("boundaryGap"), u.inverse = n.get("inverse"), n.axis = u, u.model = n, u.grid = r, u.index = i, r._axesList.push(u), a[e][i] = u, s[e]++
                        }
                    }
                }

                var i = this, r = this, o = {left: !1, right: !1, top: !1, bottom: !1}, a = {x: {}, y: {}},
                    s = {x: 0, y: 0};
                return e.eachComponent("xAxis", n("x"), this), e.eachComponent("yAxis", n("y"), this), s.x && s.y ? (this._axesMap = a, void y(a.x, function (e, n) {
                    y(a.y, function (r, o) {
                        var a = "x" + n + "y" + o, s = new sG(a);
                        s.master = i, s.model = t, i._coordsMap[a] = s, i._coordsList.push(s), s.addAxis(e), s.addAxis(r)
                    })
                })) : (this._axesMap = {}, void (this._axesList = []))
            }, t.prototype._updateScale = function (t, e) {
                function n(t, e) {
                    y(sf(t, e.dim), function (n) {
                        e.scale.unionExtentFromData(t, n)
                    })
                }

                y(this._axesList, function (t) {
                    if (t.scale.setExtent(1 / 0, -1 / 0), "category" === t.type) {
                        var e = t.model.get("categorySortInfo");
                        t.scale.setSortInfo(e)
                    }
                }), t.eachSeries(function (t) {
                    if (Kg(t)) {
                        var i = $g(t), r = i.xAxisModel, o = i.yAxisModel;
                        if (!Jg(r, e) || !Jg(o, e)) return;
                        var a = this.getCartesian(r.componentIndex, o.componentIndex), s = t.getData(), l = a.getAxis("x"),
                            u = a.getAxis("y");
                        "list" === s.type && (n(s, l), n(s, u))
                    }
                }, this)
            }, t.prototype.getTooltipAxes = function (t) {
                var e = [], n = [];
                return y(this.getCartesians(), function (i) {
                    var r = null != t && "auto" !== t ? i.getAxis(t) : i.getBaseAxis(), o = i.getOtherAxis(r);
                    p(e, r) < 0 && e.push(r), p(n, o) < 0 && n.push(o)
                }), {baseAxes: e, otherAxes: n}
            }, t.create = function (e, n) {
                var i = [];
                return e.eachComponent("grid", function (r, o) {
                    var a = new t(r, e, n);
                    a.name = "grid_" + o, a.resize(r, n, !0), r.coordinateSystem = a, i.push(a)
                }), e.eachSeries(function (t) {
                    if (Kg(t)) {
                        var e = $g(t), n = e.xAxisModel, i = e.yAxisModel, r = n.getCoordSysModel(), o = r.coordinateSystem;
                        t.coordinateSystem = o.getCartesian(n.componentIndex, i.componentIndex)
                    }
                }), i
            }, t.dimensions = aG, t
        }(), hG = Math.PI, cG = function () {
            function t(t, e) {
                this.group = new sL, this.opt = e, this.axisModel = t, c(e, {
                    labelOffset: 0,
                    nameDirection: 1,
                    tickDirection: 1,
                    labelDirection: 1,
                    silent: !0,
                    handleAutoShown: function () {
                        return !0
                    }
                });
                var n = new sL({x: e.position[0], y: e.position[1], rotation: e.rotation});
                n.updateTransform(), this._transformGroup = n
            }

            return t.prototype.hasBuilder = function (t) {
                return !!pG[t]
            }, t.prototype.add = function (t) {
                pG[t](this.opt, this.axisModel, this.group, this._transformGroup)
            }, t.prototype.getGroup = function () {
                return this.group
            }, t.innerTextLayout = function (t, e, n) {
                var i, r, o = Ai(e - t);
                return Di(o) ? (r = n > 0 ? "top" : "bottom", i = "center") : Di(o - hG) ? (r = n > 0 ? "bottom" : "top", i = "center") : (r = "middle", i = o > 0 && hG > o ? n > 0 ? "right" : "left" : n > 0 ? "left" : "right"), {
                    rotation: o,
                    textAlign: i,
                    textVerticalAlign: r
                }
            }, t.makeAxisEventDataBase = function (t) {
                var e = {componentType: t.mainType, componentIndex: t.componentIndex};
                return e[t.mainType + "Index"] = t.componentIndex, e
            }, t.isLabelSilent = function (t) {
                var e = t.get("tooltip");
                return t.get("silent") || !(t.get("triggerEvent") || e && e.show)
            }, t
        }(), pG = {
            axisLine: function (t, e, n, i) {
                var r = e.get(["axisLine", "show"]);
                if ("auto" === r && t.handleAutoShown && (r = t.handleAutoShown("axisLine")), r) {
                    var o = e.axis.getExtent(), a = i.transform, s = [o[0], 0], l = [o[1], 0];
                    a && (ge(s, s, a), ge(l, l, a));
                    var u = h({lineCap: "round"}, e.getModel(["axisLine", "lineStyle"]).getLineStyle()), c = new eO({
                        subPixelOptimize: !0,
                        shape: {x1: s[0], y1: s[1], x2: l[0], y2: l[1]},
                        style: u,
                        strokeContainThreshold: t.strokeContainThreshold || 5,
                        silent: !0,
                        z2: 1
                    });
                    c.anid = "line", n.add(c);
                    var p = e.get(["axisLine", "symbol"]), d = e.get(["axisLine", "symbolSize"]),
                        f = e.get(["axisLine", "symbolOffset"]) || 0;
                    if ("number" == typeof f && (f = [f, f]), null != p) {
                        "string" == typeof p && (p = [p, p]), ("string" == typeof d || "number" == typeof d) && (d = [d, d]);
                        var g = d[0], v = d[1];
                        y([{rotate: t.rotation + Math.PI / 2, offset: f[0], r: 0}, {
                            rotate: t.rotation - Math.PI / 2,
                            offset: f[1],
                            r: Math.sqrt((s[0] - l[0]) * (s[0] - l[0]) + (s[1] - l[1]) * (s[1] - l[1]))
                        }], function (e, i) {
                            if ("none" !== p[i] && null != p[i]) {
                                var r = Sc(p[i], -g / 2, -v / 2, g, v, u.stroke, !0), o = e.r + e.offset;
                                r.attr({
                                    rotation: e.rotate,
                                    x: s[0] + o * Math.cos(t.rotation),
                                    y: s[1] - o * Math.sin(t.rotation),
                                    silent: !0,
                                    z2: 11
                                }), n.add(r)
                            }
                        })
                    }
                }
            }, axisTickLabel: function (t, e, n, i) {
                var r = ly(n, i, e, t), o = hy(n, i, e, t);
                iy(e, o, r), uy(n, i, e, t.tickDirection)
            }, axisName: function (t, e, n, i) {
                var r = N(t.axisName, e.get("name"));
                if (r) {
                    var o, a = e.get("nameLocation"), s = t.nameDirection, l = e.getModel("nameTextStyle"),
                        u = e.get("nameGap") || 0, h = e.axis.getExtent(), c = h[0] > h[1] ? -1 : 1,
                        p = ["start" === a ? h[0] - c * u : "end" === a ? h[1] + c * u : (h[0] + h[1]) / 2, ay(a) ? t.labelOffset + s * u : 0],
                        d = e.get("nameRotate");
                    null != d && (d = d * hG / 180);
                    var f;
                    ay(a) ? o = cG.innerTextLayout(t.rotation, null != d ? d : t.rotation, s) : (o = ny(t.rotation, a, d || 0, h), f = t.axisNameAvailableWidth, null != f && (f = Math.abs(f / Math.sin(o.rotation)), !isFinite(f) && (f = null)));
                    var g = l.getFont(), y = e.get("nameTruncate", !0) || {}, v = y.ellipsis,
                        m = N(t.nameTruncateMaxWidth, y.maxWidth, f), x = new $k({
                            x: p[0],
                            y: p[1],
                            rotation: o.rotation,
                            silent: cG.isLabelSilent(e),
                            style: Os(l, {
                                text: r,
                                font: g,
                                overflow: "truncate",
                                width: m,
                                ellipsis: v,
                                fill: l.getTextColor() || e.get(["axisLine", "lineStyle", "color"]),
                                align: l.get("align") || o.textAlign,
                                verticalAlign: l.get("verticalAlign") || o.textVerticalAlign
                            }),
                            z2: 1
                        });
                    if (As({
                        el: x,
                        componentModel: e,
                        itemName: r
                    }), x.__fullText = r, x.anid = "name", e.get("triggerEvent")) {
                        var _ = cG.makeAxisEventDataBase(e);
                        _.targetType = "axisName", _.name = r, tP(x).eventData = _
                    }
                    i.add(x), x.updateTransform(), n.add(x), x.decomposeTransform()
                }
            }
        }, dG = {}, fG = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.render = function (e, n, i) {
                this.axisPointerClass && vy(e), t.prototype.render.apply(this, arguments), this._doUpdateAxisPointerClass(e, i, !0)
            }, n.prototype.updateAxisPointer = function (t, e, n) {
                this._doUpdateAxisPointerClass(t, n, !1)
            }, n.prototype.remove = function (t, e) {
                var n = this._axisPointer;
                n && n.remove(e)
            }, n.prototype.dispose = function (e, n) {
                this._disposeAxisPointer(n), t.prototype.dispose.apply(this, arguments)
            }, n.prototype._doUpdateAxisPointerClass = function (t, e, i) {
                var r = n.getAxisPointerClass(this.axisPointerClass);
                if (r) {
                    var o = xy(t);
                    o ? (this._axisPointer || (this._axisPointer = new r)).render(t, o, e, i) : this._disposeAxisPointer(e)
                }
            }, n.prototype._disposeAxisPointer = function (t) {
                this._axisPointer && this._axisPointer.dispose(t), this._axisPointer = null
            }, n.registerAxisPointerClass = function (t, e) {
                dG[t] = e
            }, n.getAxisPointerClass = function (t) {
                return t && dG[t]
            }, n.type = "axis", n
        }(Tz), gG = ur(), yG = ["axisLine", "axisTickLabel", "axisName"], vG = ["splitArea", "splitLine", "minorSplitLine"],
        mG = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.axisPointerClass = "CartesianAxisPointer", e
            }

            return e(n, t), n.prototype.render = function (e, n, i, r) {
                this.group.removeAll();
                var o = this._axisGroup;
                if (this._axisGroup = new sL, this.group.add(this._axisGroup), e.get("show")) {
                    var a = e.getCoordSysModel(), s = qg(a, e), l = new cG(e, h({
                        handleAutoShown: function () {
                            for (var t = a.coordinateSystem.getCartesians(), n = 0; n < t.length; n++) {
                                var i = t[n].getOtherAxis(e.axis).type;
                                if ("value" === i || "log" === i) return !0
                            }
                            return !1
                        }
                    }, s));
                    y(yG, l.add, l), this._axisGroup.add(l.getGroup()), y(vG, function (t) {
                        e.get([t, "show"]) && xG[t](this, this._axisGroup, e, a)
                    }, this), _s(o, this._axisGroup, e), t.prototype.render.call(this, e, n, i, r)
                }
            }, n.prototype.remove = function () {
                Sy(this)
            }, n.type = "cartesianAxis", n
        }(fG), xG = {
            splitLine: function (t, e, n, i) {
                var r = n.axis;
                if (!r.scale.isBlank()) {
                    var o = n.getModel("splitLine"), a = o.getModel("lineStyle"), s = a.get("color");
                    s = M(s) ? s : [s];
                    for (var l = i.coordinateSystem.getRect(), u = r.isHorizontal(), h = 0, p = r.getTicksCoords({tickModel: o}), d = [], f = [], g = a.getLineStyle(), y = 0; y < p.length; y++) {
                        var v = r.toGlobalCoord(p[y].coord);
                        u ? (d[0] = v, d[1] = l.y, f[0] = v, f[1] = l.y + l.height) : (d[0] = l.x, d[1] = v, f[0] = l.x + l.width, f[1] = v);
                        var m = h++ % s.length, x = p[y].tickValue;
                        e.add(new eO({
                            anid: null != x ? "line_" + p[y].tickValue : null,
                            subPixelOptimize: !0,
                            autoBatch: !0,
                            shape: {x1: d[0], y1: d[1], x2: f[0], y2: f[1]},
                            style: c({stroke: s[m]}, g),
                            silent: !0
                        }))
                    }
                }
            }, minorSplitLine: function (t, e, n, i) {
                var r = n.axis, o = n.getModel("minorSplitLine"), a = o.getModel("lineStyle"),
                    s = i.coordinateSystem.getRect(), l = r.isHorizontal(), u = r.getMinorTicksCoords();
                if (u.length) for (var h = [], c = [], p = a.getLineStyle(), d = 0; d < u.length; d++) for (var f = 0; f < u[d].length; f++) {
                    var g = r.toGlobalCoord(u[d][f].coord);
                    l ? (h[0] = g, h[1] = s.y, c[0] = g, c[1] = s.y + s.height) : (h[0] = s.x, h[1] = g, c[0] = s.x + s.width, c[1] = g), e.add(new eO({
                        anid: "minor_line_" + u[d][f].tickValue,
                        subPixelOptimize: !0,
                        autoBatch: !0,
                        shape: {x1: h[0], y1: h[1], x2: c[0], y2: c[1]},
                        style: p,
                        silent: !0
                    }))
                }
            }, splitArea: function (t, e, n, i) {
                wy(t, e, n, i)
            }
        }, _G = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "xAxis", n
        }(mG), bG = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = _G.type, e
            }

            return e(n, t), n.type = "yAxis", n
        }(mG), wG = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "grid", e
            }

            return e(n, t), n.prototype.render = function (t) {
                this.group.removeAll(), t.get("show") && this.group.add(new Uk({
                    shape: t.coordinateSystem.getRect(),
                    style: c({fill: t.get("backgroundColor")}, t.getItemStyle()),
                    silent: !0,
                    z2: -1
                }))
            }, n.type = "grid", n
        }(Tz), SG = {offset: 0};
    df(Iy);
    var MG = 3, IG = function (t) {
        function n(e, n) {
            var i = t.call(this) || this, r = new TF(e, n), o = new sL;
            return i.add(r), i.add(o), i.updateData(e, n), i
        }

        return e(n, t), n.prototype.stopEffectAnimation = function () {
            this.childAt(1).removeAll()
        }, n.prototype.startEffectAnimation = function (t) {
            for (var e = t.symbolType, n = t.color, i = this.childAt(1), r = 0; MG > r; r++) {
                var o = Sc(e, -1, -1, 2, 2, n);
                o.attr({style: {strokeNoScale: !0}, z2: 99, silent: !0, scaleX: .5, scaleY: .5});
                var a = -r / MG * t.period + t.effectOffset;
                o.animate("", !0).when(t.period, {
                    scaleX: t.rippleScale / 2,
                    scaleY: t.rippleScale / 2
                }).delay(a).start(), o.animateStyle(!0).when(t.period, {opacity: 0}).delay(a).start(), i.add(o)
            }
            Cy(i, t)
        }, n.prototype.updateEffectAnimation = function (t) {
            for (var e = this._effectCfg, n = this.childAt(1), i = ["symbolType", "period", "rippleScale"], r = 0; r < i.length; r++) {
                var o = i[r];
                if (e[o] !== t[o]) return this.stopEffectAnimation(), void this.startEffectAnimation(t)
            }
            Cy(n, t)
        }, n.prototype.highlight = function () {
            aa(this)
        }, n.prototype.downplay = function () {
            sa(this)
        }, n.prototype.updateData = function (t, e) {
            var n = this, i = t.hostModel;
            this.childAt(0).updateData(t, e);
            var r = this.childAt(1), o = t.getItemModel(e), a = t.getItemVisual(e, "symbol"),
                s = Ty(t.getItemVisual(e, "symbolSize")), l = t.getItemVisual(e, "style"), u = l && l.fill;
            r.setScale(s), r.traverse(function (t) {
                t.setStyle("fill", u)
            });
            var h = t.getItemVisual(e, "symbolOffset");
            h && (M(h) || (h = [h, h]), r.x = _i(h[0], s[0]), r.y = _i(B(h[1], h[0]) || 0, s[1]));
            var c = t.getItemVisual(e, "symbolRotate");
            r.rotation = (c || 0) * Math.PI / 180 || 0;
            var p = {};
            p.showEffectOn = i.get("showEffectOn"), p.rippleScale = o.get(["rippleEffect", "scale"]), p.brushType = o.get(["rippleEffect", "brushType"]), p.period = 1e3 * o.get(["rippleEffect", "period"]), p.effectOffset = e / t.count(), p.z = i.getShallow("z") || 0, p.zlevel = i.getShallow("zlevel") || 0, p.symbolType = a, p.color = u, p.rippleEffectColor = o.get(["rippleEffect", "color"]), this.off("mouseover").off("mouseout").off("emphasis").off("normal"), "render" === p.showEffectOn ? (this._effectCfg ? this.updateEffectAnimation(p) : this.startEffectAnimation(p), this._effectCfg = p) : (this._effectCfg = null, this.stopEffectAnimation(), this.onHoverStateChange = function (t) {
                "emphasis" === t ? "render" !== p.showEffectOn && n.startEffectAnimation(p) : "normal" === t && "render" !== p.showEffectOn && n.stopEffectAnimation()
            }), this._effectCfg = p, Sa(this)
        }, n.prototype.fadeOut = function (t) {
            this.off("mouseover").off("mouseout"), t && t()
        }, n
    }(sL), TG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function () {
            this._symbolDraw = new CF(IG)
        }, n.prototype.render = function (t) {
            var e = t.getData(), n = this._symbolDraw;
            n.updateData(e, {clipShape: this._getClipShape(t)}), this.group.add(n.group)
        }, n.prototype._getClipShape = function (t) {
            var e = t.coordinateSystem, n = e && e.getArea && e.getArea();
            return t.get("clip", !0) ? n : null
        }, n.prototype.updateTransform = function (t, e, n) {
            var i = t.getData();
            this.group.dirty();
            var r = Rg("").reset(t, e, n);
            r.progress && r.progress({start: 0, end: i.count(), count: i.count()}, i), this._symbolDraw.updateLayout()
        }, n.prototype._updateGroupTransform = function (t) {
            var e = t.coordinateSystem;
            e && e.getRoamTransform && (this.group.transform = qn(e.getRoamTransform()), this.group.decomposeTransform())
        }, n.prototype.remove = function () {
            this._symbolDraw && this._symbolDraw.remove(!0)
        }, n.type = "effectScatter", n
    }(Dz), CG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.hasSymbolVisual = !0, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return gd(this.getSource(), this, {useEncodeDefaulter: !0})
        }, n.prototype.brushSelector = function (t, e, n) {
            return n.point(e.getItemLayout(t))
        }, n.type = "series.effectScatter", n.dependencies = ["grid", "polar"], n.defaultOption = {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            effectType: "ripple",
            progressive: 0,
            showEffectOn: "render",
            clip: !0,
            rippleEffect: {period: 4, scale: 2.5, brushType: "fill"},
            symbolSize: 10
        }, n
    }(Iz);
    df(Ay);
    var AG = ["color", "borderColor"], DG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            this.group.removeClipPath(), this._updateDrawMode(t), this._isLargeDraw ? this._renderLarge(t) : this._renderNormal(t)
        }, n.prototype.incrementalPrepareRender = function (t) {
            this._clear(), this._updateDrawMode(t)
        }, n.prototype.incrementalRender = function (t, e) {
            this._isLargeDraw ? this._incrementalRenderLarge(t, e) : this._incrementalRenderNormal(t, e)
        }, n.prototype._updateDrawMode = function (t) {
            var e = t.pipelineContext.large;
            (null == this._isLargeDraw || e !== this._isLargeDraw) && (this._isLargeDraw = e, this._clear())
        }, n.prototype._renderNormal = function (t) {
            var e = t.getData(), n = this._data, i = this.group, r = e.getLayout("isSimpleBox"), o = t.get("clip", !0),
                a = t.coordinateSystem, s = a.getArea && a.getArea();
            this._data || i.removeAll(), e.diff(n).add(function (n) {
                if (e.hasValue(n)) {
                    var a = e.getItemLayout(n);
                    if (o && Ly(s, a)) return;
                    var l = Dy(a, n, !0);
                    hs(l, {shape: {points: a.ends}}, t, n), ky(l, e, n, r), i.add(l), e.setItemGraphicEl(n, l)
                }
            }).update(function (a, l) {
                var u = n.getItemGraphicEl(l);
                if (!e.hasValue(a)) return void i.remove(u);
                var h = e.getItemLayout(a);
                return o && Ly(s, h) ? void i.remove(u) : (u ? us(u, {shape: {points: h.ends}}, t, a) : u = Dy(h, a), ky(u, e, a, r), i.add(u), void e.setItemGraphicEl(a, u))
            }).remove(function (t) {
                var e = n.getItemGraphicEl(t);
                e && i.remove(e)
            }).execute(), this._data = e
        }, n.prototype._renderLarge = function (t) {
            this._clear(), Oy(t, this.group);
            var e = t.get("clip", !0) ? Xf(t.coordinateSystem, !1, t) : null;
            e ? this.group.setClipPath(e) : this.group.removeClipPath()
        }, n.prototype._incrementalRenderNormal = function (t, e) {
            for (var n, i = e.getData(), r = i.getLayout("isSimpleBox"); null != (n = t.next());) {
                var o = i.getItemLayout(n), a = Dy(o, n);
                ky(a, i, n, r), a.incremental = !0, this.group.add(a)
            }
        }, n.prototype._incrementalRenderLarge = function (t, e) {
            Oy(e, this.group, !0)
        }, n.prototype.remove = function () {
            this._clear()
        }, n.prototype._clear = function () {
            this.group.removeAll(), this._data = null
        }, n.type = "candlestick", n
    }(Dz), LG = function () {
        function t() {
        }

        return t
    }(), kG = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "normalCandlestickBox", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new LG
        }, n.prototype.buildPath = function (t, e) {
            var n = e.points;
            this.__simpleBox ? (t.moveTo(n[4][0], n[4][1]), t.lineTo(n[6][0], n[6][1])) : (t.moveTo(n[0][0], n[0][1]), t.lineTo(n[1][0], n[1][1]), t.lineTo(n[2][0], n[2][1]), t.lineTo(n[3][0], n[3][1]), t.closePath(), t.moveTo(n[4][0], n[4][1]), t.lineTo(n[5][0], n[5][1]), t.moveTo(n[6][0], n[6][1]), t.lineTo(n[7][0], n[7][1]))
        }, n
    }(Bk), PG = function () {
        function t() {
        }

        return t
    }(), OG = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "largeCandlestickBox", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new PG
        }, n.prototype.buildPath = function (t, e) {
            for (var n = e.points, i = 0; i < n.length;) if (this.__sign === n[i++]) {
                var r = n[i++];
                t.moveTo(r, n[i++]), t.lineTo(r, n[i++])
            } else i += 3
        }, n
    }(Bk), RG = function () {
        function t() {
        }

        return t.prototype.getInitialData = function (t, e) {
            var n, i, r = e.getComponent("xAxis", this.get("xAxisIndex")),
                o = e.getComponent("yAxis", this.get("yAxisIndex")), a = r.get("type"), s = o.get("type");
            "category" === a ? (t.layout = "horizontal", n = r.getOrdinalMeta(), i = !0) : "category" === s ? (t.layout = "vertical", n = o.getOrdinalMeta(), i = !0) : t.layout = t.layout || "horizontal";
            var l = ["x", "y"], u = "horizontal" === t.layout ? 0 : 1, h = this._baseAxisDim = l[u], c = l[1 - u],
                p = [r, o], d = p[u].get("type"), f = p[1 - u].get("type"), g = t.data;
            if (g && i) {
                var v = [];
                y(g, function (t, e) {
                    var n;
                    M(t) ? (n = t.slice(), t.unshift(e)) : M(t.value) ? (n = t.value.slice(), t.value.unshift(e)) : n = t, v.push(n)
                }), t.data = v
            }
            var m = this.defaultValueDimensions, x = [{
                name: h,
                type: rd(d),
                ordinalMeta: n,
                otherDims: {tooltip: !1, itemName: 0},
                dimsDef: ["base"]
            }, {name: c, type: rd(f), dimsDef: m.slice()}];
            return Xg(this, {coordDimensions: x, dimensionsCount: m.length + 1, encodeDefaulter: S(Fl, x, this)})
        }, t.prototype.getBaseAxis = function () {
            var t = this._baseAxisDim;
            return this.ecModel.getComponent(t + "Axis", this.get(t + "AxisIndex")).axis
        }, t
    }(), zG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.defaultValueDimensions = [{name: "open", defaultTooltip: !0}, {
                name: "close",
                defaultTooltip: !0
            }, {name: "lowest", defaultTooltip: !0}, {name: "highest", defaultTooltip: !0}], e
        }

        return e(n, t), n.prototype.getShadowDim = function () {
            return "open"
        }, n.prototype.brushSelector = function (t, e, n) {
            var i = e.getItemLayout(t);
            return i && n.rect(i.brushRect)
        }, n.type = "series.candlestick", n.dependencies = ["xAxis", "yAxis", "grid"], n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            layout: null,
            clip: !0,
            itemStyle: {
                color: "#eb5454",
                color0: "#47b262",
                borderColor: "#eb5454",
                borderColor0: "#47b262",
                borderWidth: 1
            },
            emphasis: {scale: !0, itemStyle: {borderWidth: 2}},
            barMaxWidth: null,
            barMinWidth: null,
            barWidth: null,
            large: !0,
            largeThreshold: 600,
            progressive: 3e3,
            progressiveThreshold: 1e4,
            progressiveChunkMode: "mod",
            animationEasing: "linear",
            animationDuration: 300
        }, n
    }(Iz);
    f(zG, RG, !0);
    var EG = ["itemStyle", "borderColor"], NG = ["itemStyle", "borderColor0"], BG = ["itemStyle", "color"],
        VG = ["itemStyle", "color0"], FG = {
            seriesType: "candlestick", plan: Ch(), performRawSeries: !0, reset: function (t, e) {
                function n(t, e) {
                    return e.get(t > 0 ? BG : VG)
                }

                function i(t, e) {
                    return e.get(t > 0 ? EG : NG)
                }

                if (!e.isSeriesFiltered(t)) {
                    var r = t.pipelineContext.large;
                    return !r && {
                        progress: function (t, e) {
                            for (var r; null != (r = t.next());) {
                                var o = e.getItemModel(r), a = e.getItemLayout(r).sign, s = o.getItemStyle();
                                s.fill = n(a, o), s.stroke = i(a, o) || s.fill;
                                var l = e.ensureUniqueItemVisual(r, "style");
                                h(l, s)
                            }
                        }
                    }
                }
            }
        }, GG = "undefined" != typeof Float32Array ? Float32Array : Array, HG = {
            seriesType: "candlestick", plan: Ch(), reset: function (t) {
                function e(t, e) {
                    function n(t, e) {
                        var n = [];
                        return n[a] = e, n[s] = t, isNaN(e) || isNaN(t) ? [0 / 0, 0 / 0] : i.dataToPoint(n)
                    }

                    function r(t, e, n) {
                        var i = e.slice(), r = e.slice();
                        i[a] = SO(i[a] + o / 2, 1, !1), r[a] = SO(r[a] - o / 2, 1, !0), n ? t.push(i, r) : t.push(r, i)
                    }

                    function l(t, e, i) {
                        var r = n(t, i), l = n(e, i);
                        return r[a] -= o / 2, l[a] -= o / 2, {
                            x: r[0],
                            y: r[1],
                            width: s ? o : l[0] - r[0],
                            height: s ? l[1] - r[1] : o
                        }
                    }

                    function h(t) {
                        return t[a] = SO(t[a], 1), t
                    }

                    for (var g; null != (g = t.next());) {
                        var y = e.get(u, g), v = e.get(c, g), m = e.get(p, g), x = e.get(d, g), _ = e.get(f, g),
                            b = Math.min(v, m), w = Math.max(v, m), S = n(b, y), M = n(w, y), I = n(x, y), T = n(_, y),
                            C = [];
                        r(C, M, 0), r(C, S, 1), C.push(h(T), h(M), h(I), h(S)), e.setItemLayout(g, {
                            sign: Ey(e, g, v, m, p),
                            initBaseline: v > m ? M[s] : S[s],
                            ends: C,
                            brushRect: l(x, _, y)
                        })
                    }
                }

                function n(t, e) {
                    for (var n, r, o = new GG(4 * t.count), l = 0, h = [], g = []; null != (r = t.next());) {
                        var y = e.get(u, r), v = e.get(c, r), m = e.get(p, r), x = e.get(d, r), _ = e.get(f, r);
                        isNaN(y) || isNaN(x) || isNaN(_) ? (o[l++] = 0 / 0, l += 3) : (o[l++] = Ey(e, r, v, m, p), h[a] = y, h[s] = x, n = i.dataToPoint(h, null, g), o[l++] = n ? n[0] : 0 / 0, o[l++] = n ? n[1] : 0 / 0, h[s] = _, n = i.dataToPoint(h, null, g), o[l++] = n ? n[1] : 0 / 0)
                    }
                    e.setLayout("largePoints", o)
                }

                var i = t.coordinateSystem, r = t.getData(), o = Ny(t, r), a = 0, s = 1, l = ["x", "y"],
                    u = r.mapDimension(l[a]), h = r.mapDimensionsAll(l[s]), c = h[0], p = h[1], d = h[2], f = h[3];
                return r.setLayout({
                    candleWidth: o,
                    isSimpleBox: 1.3 >= o
                }), null == u || h.length < 4 ? void 0 : {progress: t.pipelineContext.large ? n : e}
            }
        };
    df(By);
    var WG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            function e(t, e) {
                var n = t.getItemVisual(e, "symbol") || "circle";
                if ("none" !== n) {
                    var i = Wy(t.getItemVisual(e, "symbolSize")), r = Sc(n, -1, -1, 2, 2),
                        o = t.getItemVisual(e, "symbolRotate") || 0;
                    return r.attr({
                        style: {strokeNoScale: !0},
                        z2: 100,
                        scaleX: i[0] / 2,
                        scaleY: i[1] / 2,
                        rotation: o * Math.PI / 180 || 0
                    }), r
                }
            }

            function n(n, i, r, o, a, s) {
                r.removeAll();
                for (var l = 0; l < i.length - 1; l++) {
                    var u = e(o, a);
                    u && (u.__dimIdx = l, n[l] ? (u.setPosition(n[l]), MO[s ? "initProps" : "updateProps"](u, {
                        x: i[l][0],
                        y: i[l][1]
                    }, t, a)) : u.setPosition(i[l]), r.add(u))
                }
            }

            function i(t) {
                return v(t, function () {
                    return [r.cx, r.cy]
                })
            }

            var r = t.coordinateSystem, o = this.group, a = t.getData(), l = this._data;
            a.diff(l).add(function (e) {
                var r = a.getItemLayout(e);
                if (r) {
                    var o = new KP, s = new JP, l = {shape: {points: r}};
                    o.shape.points = i(r), s.shape.points = i(r), hs(o, l, t, e), hs(s, l, t, e);
                    var u = new sL, h = new sL;
                    u.add(s), u.add(o), u.add(h), n(s.shape.points, r, h, a, e, !0), a.setItemGraphicEl(e, u)
                }
            }).update(function (e, i) {
                var r = l.getItemGraphicEl(i), o = r.childAt(0), s = r.childAt(1), u = r.childAt(2),
                    h = {shape: {points: a.getItemLayout(e)}};
                h.shape.points && (n(o.shape.points, h.shape.points, u, a, e, !1), us(o, h, t), us(s, h, t), a.setItemGraphicEl(e, r))
            }).remove(function (t) {
                o.remove(l.getItemGraphicEl(t))
            }).execute(), a.eachItemGraphicEl(function (t, e) {
                var n = a.getItemModel(e), i = t.childAt(0), r = t.childAt(1), l = t.childAt(2),
                    u = a.getItemVisual(e, "style"), p = u.fill;
                o.add(t), i.useStyle(c(n.getModel("lineStyle").getLineStyle(), {
                    fill: "none",
                    stroke: p
                })), Ia(i, n, "lineStyle"), Ia(r, n, "areaStyle");
                var d = n.getModel("areaStyle"), f = d.isEmpty() && d.parentModel.isEmpty();
                r.ignore = f, y(["emphasis", "select", "blur"], function (t) {
                    var e = n.getModel([t, "areaStyle"]), i = e.isEmpty() && e.parentModel.isEmpty();
                    r.ensureState(t).ignore = i && f
                }), r.useStyle(c(d.getAreaStyle(), {fill: p, opacity: .7, decal: u.decal}));
                var g = n.getModel("emphasis"), v = g.getModel("itemStyle").getItemStyle();
                l.eachChild(function (t) {
                    if (t instanceof Wk) {
                        var i = t.style;
                        t.useStyle(h({image: i.image, x: i.x, y: i.y, width: i.width, height: i.height}, u))
                    } else t.useStyle(u), t.setColor(p);
                    var r = t.ensureState("emphasis");
                    r.style = s(v);
                    var o = a.get(a.dimensions[t.__dimIdx], e);
                    (null == o || isNaN(o)) && (o = ""), ks(t, Ps(n), {
                        labelFetcher: a.hostModel,
                        labelDataIndex: e,
                        labelDimIndex: t.__dimIdx,
                        defaultText: o,
                        inheritColor: p,
                        defaultOpacity: u.opacity
                    })
                }), Sa(t, g.get("focus"), g.get("blurScope"))
            }), this._data = a
        }, n.prototype.remove = function () {
            this.group.removeAll(), this._data = null
        }, n.type = "radar", n
    }(Dz), XG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.useColorPaletteOnData = !0, e.hasSymbolVisual = !0, e
        }

        return e(n, t), n.prototype.init = function () {
            t.prototype.init.apply(this, arguments), this.legendVisualProvider = new HF(xA(this.getData, this), xA(this.getRawData, this))
        }, n.prototype.getInitialData = function () {
            return Xg(this, {generateCoord: "indicator_", generateCoordCount: 1 / 0})
        }, n.prototype.formatTooltip = function (t) {
            var e = this.getData(), n = this.coordinateSystem, i = n.getIndicatorAxes(), r = this.getData().getName(t),
                o = "" === r ? this.name : r, a = fh(this, t);
            return rh("section", {
                header: o, sortBlocks: !0, blocks: v(i, function (n) {
                    var i = e.get(e.mapDimension(n.dim), t);
                    return rh("nameValue", {
                        markerType: "subItem",
                        markerColor: a,
                        name: n.name,
                        value: i,
                        sortParam: i
                    })
                })
            })
        }, n.prototype.getTooltipPosition = function (t) {
            if (null != t) for (var e = this.getData(), n = this.coordinateSystem, i = e.getValues(v(n.dimensions, function (t) {
                return e.mapDimension(t)
            }), t), r = 0, o = i.length; o > r; r++) if (!isNaN(i[r])) {
                var a = n.getIndicatorAxes();
                return n.coordToPoint(a[r].dataToCoord(i[r]), r)
            }
        }, n.type = "series.radar", n.dependencies = ["radar"], n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "radar",
            legendHoverLink: !0,
            radarIndex: 0,
            lineStyle: {width: 2, type: "solid"},
            label: {position: "top"},
            symbolSize: 8
        }, n
    }(Iz), YG = iG.value, ZG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.optionUpdated = function () {
            var t = this.get("boundaryGap"), e = this.get("splitNumber"), n = this.get("scale"),
                i = this.get("axisLine"), r = this.get("axisTick"), o = this.get("axisLabel"), a = this.get("axisName"),
                u = this.get(["axisName", "show"]), h = this.get(["axisName", "formatter"]),
                p = this.get("axisNameGap"), d = this.get("triggerEvent"),
                g = v(this.get("indicator") || [], function (g) {
                    null != g.max && g.max > 0 && !g.min ? g.min = 0 : null != g.min && g.min < 0 && !g.max && (g.max = 0);
                    var y = a;
                    null != g.color && (y = c({color: g.color}, a));
                    var v = l(s(g), {
                        boundaryGap: t,
                        splitNumber: e,
                        scale: n,
                        axisLine: i,
                        axisTick: r,
                        axisLabel: o,
                        name: g.text,
                        nameLocation: "end",
                        nameGap: p,
                        nameTextStyle: y,
                        triggerEvent: d
                    }, !1);
                    if (u || (v.name = ""), "string" == typeof h) {
                        var m = v.name;
                        v.name = h.replace("{value}", null != m ? m : "")
                    } else "function" == typeof h && (v.name = h(v.name, v));
                    var x = new VO(v, null, this.ecModel);
                    return f(x, HV.prototype), x.mainType = "radar", x.componentIndex = this.componentIndex, x
                }, this);
            this._indicatorModels = g
        }, n.prototype.getIndicatorModels = function () {
            return this._indicatorModels
        }, n.type = "radar", n.defaultOption = {
            zlevel: 0,
            z: 0,
            center: ["50%", "50%"],
            radius: "75%",
            startAngle: 90,
            axisName: {show: !0},
            boundaryGap: [0, 0],
            splitNumber: 5,
            axisNameGap: 15,
            scale: !1,
            shape: "polygon",
            axisLine: l({lineStyle: {color: "#bbb"}}, YG.axisLine),
            axisLabel: Xy(YG.axisLabel, !1),
            axisTick: Xy(YG.axisTick, !1),
            splitLine: Xy(YG.splitLine, !0),
            splitArea: Xy(YG.splitArea, !0),
            indicator: []
        }, n
    }(gR), UG = ["axisLine", "axisTickLabel", "axisName"], jG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            var e = this.group;
            e.removeAll(), this._buildAxes(t), this._buildSplitLineAndArea(t)
        }, n.prototype._buildAxes = function (t) {
            var e = t.coordinateSystem, n = e.getIndicatorAxes(), i = v(n, function (t) {
                var n = new cG(t.model, {
                    position: [e.cx, e.cy],
                    rotation: t.angle,
                    labelDirection: -1,
                    tickDirection: -1,
                    nameDirection: 1
                });
                return n
            });
            y(i, function (t) {
                y(UG, t.add, t), this.group.add(t.getGroup())
            }, this)
        }, n.prototype._buildSplitLineAndArea = function (t) {
            function e(t, e, n) {
                var i = n % e.length;
                return t[i] = t[i] || [], i
            }

            var n = t.coordinateSystem, i = n.getIndicatorAxes();
            if (i.length) {
                var r = t.get("shape"), o = t.getModel("splitLine"), a = t.getModel("splitArea"),
                    s = o.getModel("lineStyle"), l = a.getModel("areaStyle"), u = o.get("show"), h = a.get("show"),
                    p = s.get("color"), d = l.get("color"), f = M(p) ? p : [p], g = M(d) ? d : [d], m = [], x = [];
                if ("circle" === r) for (var _ = i[0].getTicksCoords(), b = n.cx, w = n.cy, S = 0; S < _.length; S++) {
                    if (u) {
                        var I = e(m, f, S);
                        m[I].push(new kP({shape: {cx: b, cy: w, r: _[S].coord}}))
                    }
                    if (h && S < _.length - 1) {
                        var I = e(x, g, S);
                        x[I].push(new jP({shape: {cx: b, cy: w, r0: _[S].coord, r: _[S + 1].coord}}))
                    }
                } else for (var T, C = v(i, function (t, e) {
                    var i = t.getTicksCoords();
                    return T = null == T ? i.length - 1 : Math.min(i.length - 1, T), v(i, function (t) {
                        return n.coordToPoint(t.coord, e)
                    })
                }), A = [], S = 0; T >= S; S++) {
                    for (var D = [], L = 0; L < i.length; L++) D.push(C[L][S]);
                    if (D[0] && D.push(D[0].slice()), u) {
                        var I = e(m, f, S);
                        m[I].push(new JP({shape: {points: D}}))
                    }
                    if (h && A) {
                        var I = e(x, g, S - 1);
                        x[I].push(new KP({shape: {points: D.concat(A)}}))
                    }
                    A = D.slice().reverse()
                }
                var k = s.getLineStyle(), P = l.getAreaStyle();
                y(x, function (t, e) {
                    this.group.add(wO(t, {style: c({stroke: "none", fill: g[e % g.length]}, P), silent: !0}))
                }, this), y(m, function (t, e) {
                    this.group.add(wO(t, {style: c({fill: "none", stroke: f[e % f.length]}, k), silent: !0}))
                }, this)
            }
        }, n.type = "radar", n
    }(Tz), qG = function (t) {
        function n(e, n, i) {
            var r = t.call(this, e, n, i) || this;
            return r.type = "value", r.angle = 0, r.name = "", r
        }

        return e(n, t), n
    }(tF), KG = function () {
        function t(t, e, n) {
            this.dimensions = [], this._model = t, this._indicatorAxes = v(t.getIndicatorModels(), function (t, e) {
                var n = "indicator_" + e, i = new qG(n, new wV);
                return i.name = t.get("name"), i.model = t, t.axis = i, this.dimensions.push(n), i
            }, this), this.resize(t, n)
        }

        return t.prototype.getIndicatorAxes = function () {
            return this._indicatorAxes
        }, t.prototype.dataToPoint = function (t, e) {
            var n = this._indicatorAxes[e];
            return this.coordToPoint(n.dataToCoord(t), e)
        }, t.prototype.coordToPoint = function (t, e) {
            var n = this._indicatorAxes[e], i = n.angle, r = this.cx + t * Math.cos(i), o = this.cy - t * Math.sin(i);
            return [r, o]
        }, t.prototype.pointToData = function (t) {
            var e = t[0] - this.cx, n = t[1] - this.cy, i = Math.sqrt(e * e + n * n);
            e /= i, n /= i;
            for (var r, o = Math.atan2(-n, e), a = 1 / 0, s = -1, l = 0; l < this._indicatorAxes.length; l++) {
                var u = this._indicatorAxes[l], h = Math.abs(o - u.angle);
                a > h && (r = u, s = l, a = h)
            }
            return [s, +(r && r.coordToData(i))]
        }, t.prototype.resize = function (t, e) {
            var n = t.get("center"), i = e.getWidth(), r = e.getHeight(), o = Math.min(i, r) / 2;
            this.cx = _i(n[0], i), this.cy = _i(n[1], r), this.startAngle = t.get("startAngle") * Math.PI / 180;
            var a = t.get("radius");
            ("string" == typeof a || "number" == typeof a) && (a = [0, a]), this.r0 = _i(a[0], o), this.r = _i(a[1], o), y(this._indicatorAxes, function (t, e) {
                t.setExtent(this.r0, this.r);
                var n = this.startAngle + e * Math.PI * 2 / this._indicatorAxes.length;
                n = Math.atan2(Math.sin(n), Math.cos(n)), t.angle = n
            }, this)
        }, t.prototype.update = function (t) {
            function e(t) {
                var e = Math.pow(10, Math.floor(Math.log(t) / Math.LN10)), n = t / e;
                return 2 === n ? n = 5 : n *= 2, n * e
            }

            var n = this._indicatorAxes, i = this._model;
            y(n, function (t) {
                t.scale.setExtent(1 / 0, -1 / 0)
            }), t.eachSeriesByType("radar", function (e) {
                if ("radar" === e.get("coordinateSystem") && t.getComponent("radar", e.get("radarIndex")) === i) {
                    var r = e.getData();
                    y(n, function (t) {
                        t.scale.unionExtentFromData(r, r.mapDimension(t.dim))
                    })
                }
            }, this);
            var r = i.get("splitNumber");
            y(n, function (t) {
                var n = qd(t.scale, t.model).extent;
                $d(t.scale, t.model);
                var i = t.model, o = t.scale, a = jd(o, i.get("min", !0)), s = jd(o, i.get("max", !0)),
                    l = o.getInterval();
                if (null != a && null != s) o.setExtent(+a, +s), o.setInterval((s - a) / r); else if (null != a) {
                    var u = void 0;
                    do u = a + l * r, o.setExtent(+a, u), o.setInterval(l), l = e(l); while (u < n[1] && isFinite(u) && isFinite(n[1]))
                } else if (null != s) {
                    var h = void 0;
                    do h = s - l * r, o.setExtent(h, +s), o.setInterval(l), l = e(l); while (h > n[0] && isFinite(h) && isFinite(n[0]))
                } else {
                    var c = o.getTicks().length - 1;
                    c > r && (l = e(l));
                    var u = Math.ceil(n[1] / l) * l, h = bi(u - l * r);
                    o.setExtent(h, u), o.setInterval(l)
                }
            })
        }, t.prototype.convertToPixel = function () {
            return console.warn("Not implemented."), null
        }, t.prototype.convertFromPixel = function () {
            return console.warn("Not implemented."), null
        }, t.prototype.containPoint = function () {
            return console.warn("Not implemented."), !1
        }, t.create = function (e, n) {
            var i = [];
            return e.eachComponent("radar", function (r) {
                var o = new t(r, e, n);
                i.push(o), r.coordinateSystem = o
            }), e.eachSeriesByType("radar", function (t) {
                "radar" === t.get("coordinateSystem") && (t.coordinateSystem = i[t.get("radarIndex") || 0])
            }), i
        }, t.dimensions = [], t
    }();
    df(Zy);
    var $G = 256, JG = function () {
        function t() {
            this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = {
                inRange: null,
                outOfRange: null
            };
            var t = mA();
            this.canvas = t
        }

        return t.prototype.update = function (t, e, n, i, r, o) {
            var a = this._getBrush(), s = this._getGradient(r, "inRange"), l = this._getGradient(r, "outOfRange"),
                u = this.pointSize + this.blurSize, h = this.canvas, c = h.getContext("2d"), p = t.length;
            h.width = e, h.height = n;
            for (var d = 0; p > d; ++d) {
                var f = t[d], g = f[0], y = f[1], v = f[2], m = i(v);
                c.globalAlpha = m, c.drawImage(a, g - u, y - u)
            }
            if (!h.width || !h.height) return h;
            for (var x = c.getImageData(0, 0, h.width, h.height), _ = x.data, b = 0, w = _.length, S = this.minOpacity, M = this.maxOpacity, I = M - S; w > b;) {
                var m = _[b + 3] / 256, T = 4 * Math.floor(m * ($G - 1));
                if (m > 0) {
                    var C = o(m) ? s : l;
                    m > 0 && (m = m * I + S), _[b++] = C[T], _[b++] = C[T + 1], _[b++] = C[T + 2], _[b++] = C[T + 3] * m * 256
                } else b += 4
            }
            return c.putImageData(x, 0, 0), h
        }, t.prototype._getBrush = function () {
            var t = this._brushCanvas || (this._brushCanvas = mA()), e = this.pointSize + this.blurSize, n = 2 * e;
            t.width = n, t.height = n;
            var i = t.getContext("2d");
            return i.clearRect(0, 0, n, n), i.shadowOffsetX = n, i.shadowBlur = this.blurSize, i.shadowColor = "#000", i.beginPath(), i.arc(-e, e, this.pointSize, 0, 2 * Math.PI, !0), i.closePath(), i.fill(), t
        }, t.prototype._getGradient = function (t, e) {
            for (var n = this._gradientPixels, i = n[e] || (n[e] = new Uint8ClampedArray(1024)), r = [0, 0, 0, 0], o = 0, a = 0; 256 > a; a++) t[e](a / 255, !0, r), i[o++] = r[0], i[o++] = r[1], i[o++] = r[2], i[o++] = r[3];
            return i
        }, t
    }(), QG = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            var i;
            e.eachComponent("visualMap", function (e) {
                e.eachTargetSeries(function (n) {
                    n === t && (i = e)
                })
            }), this.group.removeAll(), this._incrementalDisplayable = null;
            var r = t.coordinateSystem;
            "cartesian2d" === r.type || "calendar" === r.type ? this._renderOnCartesianAndCalendar(t, n, 0, t.getData().count()) : qy(r) && this._renderOnGeo(r, t, i, n)
        }, n.prototype.incrementalPrepareRender = function () {
            this.group.removeAll()
        }, n.prototype.incrementalRender = function (t, e, n, i) {
            var r = e.coordinateSystem;
            r && (qy(r) ? this.render(e, n, i) : this._renderOnCartesianAndCalendar(e, i, t.start, t.end, !0))
        }, n.prototype._renderOnCartesianAndCalendar = function (t, e, n, i, r) {
            var o, a, s, l, u = t.coordinateSystem;
            if (Yf(u, "cartesian2d")) {
                var h = u.getAxis("x"), c = u.getAxis("y");
                o = h.getBandWidth(), a = c.getBandWidth(), s = h.scale.getExtent(), l = c.scale.getExtent()
            }
            for (var p = this.group, d = t.getData(), f = t.getModel(["emphasis", "itemStyle"]).getItemStyle(), g = t.getModel(["blur", "itemStyle"]).getItemStyle(), y = t.getModel(["select", "itemStyle"]).getItemStyle(), v = Ps(t), m = t.get(["emphasis", "focus"]), x = t.get(["emphasis", "blurScope"]), _ = Yf(u, "cartesian2d") ? [d.mapDimension("x"), d.mapDimension("y"), d.mapDimension("value")] : [d.mapDimension("time"), d.mapDimension("value")], b = n; i > b; b++) {
                var w = void 0, S = d.getItemVisual(b, "style");
                if (Yf(u, "cartesian2d")) {
                    var M = d.get(_[0], b), I = d.get(_[1], b);
                    if (isNaN(d.get(_[2], b)) || M < s[0] || M > s[1] || I < l[0] || I > l[1]) continue;
                    var T = u.dataToPoint([M, I]);
                    w = new Uk({
                        shape: {
                            x: Math.floor(Math.round(T[0]) - o / 2),
                            y: Math.floor(Math.round(T[1]) - a / 2),
                            width: Math.ceil(o),
                            height: Math.ceil(a)
                        }, style: S
                    })
                } else {
                    if (isNaN(d.get(_[1], b))) continue;
                    w = new Uk({z2: 1, shape: u.dataToRect([d.get(_[0], b)]).contentShape, style: S})
                }
                var C = d.getItemModel(b);
                if (d.hasItemOption) {
                    var A = C.getModel("emphasis");
                    f = A.getModel("itemStyle").getItemStyle(), g = C.getModel(["blur", "itemStyle"]).getItemStyle(), y = C.getModel(["select", "itemStyle"]).getItemStyle(), m = A.get("focus"), x = A.get("blurScope"), v = Ps(C)
                }
                var D = t.getRawValue(b), L = "-";
                D && null != D[2] && (L = D[2] + ""), ks(w, v, {
                    labelFetcher: t,
                    labelDataIndex: b,
                    defaultOpacity: S.opacity,
                    defaultText: L
                }), w.ensureState("emphasis").style = f, w.ensureState("blur").style = g, w.ensureState("select").style = y, Sa(w, m, x), w.incremental = r, r && (w.states.emphasis.hoverLayer = !0), p.add(w), d.setItemGraphicEl(b, w)
            }
        }, n.prototype._renderOnGeo = function (t, e, n, i) {
            var r = n.targetVisuals.inRange, o = n.targetVisuals.outOfRange, a = e.getData(),
                s = this._hmLayer || this._hmLayer || new JG;
            s.blurSize = e.get("blurSize"), s.pointSize = e.get("pointSize"), s.minOpacity = e.get("minOpacity"), s.maxOpacity = e.get("maxOpacity");
            var l = t.getViewRect().clone(), u = t.getRoamTransform();
            l.applyTransform(u);
            var h = Math.max(l.x, 0), c = Math.max(l.y, 0), p = Math.min(l.width + l.x, i.getWidth()),
                d = Math.min(l.height + l.y, i.getHeight()), f = p - h, g = d - c,
                y = [a.mapDimension("lng"), a.mapDimension("lat"), a.mapDimension("value")],
                v = a.mapArray(y, function (e, n, i) {
                    var r = t.dataToPoint([e, n]);
                    return r[0] -= h, r[1] -= c, r.push(i), r
                }), m = n.getExtent(),
                x = "visualMap.continuous" === n.type ? jy(m, n.option.range) : Uy(m, n.getPieceList(), n.option.selected);
            s.update(v, f, g, r.color.getNormalizer(), {
                inRange: r.color.getColorMapper(),
                outOfRange: o.color.getColorMapper()
            }, x);
            var _ = new Wk({style: {width: f, height: g, x: h, y: c, image: s.canvas}, silent: !0});
            this.group.add(_)
        }, n.type = "heatmap", n
    }(Dz), tH = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return gd(this.getSource(), this, {generateCoord: "value"})
        }, n.prototype.preventIncremental = function () {
            var t = UR.get(this.get("coordinateSystem"));
            return t && t.dimensions ? "lng" === t.dimensions[0] && "lat" === t.dimensions[1] : void 0
        }, n.type = "series.heatmap", n.dependencies = ["grid", "geo", "calendar"], n.defaultOption = {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            geoIndex: 0,
            blurSize: 30,
            pointSize: 20,
            maxOpacity: 1,
            minOpacity: 0,
            select: {itemStyle: {borderColor: "#212121"}}
        }, n
    }(Iz);
    df(Ky);
    var eH = ge, nH = function (t) {
        function n(e) {
            var n = t.call(this) || this;
            return n.type = "view", n.dimensions = ["x", "y"], n._roamTransformable = new GD, n._rawTransformable = new GD, n.name = e, n
        }

        return e(n, t), n.prototype.setBoundingRect = function (t, e, n, i) {
            return this._rect = new $D(t, e, n, i), this._rect
        }, n.prototype.getBoundingRect = function () {
            return this._rect
        }, n.prototype.setViewRect = function (t, e, n, i) {
            this._transformTo(t, e, n, i), this._viewRect = new $D(t, e, n, i)
        }, n.prototype._transformTo = function (t, e, n, i) {
            var r = this.getBoundingRect(), o = this._rawTransformable;
            o.transform = r.calculateTransform(new $D(t, e, n, i));
            var a = o.parent;
            o.parent = null, o.decomposeTransform(), o.parent = a, this._updateTransform()
        }, n.prototype.setCenter = function (t) {
            t && (this._center = t, this._updateCenterAndZoom())
        }, n.prototype.setZoom = function (t) {
            t = t || 1;
            var e = this.zoomLimit;
            e && (null != e.max && (t = Math.min(e.max, t)), null != e.min && (t = Math.max(e.min, t))), this._zoom = t, this._updateCenterAndZoom()
        }, n.prototype.getDefaultCenter = function () {
            var t = this.getBoundingRect(), e = t.x + t.width / 2, n = t.y + t.height / 2;
            return [e, n]
        }, n.prototype.getCenter = function () {
            return this._center || this.getDefaultCenter()
        }, n.prototype.getZoom = function () {
            return this._zoom || 1
        }, n.prototype.getRoamTransform = function () {
            return this._roamTransformable.getLocalTransform()
        }, n.prototype._updateCenterAndZoom = function () {
            var t = this._rawTransformable.getLocalTransform(), e = this._roamTransformable,
                n = this.getDefaultCenter(), i = this.getCenter(), r = this.getZoom();
            i = ge([], i, t), n = ge([], n, t), e.originX = i[0], e.originY = i[1], e.x = n[0] - i[0], e.y = n[1] - i[1], e.scaleX = e.scaleY = r, this._updateTransform()
        }, n.prototype._updateTransform = function () {
            var t = this._roamTransformable, e = this._rawTransformable;
            e.parent = t, t.updateTransform(), e.updateTransform(), Wn(this.transform || (this.transform = []), e.transform || Gn()), this._rawTransform = e.getLocalTransform(), this.invTransform = this.invTransform || [], jn(this.invTransform, this.transform), this.decomposeTransform()
        }, n.prototype.getTransformInfo = function () {
            var t = this._rawTransformable, e = this._roamTransformable, n = new GD;
            return n.transform = e.transform, n.decomposeTransform(), {
                roam: {
                    x: n.x,
                    y: n.y,
                    scaleX: n.scaleX,
                    scaleY: n.scaleY
                }, raw: {x: t.x, y: t.y, scaleX: t.scaleX, scaleY: t.scaleY}
            }
        }, n.prototype.getViewRect = function () {
            return this._viewRect
        }, n.prototype.getViewRectAfterRoam = function () {
            var t = this.getBoundingRect().clone();
            return t.applyTransform(this.transform), t
        }, n.prototype.dataToPoint = function (t, e, n) {
            var i = e ? this._rawTransform : this.transform;
            return n = n || [], i ? eH(n, t, i) : J(n, t)
        }, n.prototype.pointToData = function (t) {
            var e = this.invTransform;
            return e ? eH([], t, e) : [t[0], t[1]]
        }, n.prototype.convertToPixel = function (t, e, n) {
            var i = hv(e);
            return i === this ? i.dataToPoint(n) : null
        }, n.prototype.convertFromPixel = function (t, e, n) {
            var i = hv(e);
            return i === this ? i.pointToData(n) : null
        }, n.prototype.containPoint = function (t) {
            return this.getViewRectAfterRoam().contain(t[0], t[1])
        }, n.dimensions = ["x", "y"], n
    }(GD), iH = "\x00_ec_interaction_mutex";
    Xp({type: "takeGlobalCursor", event: "globalCursorTaken", update: "update"}, function () {
    });
    var rH = function (t) {
        function n(e) {
            var n = t.call(this) || this;
            n._zr = e;
            var i = xA(n._mousedownHandler, n), r = xA(n._mousemoveHandler, n), o = xA(n._mouseupHandler, n),
                a = xA(n._mousewheelHandler, n), l = xA(n._pinchHandler, n);
            return n.enable = function (t, n) {
                this.disable(), this._opt = c(s(n) || {}, {
                    zoomOnMouseWheel: !0,
                    moveOnMouseMove: !0,
                    moveOnMouseWheel: !1,
                    preventDefaultMouseMove: !0
                }), null == t && (t = !0), (t === !0 || "move" === t || "pan" === t) && (e.on("mousedown", i), e.on("mousemove", r), e.on("mouseup", o)), (t === !0 || "scale" === t || "zoom" === t) && (e.on("mousewheel", a), e.on("pinch", l))
            }, n.disable = function () {
                e.off("mousedown", i), e.off("mousemove", r), e.off("mouseup", o), e.off("mousewheel", a), e.off("pinch", l)
            }, n
        }

        return e(n, t), n.prototype.isDragging = function () {
            return this._dragging
        }, n.prototype.isPinching = function () {
            return this._pinching
        }, n.prototype.setPointerChecker = function (t) {
            this.pointerChecker = t
        }, n.prototype.dispose = function () {
            this.disable()
        }, n.prototype._mousedownHandler = function (t) {
            if (!(Pe(t) || t.target && t.target.draggable)) {
                var e = t.offsetX, n = t.offsetY;
                this.pointerChecker && this.pointerChecker(t, e, n) && (this._x = e, this._y = n, this._dragging = !0)
            }
        }, n.prototype._mousemoveHandler = function (t) {
            if (this._dragging && xv("moveOnMouseMove", t, this._opt) && "pinch" !== t.gestureEvent && !gv(this._zr, "globalPan")) {
                var e = t.offsetX, n = t.offsetY, i = this._x, r = this._y, o = e - i, a = n - r;
                this._x = e, this._y = n, this._opt.preventDefaultMouseMove && NA(t.event), mv(this, "pan", "moveOnMouseMove", t, {
                    dx: o,
                    dy: a,
                    oldX: i,
                    oldY: r,
                    newX: e,
                    newY: n,
                    isAvailableBehavior: null
                })
            }
        }, n.prototype._mouseupHandler = function (t) {
            Pe(t) || (this._dragging = !1)
        }, n.prototype._mousewheelHandler = function (t) {
            var e = xv("zoomOnMouseWheel", t, this._opt), n = xv("moveOnMouseWheel", t, this._opt), i = t.wheelDelta,
                r = Math.abs(i), o = t.offsetX, a = t.offsetY;
            if (0 !== i && (e || n)) {
                if (e) {
                    var s = r > 3 ? 1.4 : r > 1 ? 1.2 : 1.1, l = i > 0 ? s : 1 / s;
                    vv(this, "zoom", "zoomOnMouseWheel", t, {
                        scale: l,
                        originX: o,
                        originY: a,
                        isAvailableBehavior: null
                    })
                }
                if (n) {
                    var u = Math.abs(i), h = (i > 0 ? 1 : -1) * (u > 3 ? .4 : u > 1 ? .15 : .05);
                    vv(this, "scrollMove", "moveOnMouseWheel", t, {
                        scrollDelta: h,
                        originX: o,
                        originY: a,
                        isAvailableBehavior: null
                    })
                }
            }
        }, n.prototype._pinchHandler = function (t) {
            if (!gv(this._zr, "globalPan")) {
                var e = t.pinchScale > 1 ? 1.1 : 1 / 1.1;
                vv(this, "zoom", null, t, {scale: e, originX: t.pinchX, originY: t.pinchY, isAvailableBehavior: null})
            }
        }, n
    }(LA), oH = {axisPointer: 1, tooltip: 1, brush: 1}, aH = function () {
        function t() {
            this.parentPoint = [], this.childPoints = []
        }

        return t
    }(), sH = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultStyle = function () {
            return {stroke: "#000", fill: null}
        }, n.prototype.getDefaultShape = function () {
            return new aH
        }, n.prototype.buildPath = function (t, e) {
            var n = e.childPoints, i = n.length, r = e.parentPoint, o = n[0], a = n[i - 1];
            if (1 === i) return t.moveTo(r[0], r[1]), void t.lineTo(o[0], o[1]);
            var s = e.orient, l = "TB" === s || "BT" === s ? 0 : 1, u = 1 - l, h = _i(e.forkPosition, 1), c = [];
            c[l] = r[l], c[u] = r[u] + (a[u] - r[u]) * h, t.moveTo(r[0], r[1]), t.lineTo(c[0], c[1]), t.moveTo(o[0], o[1]), c[l] = o[l], t.lineTo(c[0], c[1]), c[l] = a[l], t.lineTo(c[0], c[1]), t.lineTo(a[0], a[1]);
            for (var p = 1; i - 1 > p; p++) {
                var d = n[p];
                t.moveTo(d[0], d[1]), c[l] = d[l], t.lineTo(c[0], c[1])
            }
        }, n
    }(Bk), lH = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e._mainGroup = new sL, e
        }

        return e(n, t), n.prototype.init = function (t, e) {
            this._controller = new rH(e.getZr()), this._controllerHost = {target: this.group}, this.group.add(this._mainGroup)
        }, n.prototype.render = function (t, e, n) {
            var i = t.getData(), r = t.layoutInfo, o = this._mainGroup, a = t.get("layout");
            "radial" === a ? (o.x = r.x + r.width / 2, o.y = r.y + r.height / 2) : (o.x = r.x, o.y = r.y), this._updateViewCoordSys(t), this._updateController(t, e, n);
            var s = this._data;
            i.diff(s).add(function (e) {
                bv(i, e) && wv(i, e, null, o, t)
            }).update(function (e, n) {
                var r = s.getItemGraphicEl(n);
                return bv(i, e) ? void wv(i, e, r, o, t) : void (r && Mv(s, n, r, o, t))
            }).remove(function (e) {
                var n = s.getItemGraphicEl(e);
                n && Mv(s, e, n, o, t)
            }).execute(), this._nodeScaleRatio = t.get("nodeScaleRatio"), this._updateNodeAndLinkScale(t), t.get("expandAndCollapse") === !0 && i.eachItemGraphicEl(function (e, i) {
                e.off("click").on("click", function () {
                    n.dispatchAction({type: "treeExpandAndCollapse", seriesId: t.id, dataIndex: i})
                })
            }), this._data = i
        }, n.prototype._updateViewCoordSys = function (t) {
            var e = t.getData(), n = [];
            e.each(function (t) {
                var i = e.getItemLayout(t);
                !i || isNaN(i.x) || isNaN(i.y) || n.push([+i.x, +i.y])
            });
            var i = [], r = [];
            ao(n, i, r);
            var o = this._min, a = this._max;
            r[0] - i[0] === 0 && (i[0] = o ? o[0] : i[0] - 1, r[0] = a ? a[0] : r[0] + 1), r[1] - i[1] === 0 && (i[1] = o ? o[1] : i[1] - 1, r[1] = a ? a[1] : r[1] + 1);
            var s = t.coordinateSystem = new nH;
            s.zoomLimit = t.get("scaleLimit"), s.setBoundingRect(i[0], i[1], r[0] - i[0], r[1] - i[1]), s.setCenter(t.get("center")), s.setZoom(t.get("zoom")), this.group.attr({
                x: s.x,
                y: s.y,
                scaleX: s.scaleX,
                scaleY: s.scaleY
            }), this._min = i, this._max = r
        }, n.prototype._updateController = function (t, e, n) {
            var i = this, r = this._controller, o = this._controllerHost, a = this.group;
            r.setPointerChecker(function (e, i, r) {
                var o = a.getBoundingRect();
                return o.applyTransform(a.transform), o.contain(i, r) && !_v(e, n, t)
            }), r.enable(t.get("roam")), o.zoomLimit = t.get("scaleLimit"), o.zoom = t.coordinateSystem.getZoom(), r.off("pan").off("zoom").on("pan", function (e) {
                cv(o, e.dx, e.dy), n.dispatchAction({seriesId: t.id, type: "treeRoam", dx: e.dx, dy: e.dy})
            }).on("zoom", function (e) {
                pv(o, e.scale, e.originX, e.originY), n.dispatchAction({
                    seriesId: t.id,
                    type: "treeRoam",
                    zoom: e.scale,
                    originX: e.originX,
                    originY: e.originY
                }), i._updateNodeAndLinkScale(t), n.updateLabelLayout()
            })
        }, n.prototype._updateNodeAndLinkScale = function (t) {
            var e = t.getData(), n = this._getNodeGlobalScale(t);
            e.eachItemGraphicEl(function (t) {
                t.setSymbolScale(n)
            })
        }, n.prototype._getNodeGlobalScale = function (t) {
            var e = t.coordinateSystem;
            if ("view" !== e.type) return 1;
            var n = this._nodeScaleRatio, i = e.scaleX || 1, r = e.getZoom(), o = (r - 1) * n + 1;
            return o / i
        }, n.prototype.dispose = function () {
            this._controller && this._controller.dispose(), this._controllerHost = null
        }, n.prototype.remove = function () {
            this._mainGroup.removeAll(), this._data = null
        }, n.type = "tree", n
    }(Dz), uH = ur(), hH = function () {
        function t(t, e) {
            this.depth = 0, this.height = 0, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.isExpand = !1, this.name = t || "", this.hostTree = e
        }

        return t.prototype.isRemoved = function () {
            return this.dataIndex < 0
        }, t.prototype.eachNode = function (t, e, n) {
            "function" == typeof t && (n = e, e = t, t = null), t = t || {}, T(t) && (t = {order: t});
            var i, r = t.order || "preorder", o = this[t.attr || "children"];
            "preorder" === r && (i = e.call(n, this));
            for (var a = 0; !i && a < o.length; a++) o[a].eachNode(t, e, n);
            "postorder" === r && e.call(n, this)
        }, t.prototype.updateDepthAndHeight = function (t) {
            var e = 0;
            this.depth = t;
            for (var n = 0; n < this.children.length; n++) {
                var i = this.children[n];
                i.updateDepthAndHeight(t + 1), i.height > e && (e = i.height)
            }
            this.height = e + 1
        }, t.prototype.getNodeById = function (t) {
            if (this.getId() === t) return this;
            for (var e = 0, n = this.children, i = n.length; i > e; e++) {
                var r = n[e].getNodeById(t);
                if (r) return r
            }
        }, t.prototype.contains = function (t) {
            if (t === this) return !0;
            for (var e = 0, n = this.children, i = n.length; i > e; e++) {
                var r = n[e].contains(t);
                if (r) return r
            }
        }, t.prototype.getAncestors = function (t) {
            for (var e = [], n = t ? this : this.parentNode; n;) e.push(n), n = n.parentNode;
            return e.reverse(), e
        }, t.prototype.getAncestorsIndices = function () {
            for (var t = [], e = this; e;) t.push(e.dataIndex), e = e.parentNode;
            return t.reverse(), t
        }, t.prototype.getDescendantIndices = function () {
            var t = [];
            return this.eachNode(function (e) {
                t.push(e.dataIndex)
            }), t
        }, t.prototype.getValue = function (t) {
            var e = this.hostTree.data;
            return e.get(e.getDimension(t || "value"), this.dataIndex)
        }, t.prototype.setLayout = function (t, e) {
            this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, t, e)
        }, t.prototype.getLayout = function () {
            return this.hostTree.data.getItemLayout(this.dataIndex)
        }, t.prototype.getModel = function (t) {
            if (!(this.dataIndex < 0)) {
                var e = this.hostTree, n = e.data.getItemModel(this.dataIndex);
                return n.getModel(t)
            }
        }, t.prototype.getLevelModel = function () {
            return (this.hostTree.levelModels || [])[this.depth]
        }, t.prototype.setVisual = function (t, e) {
            this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, t, e)
        }, t.prototype.getVisual = function (t) {
            return this.hostTree.data.getItemVisual(this.dataIndex, t)
        }, t.prototype.getRawIndex = function () {
            return this.hostTree.data.getRawIndex(this.dataIndex)
        }, t.prototype.getId = function () {
            return this.hostTree.data.getId(this.dataIndex)
        }, t.prototype.isAncestorOf = function (t) {
            for (var e = t.parentNode; e;) {
                if (e === this) return !0;
                e = e.parentNode
            }
            return !1
        }, t.prototype.isDescendantOf = function (t) {
            return t !== this && t.isAncestorOf(this)
        }, t
    }(), cH = function () {
        function t(t) {
            this.type = "tree", this._nodes = [], this.hostModel = t
        }

        return t.prototype.eachNode = function (t, e, n) {
            this.root.eachNode(t, e, n)
        }, t.prototype.getNodeByDataIndex = function (t) {
            var e = this.data.getRawIndex(t);
            return this._nodes[e]
        }, t.prototype.getNodeById = function (t) {
            return this.root.getNodeById(t)
        }, t.prototype.update = function () {
            for (var t = this.data, e = this._nodes, n = 0, i = e.length; i > n; n++) e[n].dataIndex = -1;
            for (var n = 0, i = t.count(); i > n; n++) e[t.getRawIndex(n)].dataIndex = n
        }, t.prototype.clearLayouts = function () {
            this.data.clearItemLayouts()
        }, t.createTree = function (e, n, i) {
            function r(t, e) {
                var n = t.value;
                s = Math.max(s, M(n) ? n.length : 1), a.push(t);
                var i = new hH(er(t.name, ""), o);
                e ? zv(i, e) : o.root = i, o._nodes.push(i);
                var l = t.children;
                if (l) for (var u = 0; u < l.length; u++) r(l[u], i)
            }

            var o = new t(n), a = [], s = 1;
            r(e), o.root.updateDepthAndHeight(0);
            var l = ud(a, {coordDimensions: ["value"], dimensionsCount: s}), u = new fV(l, n);
            return u.initData(a), i && i(u), Tv({mainData: u, struct: o, structAttr: "tree"}), o.update(), o
        }, t
    }(), pH = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.hasSymbolVisual = !0, e.ignoreStyleOnData = !0, e
        }

        return e(n, t), n.prototype.getInitialData = function (t) {
            function e(t) {
                t.wrapMethod("getItemModel", function (t, e) {
                    var n = o.getNodeByDataIndex(e);
                    return n && n.children.length && n.isExpand || (t.parentModel = r), t
                })
            }

            var n = {name: t.name, children: t.data}, i = t.leaves || {}, r = new VO(i, this, this.ecModel),
                o = cH.createTree(n, this, e), a = 0;
            o.eachNode("preorder", function (t) {
                t.depth > a && (a = t.depth)
            });
            var s = t.expandAndCollapse, l = s && t.initialTreeDepth >= 0 ? t.initialTreeDepth : a;
            return o.root.eachNode("preorder", function (t) {
                var e = t.hostTree.data.getRawDataItem(t.dataIndex);
                t.isExpand = e && null != e.collapsed ? !e.collapsed : t.depth <= l
            }), o.data
        }, n.prototype.getOrient = function () {
            var t = this.get("orient");
            return "horizontal" === t ? t = "LR" : "vertical" === t && (t = "TB"), t
        }, n.prototype.setZoom = function (t) {
            this.option.zoom = t
        }, n.prototype.setCenter = function (t) {
            this.option.center = t
        }, n.prototype.formatTooltip = function (t) {
            for (var e = this.getData().tree, n = e.root.children[0], i = e.getNodeByDataIndex(t), r = i.getValue(), o = i.name; i && i !== n;) o = i.parentNode.name + "." + o, i = i.parentNode;
            return rh("nameValue", {name: o, value: r, noValue: isNaN(r) || null == r})
        }, n.prototype.getDataParams = function (e) {
            var n = t.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(e);
            return n.treeAncestors = Vv(i, this), n
        }, n.type = "series.tree", n.layoutMode = "box", n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "view",
            left: "12%",
            top: "12%",
            right: "12%",
            bottom: "12%",
            layout: "orthogonal",
            edgeShape: "curve",
            edgeForkPosition: "50%",
            roam: !1,
            nodeScaleRatio: .4,
            center: null,
            zoom: 1,
            orient: "LR",
            symbol: "emptyCircle",
            symbolSize: 7,
            expandAndCollapse: !0,
            initialTreeDepth: 2,
            lineStyle: {color: "#ccc", width: 1.5, curveness: .5},
            itemStyle: {color: "lightsteelblue", borderWidth: 1.5},
            label: {show: !0},
            animationEasing: "linear",
            animationDuration: 700,
            animationDurationUpdate: 500
        }, n
    }(Iz);
    df(Uv);
    var dH = function () {
        }, fH = ["treemapZoomToNode", "treemapRender", "treemapMove"], gH = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.preventUsingHoverLayer = !0, e
            }

            return e(n, t), n.prototype.getInitialData = function (t, e) {
                function n(t) {
                    t.wrapMethod("getItemModel", function (t, e) {
                        var n = l.getNodeByDataIndex(e), i = n ? s[n.depth] : null;
                        return t.parentModel = i || a, t
                    })
                }

                var i = {name: t.name, children: t.data};
                Kv(i);
                var r = t.levels || [], o = this.designatedVisualItemStyle = {}, a = new VO({itemStyle: o}, this, e);
                r = t.levels = $v(r, e);
                var s = v(r || [], function (t) {
                    return new VO(t, a, e)
                }, this), l = cH.createTree(i, this, n);
                return l.data
            }, n.prototype.optionUpdated = function () {
                this.resetViewRoot()
            }, n.prototype.formatTooltip = function (t) {
                var e = this.getData(), n = this.getRawValue(t), i = e.getName(t);
                return rh("nameValue", {name: i, value: n})
            }, n.prototype.getDataParams = function (e) {
                var n = t.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(e);
                return n.treePathInfo = Vv(i, this), n
            }, n.prototype.setLayoutInfo = function (t) {
                this.layoutInfo = this.layoutInfo || {}, h(this.layoutInfo, t)
            }, n.prototype.mapIdToIndex = function (t) {
                var e = this._idIndexMap;
                e || (e = this._idIndexMap = Z(), this._idIndexMapCount = 0);
                var n = e.get(t);
                return null == n && e.set(t, n = this._idIndexMapCount++), n
            }, n.prototype.getViewRoot = function () {
                return this._viewRoot
            }, n.prototype.resetViewRoot = function (t) {
                t ? this._viewRoot = t : t = this._viewRoot;
                var e = this.getRawData().tree.root;
                (!t || t !== e && !e.contains(t)) && (this._viewRoot = e)
            }, n.prototype.enableAriaDecal = function () {
                qv(this)
            }, n.type = "series.treemap", n.layoutMode = "box", n.defaultOption = {
                progressive: 0,
                left: "center",
                top: "middle",
                width: "80%",
                height: "80%",
                sort: !0,
                clipWindow: "origin",
                squareRatio: .5 * (1 + Math.sqrt(5)),
                leafDepth: null,
                drillDownIcon: "▶",
                zoomToNodeRatio: .1024,
                roam: !0,
                nodeClick: "zoomToNode",
                animation: !0,
                animationDurationUpdate: 900,
                animationEasing: "quinticInOut",
                breadcrumb: {
                    show: !0,
                    height: 22,
                    left: "center",
                    top: "bottom",
                    emptyItemWidth: 25,
                    itemStyle: {color: "rgba(0,0,0,0.7)", textStyle: {color: "#fff"}}
                },
                label: {show: !0, distance: 0, padding: 5, position: "inside", color: "#fff", overflow: "truncate"},
                upperLabel: {show: !1, position: [0, "50%"], height: 20, overflow: "truncate", verticalAlign: "middle"},
                itemStyle: {
                    color: null,
                    colorAlpha: null,
                    colorSaturation: null,
                    borderWidth: 0,
                    gapWidth: 0,
                    borderColor: "#fff",
                    borderColorSaturation: null
                },
                emphasis: {upperLabel: {show: !0, position: [0, "50%"], ellipsis: !0, verticalAlign: "middle"}},
                visualDimension: 0,
                visualMin: null,
                visualMax: null,
                color: [],
                colorAlpha: null,
                colorSaturation: null,
                colorMappingBy: "index",
                visibleMin: 10,
                childrenVisibleMin: null,
                levels: []
            }, n
        }(Iz), yH = 8, vH = 8, mH = 5, xH = function () {
            function t(t) {
                this.group = new sL, t.add(this.group)
            }

            return t.prototype.render = function (t, e, n, i) {
                var r = t.getModel("breadcrumb"), o = this.group;
                if (o.removeAll(), r.get("show") && n) {
                    var a = r.getModel("itemStyle"), s = a.getModel("textStyle"), l = {
                        pos: {left: r.get("left"), right: r.get("right"), top: r.get("top"), bottom: r.get("bottom")},
                        box: {width: e.getWidth(), height: e.getHeight()},
                        emptyItemWidth: r.get("emptyItemWidth"),
                        totalWidth: 0,
                        renderList: []
                    };
                    this._prepare(n, l, s), this._renderContent(t, l, a, s, i), Pl(o, l.pos, l.box)
                }
            }, t.prototype._prepare = function (t, e, n) {
                for (var i = t; i; i = i.parentNode) {
                    var r = er(i.getModel().get("name"), ""), o = n.getTextRect(r),
                        a = Math.max(o.width + 2 * yH, e.emptyItemWidth);
                    e.totalWidth += a + vH, e.renderList.push({node: i, text: r, width: a})
                }
            }, t.prototype._renderContent = function (t, e, n, i, r) {
                for (var o = 0, a = e.emptyItemWidth, s = t.get(["breadcrumb", "height"]), l = Ll(e.pos, e.box), u = e.totalWidth, h = e.renderList, p = h.length - 1; p >= 0; p--) {
                    var d = h[p], f = d.node, g = d.width, y = d.text;
                    u > l.width && (u -= g - a, g = a, y = null);
                    var v = new KP({
                        shape: {points: Jv(o, 0, g, s, p === h.length - 1, 0 === p)},
                        style: c(n.getItemStyle(), {lineJoin: "bevel"}),
                        textContent: new $k({style: {text: y, fill: i.getTextColor(), font: i.getFont()}}),
                        textConfig: {position: "inside"},
                        z2: 1e4 * uP,
                        onclick: S(r, f)
                    });
                    v.disableLabelAnimation = !0, this.group.add(v), Qv(v, t, f), o += g + vH
                }
            }, t.prototype.remove = function () {
                this.group.removeAll()
            }, t
        }(), _H = function () {
            function t() {
                this._storage = [], this._elExistsMap = {}
            }

            return t.prototype.add = function (t, e, n, i, r) {
                return this._elExistsMap[t.id] ? !1 : (this._elExistsMap[t.id] = !0, this._storage.push({
                    el: t,
                    target: e,
                    duration: n,
                    delay: i,
                    easing: r
                }), !0)
            }, t.prototype.finished = function (t) {
                return this._finishedCallback = t, this
            }, t.prototype.start = function () {
                for (var t = this, e = this._storage.length, n = function () {
                    e--, 0 >= e && (t._storage.length = 0, t._elExistsMap = {}, t._finishedCallback && t._finishedCallback())
                }, i = 0, r = this._storage.length; r > i; i++) {
                    var o = this._storage[i];
                    o.el.animateTo(o.target, {
                        duration: o.duration,
                        delay: o.delay,
                        easing: o.easing,
                        setToFinal: !0,
                        done: n,
                        aborted: n
                    })
                }
                return this
            }, t
        }(), bH = sL, wH = Uk, SH = 3, MH = "label", IH = "upperLabel", TH = 10 * uP, CH = 2 * uP, AH = 3 * uP,
        DH = Ar([["fill", "color"], ["stroke", "strokeColor"], ["lineWidth", "strokeWidth"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]),
        LH = function (t) {
            var e = DH(t);
            return e.stroke = e.fill = e.lineWidth = null, e
        }, kH = ur(), PH = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._state = "ready", e._storage = em(), e
            }

            return e(n, t), n.prototype.render = function (t, e, n, i) {
                var r = e.findComponents({mainType: "series", subType: "treemap", query: i});
                if (!(p(r, t) < 0)) {
                    this.seriesModel = t, this.api = n, this.ecModel = e;
                    var o = ["treemapZoomToNode", "treemapRootToNode"], a = Ev(i, o, t), s = i && i.type, l = t.layoutInfo,
                        u = !this._oldTree, h = this._storage, c = "treemapRootToNode" === s && a && h ? {
                            rootNodeGroup: h.nodeGroup[a.node.getRawIndex()],
                            direction: i.direction
                        } : null, d = this._giveContainerGroup(l), f = this._doRender(d, t, c);
                    u || s && "treemapZoomToNode" !== s && "treemapRootToNode" !== s ? f.renderFinally() : this._doAnimation(d, f, t, c), this._resetController(n), this._renderBreadcrumb(t, n, a)
                }
            }, n.prototype._giveContainerGroup = function (t) {
                var e = this._containerGroup;
                return e || (e = this._containerGroup = new bH, this._initEvents(e), this.group.add(e)), e.x = t.x, e.y = t.y, e
            }, n.prototype._doRender = function (t, e, n) {
                function i(t, i, r, o) {
                    return nm(e, h, c, n, u, p, t, i, r, o)
                }

                function r(t, e, n, o, a) {
                    function s(t) {
                        return t.getId()
                    }

                    function l(s, l) {
                        var u = null != s ? t[s] : null, h = null != l ? e[l] : null, c = i(u, h, n, a);
                        c && r(u && u.viewChildren || [], h && h.viewChildren || [], c, o, a + 1)
                    }

                    o ? (e = t, y(t, function (t, e) {
                        !t.isRemoved() && l(e, e)
                    })) : new tV(e, t, s, s).add(l).update(l).remove(S(l, null)).execute()
                }

                function o(t) {
                    var e = em();
                    return t && y(t, function (t, n) {
                        var i = e[n];
                        y(t, function (t) {
                            t && (i.push(t), kH(t).willDelete = !0)
                        })
                    }), e
                }

                function a() {
                    y(d, function (t) {
                        y(t, function (t) {
                            t.parent && t.parent.remove(t)
                        })
                    }), y(p, function (t) {
                        t.invisible = !0, t.dirty()
                    })
                }

                var s = e.getData().tree, l = this._oldTree, u = em(), h = em(), c = this._storage, p = [];
                r(s.root ? [s.root] : [], l && l.root ? [l.root] : [], t, s === l || !l, 0);
                var d = o(c);
                return this._oldTree = s, this._storage = h, {lastsForAnimation: u, willDeleteEls: d, renderFinally: a}
            }, n.prototype._doAnimation = function (t, e, n, i) {
                if (n.get("animation")) {
                    var r = n.get("animationDurationUpdate"), o = n.get("animationEasing"), a = (I(r) ? 0 : r) || 0,
                        s = (I(o) ? null : o) || "cubicOut", l = tm();
                    y(e.willDeleteEls, function (t, e) {
                        y(t, function (t) {
                            if (!t.invisible) {
                                var n, r = t.parent, o = kH(r);
                                if (i && "drillDown" === i.direction) n = r === i.rootNodeGroup ? {
                                    shape: {
                                        x: 0,
                                        y: 0,
                                        width: o.nodeWidth,
                                        height: o.nodeHeight
                                    }, style: {opacity: 0}
                                } : {style: {opacity: 0}}; else {
                                    var u = 0, h = 0;
                                    o.willDelete || (u = o.nodeWidth / 2, h = o.nodeHeight / 2), n = "nodeGroup" === e ? {
                                        x: u,
                                        y: h,
                                        style: {opacity: 0}
                                    } : {shape: {x: u, y: h, width: 0, height: 0}, style: {opacity: 0}}
                                }
                                n && l.add(t, n, a, 0, s)
                            }
                        })
                    }), y(this._storage, function (t, n) {
                        y(t, function (t, i) {
                            var r = e.lastsForAnimation[n][i], o = {};
                            r && (t instanceof sL ? null != r.oldX && (o.x = t.x, o.y = t.y, t.x = r.oldX, t.y = r.oldY) : (r.oldShape && (o.shape = h({}, t.shape), t.setShape(r.oldShape)), r.fadein ? (t.setStyle("opacity", 0), o.style = {opacity: 1}) : 1 !== t.style.opacity && (o.style = {opacity: 1})), l.add(t, o, a, 0, s))
                        })
                    }, this), this._state = "animating", l.finished(xA(function () {
                        this._state = "ready", e.renderFinally()
                    }, this)).start()
                }
            }, n.prototype._resetController = function (t) {
                var e = this._controller;
                e || (e = this._controller = new rH(t.getZr()), e.enable(this.seriesModel.get("roam")), e.on("pan", xA(this._onPan, this)), e.on("zoom", xA(this._onZoom, this)));
                var n = new $D(0, 0, t.getWidth(), t.getHeight());
                e.setPointerChecker(function (t, e, i) {
                    return n.contain(e, i)
                })
            }, n.prototype._clearController = function () {
                var t = this._controller;
                t && (t.dispose(), t = null)
            }, n.prototype._onPan = function (t) {
                if ("animating" !== this._state && (Math.abs(t.dx) > SH || Math.abs(t.dy) > SH)) {
                    var e = this.seriesModel.getData().tree.root;
                    if (!e) return;
                    var n = e.getLayout();
                    if (!n) return;
                    this.api.dispatchAction({
                        type: "treemapMove",
                        from: this.uid,
                        seriesId: this.seriesModel.id,
                        rootRect: {x: n.x + t.dx, y: n.y + t.dy, width: n.width, height: n.height}
                    })
                }
            }, n.prototype._onZoom = function (t) {
                var e = t.originX, n = t.originY;
                if ("animating" !== this._state) {
                    var i = this.seriesModel.getData().tree.root;
                    if (!i) return;
                    var r = i.getLayout();
                    if (!r) return;
                    var o = new $D(r.x, r.y, r.width, r.height), a = this.seriesModel.layoutInfo;
                    e -= a.x, n -= a.y;
                    var s = Gn();
                    Yn(s, s, [-e, -n]), Un(s, s, [t.scale, t.scale]), Yn(s, s, [e, n]), o.applyTransform(s), this.api.dispatchAction({
                        type: "treemapRender",
                        from: this.uid,
                        seriesId: this.seriesModel.id,
                        rootRect: {x: o.x, y: o.y, width: o.width, height: o.height}
                    })
                }
            }, n.prototype._initEvents = function (t) {
                var e = this;
                t.on("click", function (t) {
                    if ("ready" === e._state) {
                        var n = e.seriesModel.get("nodeClick", !0);
                        if (n) {
                            var i = e.findTarget(t.offsetX, t.offsetY);
                            if (i) {
                                var r = i.node;
                                if (r.getLayout().isLeafRoot) e._rootToNode(i); else if ("zoomToNode" === n) e._zoomToNode(i); else if ("link" === n) {
                                    var o = r.hostTree.data.getItemModel(r.dataIndex), a = o.get("link", !0),
                                        s = o.get("target", !0) || "blank";
                                    a && Al(a, s)
                                }
                            }
                        }
                    }
                }, this)
            }, n.prototype._renderBreadcrumb = function (t, e, n) {
                var i = this;
                n || (n = null != t.get("leafDepth", !0) ? {node: t.getViewRoot()} : this.findTarget(e.getWidth() / 2, e.getHeight() / 2), n || (n = {node: t.getData().tree.root})), (this._breadcrumb || (this._breadcrumb = new xH(this.group))).render(t, e, n.node, function (e) {
                    "animating" !== i._state && (Bv(t.getViewRoot(), e) ? i._rootToNode({node: e}) : i._zoomToNode({node: e}))
                })
            }, n.prototype.remove = function () {
                this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = em(), this._state = "ready", this._breadcrumb && this._breadcrumb.remove()
            }, n.prototype.dispose = function () {
                this._clearController()
            }, n.prototype._zoomToNode = function (t) {
                this.api.dispatchAction({
                    type: "treemapZoomToNode",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    targetNode: t.node
                })
            }, n.prototype._rootToNode = function (t) {
                this.api.dispatchAction({
                    type: "treemapRootToNode",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    targetNode: t.node
                })
            }, n.prototype.findTarget = function (t, e) {
                var n, i = this.seriesModel.getViewRoot();
                return i.eachNode({attr: "viewChildren", order: "preorder"}, function (i) {
                    var r = this._storage.background[i.getRawIndex()];
                    if (r) {
                        var o = r.transformCoordToLocal(t, e), a = r.shape;
                        if (!(a.x <= o[0] && o[0] <= a.x + a.width && a.y <= o[1] && o[1] <= a.y + a.height)) return !1;
                        n = {node: i, offsetX: o[0], offsetY: o[1]}
                    }
                }, this), n
            }, n.type = "treemap", n
        }(Dz), OH = y, RH = D, zH = -1, EH = function () {
            function t(e) {
                var n = e.mappingMethod, i = e.type, r = this.option = s(e);
                this.type = i, this.mappingMethod = n, this._normalizeData = NH[n];
                var o = t.visualHandlers[i];
                this.applyVisual = o.applyVisual, this.getColorMapper = o.getColorMapper, this._normalizedToVisual = o._normalizedToVisual[n], "piecewise" === n ? (am(r), rm(r)) : "category" === n ? r.categories ? om(r) : am(r, !0) : (H("linear" !== n || r.dataExtent), am(r))
            }

            return t.prototype.mapValueToVisual = function (t) {
                var e = this._normalizeData(t);
                return this._normalizedToVisual(e, t)
            }, t.prototype.getNormalizer = function () {
                return xA(this._normalizeData, this)
            }, t.listVisualTypes = function () {
                return b(t.visualHandlers)
            }, t.isValidType = function (e) {
                return t.visualHandlers.hasOwnProperty(e)
            }, t.eachVisual = function (t, e, n) {
                D(t) ? y(t, e, n) : e.call(n, t)
            }, t.mapVisual = function (e, n, i) {
                var r, o = M(e) ? [] : D(e) ? {} : (r = !0, null);
                return t.eachVisual(e, function (t, e) {
                    var a = n.call(i, t, e);
                    r ? o = a : o[e] = a
                }), o
            }, t.retrieveVisuals = function (e) {
                var n, i = {};
                return e && OH(t.visualHandlers, function (t, r) {
                    e.hasOwnProperty(r) && (i[r] = e[r], n = !0)
                }), n ? i : null
            }, t.prepareVisualTypes = function (t) {
                if (M(t)) t = t.slice(); else {
                    if (!RH(t)) return [];
                    var e = [];
                    OH(t, function (t, n) {
                        e.push(n)
                    }), t = e
                }
                return t.sort(function (t, e) {
                    return "color" === e && "color" !== t && 0 === t.indexOf("color") ? 1 : -1
                }), t
            }, t.dependsOn = function (t, e) {
                return "color" === e ? !(!t || 0 !== t.indexOf(e)) : t === e
            }, t.findPieceIndex = function (t, e, n) {
                function i(e, n) {
                    var i = Math.abs(e - t);
                    o > i && (o = i, r = n)
                }

                for (var r, o = 1 / 0, a = 0, s = e.length; s > a; a++) {
                    var l = e[a].value;
                    if (null != l) {
                        if (l === t || "string" == typeof l && l === t + "") return a;
                        n && i(l, a)
                    }
                }
                for (var a = 0, s = e.length; s > a; a++) {
                    var u = e[a], h = u.interval, c = u.close;
                    if (h) {
                        if (h[0] === -1 / 0) {
                            if (gm(c[1], t, h[1])) return a
                        } else if (1 / 0 === h[1]) {
                            if (gm(c[0], h[0], t)) return a
                        } else if (gm(c[0], h[0], t) && gm(c[1], t, h[1])) return a;
                        n && i(h[0], a), n && i(h[1], a)
                    }
                }
                return n ? 1 / 0 === t ? e.length - 1 : t === -1 / 0 ? 0 : r : void 0
            }, t.visualHandlers = {
                color: {
                    applyVisual: um("color"), getColorMapper: function () {
                        var t = this.option;
                        return xA("category" === t.mappingMethod ? function (t, e) {
                            return !e && (t = this._normalizeData(t)), hm.call(this, t)
                        } : function (e, n, i) {
                            var r = !!i;
                            return !n && (e = this._normalizeData(e)), i = cn(e, t.parsedVisual, i), r ? i : gn(i, "rgba")
                        }, this)
                    }, _normalizedToVisual: {
                        linear: function (t) {
                            return gn(cn(t, this.option.parsedVisual), "rgba")
                        }, category: hm, piecewise: function (t, e) {
                            var n = dm.call(this, e);
                            return null == n && (n = gn(cn(t, this.option.parsedVisual), "rgba")), n
                        }, fixed: cm
                    }
                },
                colorHue: sm(function (t, e) {
                    return dn(t, e)
                }),
                colorSaturation: sm(function (t, e) {
                    return dn(t, null, e)
                }),
                colorLightness: sm(function (t, e) {
                    return dn(t, null, null, e)
                }),
                colorAlpha: sm(function (t, e) {
                    return fn(t, e)
                }),
                decal: {
                    applyVisual: um("decal"),
                    _normalizedToVisual: {linear: null, category: hm, piecewise: null, fixed: null}
                },
                opacity: {applyVisual: um("opacity"), _normalizedToVisual: pm([0, 1])},
                liftZ: {
                    applyVisual: um("liftZ"),
                    _normalizedToVisual: {linear: cm, category: cm, piecewise: cm, fixed: cm}
                },
                symbol: {
                    applyVisual: function (t, e, n) {
                        var i = this.mapValueToVisual(t);
                        n("symbol", i)
                    }, _normalizedToVisual: {
                        linear: lm, category: hm, piecewise: function (t, e) {
                            var n = dm.call(this, e);
                            return null == n && (n = lm.call(this, t)), n
                        }, fixed: cm
                    }
                },
                symbolSize: {applyVisual: um("symbolSize"), _normalizedToVisual: pm([0, 1])}
            }, t
        }(), NH = {
            linear: function (t) {
                return xi(t, this.option.dataExtent, [0, 1], !0)
            }, piecewise: function (t) {
                var e = this.option.pieceList, n = EH.findPieceIndex(t, e, !0);
                return null != n ? xi(n, [0, e.length - 1], [0, 1], !0) : void 0
            }, category: function (t) {
                var e = this.option.categories ? this.option.categoryMap[t] : t;
                return null == e ? zH : e
            }, fixed: K
        }, BH = "itemStyle", VH = ur(), FH = {
            seriesType: "treemap", reset: function (t) {
                var e = t.getData().tree, n = e.root;
                n.isRemoved() || ym(n, {}, t.getViewRoot().getAncestors(), t)
            }
        }, GH = Math.max, HH = Math.min, WH = N, XH = y, YH = ["itemStyle", "borderWidth"], ZH = ["itemStyle", "gapWidth"],
        UH = ["upperLabel", "show"], jH = ["upperLabel", "height"], qH = {
            seriesType: "treemap", reset: function (t, e, n, i) {
                var r = n.getWidth(), o = n.getHeight(), a = t.option,
                    s = kl(t.getBoxLayoutParams(), {width: n.getWidth(), height: n.getHeight()}), l = a.size || [],
                    u = _i(WH(s.width, l[0]), r), c = _i(WH(s.height, l[1]), o), p = i && i.type,
                    d = ["treemapZoomToNode", "treemapRootToNode"], f = Ev(i, d, t),
                    g = "treemapRender" === p || "treemapMove" === p ? i.rootRect : null, y = t.getViewRoot(), v = Nv(y);
                if ("treemapMove" !== p) {
                    var m = "treemapZoomToNode" === p ? km(t, f, y, u, c) : g ? [g.width, g.height] : [u, c], x = a.sort;
                    x && "asc" !== x && "desc" !== x && (x = "desc");
                    var _ = {squareRatio: a.squareRatio, sort: x, leafDepth: a.leafDepth};
                    y.hostTree.clearLayouts();
                    var b = {x: 0, y: 0, width: m[0], height: m[1], area: m[0] * m[1]};
                    y.setLayout(b), Mm(y, _, !1, 0), b = y.getLayout(), XH(v, function (t, e) {
                        var n = (v[e + 1] || y).getValue();
                        t.setLayout(h({dataExtent: [n, n], borderWidth: 0, upperHeight: 0}, b))
                    })
                }
                var w = t.getData().tree.root;
                w.setLayout(Pm(s, g, f), !0), t.setLayoutInfo(s), Om(w, new $D(-s.x, -s.y, r, o), v, y, 0)
            }
        };
    df(zm);
    var KH = 2, $H = 4, JH = function (t) {
        function n(e, n, i, r) {
            var o = t.call(this) || this;
            o.z2 = KH, o.textConfig = {inside: !0}, tP(o).seriesIndex = n.seriesIndex;
            var a = new $k({z2: $H, silent: e.getModel().get(["label", "silent"])});
            return o.setTextContent(a), o.updateData(!0, e, n, i, r), o
        }

        return e(n, t), n.prototype.updateData = function (t, e, n, i, r) {
            this.node = e, e.piece = this, n = n || this._seriesModel, i = i || this._ecModel;
            var o = this;
            tP(o).dataIndex = e.dataIndex;
            var a = e.getModel(), s = a.getModel("emphasis"), l = e.getLayout(), u = h({}, l);
            u.label = null;
            var c = e.getVisual("style");
            c.lineJoin = "bevel";
            var p = e.getVisual("decal");
            p && (c.decal = qc(p, r));
            var d = Wg(a.getModel("itemStyle"), u);
            h(u, d), y(sP, function (t) {
                var e = o.ensureState(t), n = a.getModel([t, "itemStyle"]);
                e.style = n.getItemStyle();
                var i = Wg(n, u);
                i && (e.shape = i)
            }), t ? (o.setShape(u), o.shape.r = l.r0, us(o, {shape: {r: l.r}}, n, e.dataIndex)) : us(o, {shape: u}, n), o.useStyle(c), this._updateLabel(n);
            var f = a.getShallow("cursor");
            f && o.attr("cursor", f), this._seriesModel = n || this._seriesModel, this._ecModel = i || this._ecModel;
            var g = s.get("focus"),
                v = "ancestor" === g ? e.getAncestorsIndices() : "descendant" === g ? e.getDescendantIndices() : g;
            Sa(this, v, s.get("blurScope"))
        }, n.prototype._updateLabel = function (t) {
            function e(t, e) {
                var n = t.get(e);
                return null == n ? r.get(e) : n
            }

            var n = this, i = this.node.getModel(), r = i.getModel("label"), o = this.node.getLayout(),
                a = o.endAngle - o.startAngle, s = (o.startAngle + o.endAngle) / 2, l = Math.cos(s), u = Math.sin(s),
                h = this, c = h.getTextContent(), p = this.node.dataIndex, d = r.get("minAngle") / 180 * Math.PI,
                f = r.get("show") && !(null != d && Math.abs(a) < d);
            c.ignore = !f, y(lP, function (r) {
                var a = i.getModel("normal" === r ? "label" : [r, "label"]), d = "normal" === r,
                    f = d ? c : c.ensureState(r), g = t.getFormattedLabel(p, r);
                d && (g = g || n.node.name), f.style = Os(a, {}, null, "normal" !== r, !0), g && (f.style.text = g);
                var y = a.get("show");
                null == y || d || (f.ignore = !y);
                var v = e(a, "position"), m = d ? h : h.states[r], x = m.style.fill;
                m.textConfig = {outsideFill: "inherit" === a.get("color") ? x : null, inside: "outside" !== v};
                var _, b = e(a, "distance") || 0, w = e(a, "align");
                "outside" === v ? (_ = o.r + b, w = s > Math.PI / 2 ? "right" : "left") : w && "center" !== w ? "left" === w ? (_ = o.r0 + b, s > Math.PI / 2 && (w = "right")) : "right" === w && (_ = o.r - b, s > Math.PI / 2 && (w = "left")) : (_ = (o.r + o.r0) / 2, w = "center"), f.style.align = w, f.style.verticalAlign = e(a, "verticalAlign") || "middle", f.x = _ * l + o.cx, f.y = _ * u + o.cy;
                var S = e(a, "rotate"), M = 0;
                "radial" === S ? (M = -s, M < -Math.PI / 2 && (M += Math.PI)) : "tangential" === S ? (M = Math.PI / 2 - s, M > Math.PI / 2 ? M -= Math.PI : M < -Math.PI / 2 && (M += Math.PI)) : "number" == typeof S && (M = S * Math.PI / 180), f.rotation = M
            }), c.dirtyStyle()
        }, n
    }(ZP), QH = "sunburstRootToNode", tW = "sunburstHighlight", eW = "sunburstUnhighlight", nW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            function i(t, e) {
                function n(t) {
                    return t.getId()
                }

                function i(n, i) {
                    var o = null == n ? null : t[n], a = null == i ? null : e[i];
                    r(o, a)
                }

                (0 !== t.length || 0 !== e.length) && new tV(e, t, n, n).add(i).update(i).remove(S(i, null)).execute()
            }

            function r(i, r) {
                if (p || !i || i.getValue() || (i = null), i !== u && r !== u) if (r && r.piece) i ? (r.piece.updateData(!1, i, t, e, n), l.setItemGraphicEl(i.dataIndex, r.piece)) : o(r); else if (i) {
                    var a = new JH(i, t, e, n);
                    c.add(a), l.setItemGraphicEl(i.dataIndex, a)
                }
            }

            function o(t) {
                t && t.piece && (c.remove(t.piece), t.piece = null)
            }

            function a(i, r) {
                r.depth > 0 ? (s.virtualPiece ? s.virtualPiece.updateData(!1, i, t, e, n) : (s.virtualPiece = new JH(i, t, e, n), c.add(s.virtualPiece)), r.piece.off("click"), s.virtualPiece.on("click", function () {
                    s._rootToNode(r.parentNode)
                })) : s.virtualPiece && (c.remove(s.virtualPiece), s.virtualPiece = null)
            }

            var s = this;
            this.seriesModel = t, this.api = n, this.ecModel = e;
            var l = t.getData(), u = l.tree.root, h = t.getViewRoot(), c = this.group,
                p = t.get("renderLabelForZeroData"), d = [];
            h.eachNode(function (t) {
                d.push(t)
            });
            var f = this._oldChildren || [];
            i(d, f), a(u, h), this._initEvents(), this._oldChildren = d
        }, n.prototype._initEvents = function () {
            var t = this;
            this.group.off("click"), this.group.on("click", function (e) {
                var n = !1, i = t.seriesModel.getViewRoot();
                i.eachNode(function (i) {
                    if (!n && i.piece && i.piece === e.target) {
                        var r = i.getModel().get("nodeClick");
                        if ("rootToNode" === r) t._rootToNode(i); else if ("link" === r) {
                            var o = i.getModel(), a = o.get("link");
                            if (a) {
                                var s = o.get("target", !0) || "_blank";
                                Al(a, s)
                            }
                        }
                        n = !0
                    }
                })
            })
        }, n.prototype._rootToNode = function (t) {
            t !== this.seriesModel.getViewRoot() && this.api.dispatchAction({
                type: QH,
                from: this.uid,
                seriesId: this.seriesModel.id,
                targetNode: t
            })
        }, n.prototype.containPoint = function (t, e) {
            var n = e.getData(), i = n.getItemLayout(0);
            if (i) {
                var r = t[0] - i.cx, o = t[1] - i.cy, a = Math.sqrt(r * r + o * o);
                return a <= i.r && a >= i.r0
            }
        }, n.type = "sunburst", n
    }(Dz), iW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.ignoreStyleOnData = !0, e
        }

        return e(n, t), n.prototype.getInitialData = function (t, e) {
            function n(t) {
                t.wrapMethod("getItemModel", function (t, e) {
                    var n = o.getNodeByDataIndex(e), i = r[n.depth];
                    return i && (t.parentModel = i), t
                })
            }

            var i = {name: t.name, children: t.data};
            Nm(i);
            var r = v(t.levels || [], function (t) {
                return new VO(t, this, e)
            }, this), o = cH.createTree(i, this, n);
            return o.data
        }, n.prototype.optionUpdated = function () {
            this.resetViewRoot()
        }, n.prototype.getDataParams = function (e) {
            var n = t.prototype.getDataParams.apply(this, arguments), i = this.getData().tree.getNodeByDataIndex(e);
            return n.treePathInfo = Vv(i, this), n
        }, n.prototype.getViewRoot = function () {
            return this._viewRoot
        }, n.prototype.resetViewRoot = function (t) {
            t ? this._viewRoot = t : t = this._viewRoot;
            var e = this.getRawData().tree.root;
            (!t || t !== e && !e.contains(t)) && (this._viewRoot = e)
        }, n.prototype.enableAriaDecal = function () {
            qv(this)
        }, n.type = "series.sunburst", n.defaultOption = {
            zlevel: 0,
            z: 2,
            center: ["50%", "50%"],
            radius: [0, "75%"],
            clockwise: !0,
            startAngle: 90,
            minAngle: 0,
            stillShowZeroSum: !0,
            nodeClick: "rootToNode",
            renderLabelForZeroData: !1,
            label: {
                rotate: "radial",
                show: !0,
                opacity: 1,
                align: "center",
                position: "inside",
                distance: 5,
                silent: !0
            },
            itemStyle: {
                borderWidth: 1,
                borderColor: "white",
                borderType: "solid",
                shadowBlur: 0,
                shadowColor: "rgba(0, 0, 0, 0.2)",
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            },
            emphasis: {focus: "descendant"},
            blur: {itemStyle: {opacity: .2}, label: {opacity: .1}},
            animationType: "expansion",
            animationDuration: 1e3,
            animationDurationUpdate: 500,
            data: [],
            levels: [],
            sort: "desc"
        }, n
    }(Iz), rW = Math.PI / 180;
    df(Hm);
    var oW = eO.prototype, aW = rO.prototype, sW = function () {
            function t() {
                this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
            }

            return t
        }(), lW = (function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n
        }(sW), function (t) {
            function n(e) {
                var n = t.call(this, e) || this;
                return n.type = "ec-line", n
            }

            return e(n, t), n.prototype.getDefaultStyle = function () {
                return {stroke: "#000", fill: null}
            }, n.prototype.getDefaultShape = function () {
                return new sW
            }, n.prototype.buildPath = function (t, e) {
                Wm(e) ? oW.buildPath.call(this, t, e) : aW.buildPath.call(this, t, e)
            }, n.prototype.pointAt = function (t) {
                return Wm(this.shape) ? oW.pointAt.call(this, t) : aW.pointAt.call(this, t)
            }, n.prototype.tangentAt = function (t) {
                var e = this.shape, n = Wm(e) ? [e.x2 - e.x1, e.y2 - e.y1] : aW.tangentAt.call(this, t);
                return he(n, n)
            }, n
        }(Bk)), uW = ["fromSymbol", "toSymbol"], hW = function (t) {
            function n(e, n, i) {
                var r = t.call(this) || this;
                return r._createLine(e, n, i), r
            }

            return e(n, t), n.prototype._createLine = function (t, e, n) {
                var i = t.hostModel, r = t.getItemLayout(e), o = Zm(r);
                o.shape.percent = 0, hs(o, {shape: {percent: 1}}, i, e), this.add(o), y(uW, function (n) {
                    var i = Ym(n, t, e);
                    this.add(i), this[Xm(n)] = t.getItemVisual(e, n)
                }, this), this._updateCommonStl(t, e, n)
            }, n.prototype.updateData = function (t, e, n) {
                var i = t.hostModel, r = this.childOfName("line"), o = t.getItemLayout(e), a = {shape: {}};
                Um(a.shape, o), us(r, a, i, e), y(uW, function (n) {
                    var i = t.getItemVisual(e, n), r = Xm(n);
                    if (this[r] !== i) {
                        this.remove(this.childOfName(n));
                        var o = Ym(n, t, e);
                        this.add(o)
                    }
                    this[r] = i
                }, this), this._updateCommonStl(t, e, n)
            }, n.prototype.getLinePath = function () {
                return this.childAt(0)
            }, n.prototype._updateCommonStl = function (t, e, n) {
                var i = t.hostModel, r = this.childOfName("line"), o = n && n.emphasisLineStyle, a = n && n.blurLineStyle,
                    s = n && n.selectLineStyle, l = n && n.labelStatesModels;
                if (!n || t.hasItemOption) {
                    var u = t.getItemModel(e);
                    o = u.getModel(["emphasis", "lineStyle"]).getLineStyle(), a = u.getModel(["blur", "lineStyle"]).getLineStyle(), s = u.getModel(["select", "lineStyle"]).getLineStyle(), l = Ps(u)
                }
                var h = t.getItemVisual(e, "style"), c = h.stroke;
                r.useStyle(h), r.style.fill = null, r.style.strokeNoScale = !0, r.ensureState("emphasis").style = o, r.ensureState("blur").style = a, r.ensureState("select").style = s, y(uW, function (t) {
                    var e = this.childOfName(t);
                    if (e) {
                        e.setColor(c), e.style.opacity = h.opacity;
                        for (var n = 0; n < sP.length; n++) {
                            var i = sP[n], o = r.getState(i);
                            if (o) {
                                var a = o.style || {}, s = e.ensureState(i), l = s.style || (s.style = {});
                                null != a.stroke && (l[e.__isEmptyBrush ? "stroke" : "fill"] = a.stroke), null != a.opacity && (l.opacity = a.opacity)
                            }
                        }
                        e.markRedraw()
                    }
                }, this);
                var p = i.getRawValue(e);
                ks(this, l, {
                    labelDataIndex: e,
                    labelFetcher: {
                        getFormattedLabel: function (e, n) {
                            return i.getFormattedLabel(e, n, t.dataType)
                        }
                    },
                    inheritColor: c || "#000",
                    defaultOpacity: h.opacity,
                    defaultText: (null == p ? t.getName(e) : isFinite(p) ? bi(p) : p) + ""
                });
                var d = this.getTextContent();
                if (d) {
                    var f = l.normal;
                    d.__align = d.style.align, d.__verticalAlign = d.style.verticalAlign, d.__position = f.get("position") || "middle";
                    var g = f.get("distance");
                    M(g) || (g = [g, g]), d.__labelDistance = g
                }
                this.setTextConfig({position: null, local: !0, inside: !1}), Sa(this)
            }, n.prototype.highlight = function () {
                aa(this)
            }, n.prototype.downplay = function () {
                sa(this)
            }, n.prototype.updateLayout = function (t, e) {
                this.setLinePoints(t.getItemLayout(e))
            }, n.prototype.setLinePoints = function (t) {
                var e = this.childOfName("line");
                Um(e.shape, t), e.dirty()
            }, n.prototype.beforeUpdate = function () {
                function t(t, e) {
                    var n = t.__specifiedRotation;
                    if (null == n) {
                        var i = s.tangentAt(e);
                        t.attr("rotation", (1 === e ? -1 : 1) * Math.PI / 2 - Math.atan2(i[1], i[0]))
                    } else t.attr("rotation", n)
                }

                var e = this, n = e.childOfName("fromSymbol"), i = e.childOfName("toSymbol"), r = e.getTextContent();
                if (n || i || r && !r.ignore) {
                    for (var o = 1, a = this.parent; a;) a.scaleX && (o /= a.scaleX), a = a.parent;
                    var s = e.childOfName("line");
                    if (this.__dirty || s.__dirty) {
                        var l = s.shape.percent, u = s.pointAt(0), h = s.pointAt(l), c = ie([], h, u);
                        if (he(c, c), n && (n.setPosition(u), t(n, 0), n.scaleX = n.scaleY = o * l, n.markRedraw()), i && (i.setPosition(h), t(i, 1), i.scaleX = i.scaleY = o * l, i.markRedraw()), r && !r.ignore) {
                            r.x = r.y = 0, r.originX = r.originY = 0;
                            var p = void 0, d = void 0, f = r.__labelDistance, g = f[0] * o, y = f[1] * o, v = l / 2,
                                m = s.tangentAt(v), x = [m[1], -m[0]], _ = s.pointAt(v);
                            x[1] > 0 && (x[0] = -x[0], x[1] = -x[1]);
                            var b = m[0] < 0 ? -1 : 1;
                            if ("start" !== r.__position && "end" !== r.__position) {
                                var w = -Math.atan2(m[1], m[0]);
                                h[0] < u[0] && (w = Math.PI + w), r.rotation = w
                            }
                            var S = void 0;
                            switch (r.__position) {
                                case"insideStartTop":
                                case"insideMiddleTop":
                                case"insideEndTop":
                                case"middle":
                                    S = -y, d = "bottom";
                                    break;
                                case"insideStartBottom":
                                case"insideMiddleBottom":
                                case"insideEndBottom":
                                    S = y, d = "top";
                                    break;
                                default:
                                    S = 0, d = "middle"
                            }
                            switch (r.__position) {
                                case"end":
                                    r.x = c[0] * g + h[0], r.y = c[1] * y + h[1], p = c[0] > .8 ? "left" : c[0] < -.8 ? "right" : "center", d = c[1] > .8 ? "top" : c[1] < -.8 ? "bottom" : "middle";
                                    break;
                                case"start":
                                    r.x = -c[0] * g + u[0], r.y = -c[1] * y + u[1], p = c[0] > .8 ? "right" : c[0] < -.8 ? "left" : "center", d = c[1] > .8 ? "bottom" : c[1] < -.8 ? "top" : "middle";
                                    break;
                                case"insideStartTop":
                                case"insideStart":
                                case"insideStartBottom":
                                    r.x = g * b + u[0], r.y = u[1] + S, p = m[0] < 0 ? "right" : "left", r.originX = -g * b, r.originY = -S;
                                    break;
                                case"insideMiddleTop":
                                case"insideMiddle":
                                case"insideMiddleBottom":
                                case"middle":
                                    r.x = _[0], r.y = _[1] + S, p = "center", r.originY = -S;
                                    break;
                                case"insideEndTop":
                                case"insideEnd":
                                case"insideEndBottom":
                                    r.x = -g * b + h[0], r.y = h[1] + S, p = m[0] >= 0 ? "right" : "left", r.originX = g * b, r.originY = -S
                            }
                            r.scaleX = r.scaleY = o, r.setStyle({
                                verticalAlign: r.__verticalAlign || d,
                                align: r.__align || p
                            })
                        }
                    }
                }
            }, n
        }(sL), cW = function () {
            function t(t) {
                this.group = new sL, this._LineCtor = t || hW
            }

            return t.prototype.isPersistent = function () {
                return !0
            }, t.prototype.updateData = function (t) {
                var e = this, n = this, i = n.group, r = n._lineData;
                n._lineData = t, r || i.removeAll();
                var o = qm(t);
                t.diff(r).add(function (n) {
                    e._doAdd(t, n, o)
                }).update(function (n, i) {
                    e._doUpdate(r, t, i, n, o)
                }).remove(function (t) {
                    i.remove(r.getItemGraphicEl(t))
                }).execute()
            }, t.prototype.updateLayout = function () {
                var t = this._lineData;
                t && t.eachItemGraphicEl(function (e, n) {
                    e.updateLayout(t, n)
                }, this)
            }, t.prototype.incrementalPrepareUpdate = function (t) {
                this._seriesScope = qm(t), this._lineData = null, this.group.removeAll()
            }, t.prototype.incrementalUpdate = function (t, e) {
                function n(t) {
                    t.isGroup || jm(t) || (t.incremental = !0, t.ensureState("emphasis").hoverLayer = !0)
                }

                for (var i = t.start; i < t.end; i++) {
                    var r = e.getItemLayout(i);
                    if ($m(r)) {
                        var o = new this._LineCtor(e, i, this._seriesScope);
                        o.traverse(n), this.group.add(o), e.setItemGraphicEl(i, o)
                    }
                }
            }, t.prototype.remove = function () {
                this.group.removeAll()
            }, t.prototype._doAdd = function (t, e, n) {
                var i = t.getItemLayout(e);
                if ($m(i)) {
                    var r = new this._LineCtor(t, e, n);
                    t.setItemGraphicEl(e, r), this.group.add(r)
                }
            }, t.prototype._doUpdate = function (t, e, n, i, r) {
                var o = t.getItemGraphicEl(n);
                return $m(e.getItemLayout(i)) ? (o ? o.updateData(e, i, r) : o = new this._LineCtor(e, i, r), e.setItemGraphicEl(i, o), void this.group.add(o)) : void this.group.remove(o)
            }, t
        }(), pW = function (t) {
            function n(e, n, i) {
                var r = t.call(this) || this;
                return r.add(r.createLine(e, n, i)), r._updateEffectSymbol(e, n), r
            }

            return e(n, t), n.prototype.createLine = function (t, e, n) {
                return new hW(t, e, n)
            }, n.prototype._updateEffectSymbol = function (t, e) {
                var n = t.getItemModel(e), i = n.getModel("effect"), r = i.get("symbolSize"), o = i.get("symbol");
                M(r) || (r = [r, r]);
                var a = t.getItemVisual(e, "style"), s = i.get("color") || a && a.stroke, l = this.childAt(1);
                this._symbolType !== o && (this.remove(l), l = Sc(o, -.5, -.5, 1, 1, s), l.z2 = 100, l.culling = !0, this.add(l)), l && (l.setStyle("shadowColor", s), l.setStyle(i.getItemStyle(["color"])), l.scaleX = r[0], l.scaleY = r[1], l.setColor(s), this._symbolType = o, this._symbolScale = r, this._updateEffectAnimation(t, i, e))
            }, n.prototype._updateEffectAnimation = function (t, e, n) {
                var i = this.childAt(1);
                if (i) {
                    var r = this, o = t.getItemLayout(n), a = 1e3 * e.get("period"), s = e.get("loop"),
                        l = e.get("constantSpeed"), u = N(e.get("delay"), function (e) {
                            return e / t.count() * a / 3
                        });
                    if (i.ignore = !0, this._updateAnimationPoints(i, o), l > 0 && (a = this._getLineLength(i) / l * 1e3), (a !== this._period || s !== this._loop) && (i.stopAnimation(), a > 0)) {
                        var h = void 0;
                        h = "function" == typeof u ? u(n) : u, i.__t > 0 && (h = -a * i.__t), i.__t = 0;
                        var c = i.animate("", s).when(a, {__t: 1}).delay(h).during(function () {
                            r._updateSymbolPosition(i)
                        });
                        s || c.done(function () {
                            r.remove(i)
                        }), c.start()
                    }
                    this._period = a, this._loop = s
                }
            }, n.prototype._getLineLength = function (t) {
                return IA(t.__p1, t.__cp1) + IA(t.__cp1, t.__p2)
            }, n.prototype._updateAnimationPoints = function (t, e) {
                t.__p1 = e[0], t.__p2 = e[1], t.__cp1 = e[2] || [(e[0][0] + e[1][0]) / 2, (e[0][1] + e[1][1]) / 2]
            }, n.prototype.updateData = function (t, e, n) {
                this.childAt(0).updateData(t, e, n), this._updateEffectSymbol(t, e)
            }, n.prototype._updateSymbolPosition = function (t) {
                var e = t.__p1, n = t.__p2, i = t.__cp1, r = t.__t, o = [t.x, t.y], a = o.slice(), s = Qr, l = to;
                o[0] = s(e[0], i[0], n[0], r), o[1] = s(e[1], i[1], n[1], r);
                var u = l(e[0], i[0], n[0], r), h = l(e[1], i[1], n[1], r);
                t.rotation = -Math.atan2(h, u) - Math.PI / 2, ("line" === this._symbolType || "rect" === this._symbolType || "roundRect" === this._symbolType) && (void 0 !== t.__lastT && t.__lastT < t.__t ? (t.scaleY = 1.05 * IA(a, o), 1 === r && (o[0] = a[0] + (o[0] - a[0]) / 2, o[1] = a[1] + (o[1] - a[1]) / 2)) : t.scaleY = 1 === t.__lastT ? 2 * IA(e, o) : this._symbolScale[1]), t.__lastT = t.__t, t.ignore = !1, t.x = o[0], t.y = o[1]
            }, n.prototype.updateLayout = function (t, e) {
                this.childAt(0).updateLayout(t, e);
                var n = t.getItemModel(e).getModel("effect");
                this._updateEffectAnimation(t, n, e)
            }, n
        }(sL), dW = function (t) {
            function n(e, n, i) {
                var r = t.call(this) || this;
                return r._createPolyline(e, n, i), r
            }

            return e(n, t), n.prototype._createPolyline = function (t, e, n) {
                var i = t.getItemLayout(e), r = new JP({shape: {points: i}});
                this.add(r), this._updateCommonStl(t, e, n)
            }, n.prototype.updateData = function (t, e, n) {
                var i = t.hostModel, r = this.childAt(0), o = {shape: {points: t.getItemLayout(e)}};
                us(r, o, i, e), this._updateCommonStl(t, e, n)
            }, n.prototype._updateCommonStl = function (t, e, n) {
                var i = this.childAt(0), r = t.getItemModel(e), o = n && n.emphasisLineStyle;
                (!n || t.hasItemOption) && (o = r.getModel(["emphasis", "lineStyle"]).getLineStyle()), i.useStyle(t.getItemVisual(e, "style")), i.style.fill = null, i.style.strokeNoScale = !0;
                var a = i.ensureState("emphasis");
                a.style = o, Sa(this)
            }, n.prototype.updateLayout = function (t, e) {
                var n = this.childAt(0);
                n.setShape("points", t.getItemLayout(e))
            }, n
        }(sL), fW = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e._lastFrame = 0, e._lastFramePercent = 0, e
            }

            return e(n, t), n.prototype.createLine = function (t, e, n) {
                return new dW(t, e, n)
            }, n.prototype._updateAnimationPoints = function (t, e) {
                this._points = e;
                for (var n = [0], i = 0, r = 1; r < e.length; r++) {
                    var o = e[r - 1], a = e[r];
                    i += IA(o, a), n.push(i)
                }
                if (0 === i) return void (this._length = 0);
                for (var r = 0; r < n.length; r++) n[r] /= i;
                this._offsets = n, this._length = i
            }, n.prototype._getLineLength = function () {
                return this._length
            }, n.prototype._updateSymbolPosition = function (t) {
                var e = t.__t, n = this._points, i = this._offsets, r = n.length;
                if (i) {
                    var o, a = this._lastFrame;
                    if (e < this._lastFramePercent) {
                        var s = Math.min(a + 1, r - 1);
                        for (o = s; o >= 0 && !(i[o] <= e); o--) ;
                        o = Math.min(o, r - 2)
                    } else {
                        for (o = a; r > o && !(i[o] > e); o++) ;
                        o = Math.min(o - 1, r - 2)
                    }
                    var l = (e - i[o]) / (i[o + 1] - i[o]), u = n[o], h = n[o + 1];
                    t.x = u[0] * (1 - l) + l * h[0], t.y = u[1] * (1 - l) + l * h[1];
                    var c = h[0] - u[0], p = h[1] - u[1];
                    t.rotation = -Math.atan2(p, c) - Math.PI / 2, this._lastFrame = o, this._lastFramePercent = e, t.ignore = !1
                }
            }, n
        }(pW), gW = function () {
            function t() {
                this.polyline = !1, this.curveness = 0, this.segs = []
            }

            return t
        }(), yW = function (t) {
            function n(e) {
                return t.call(this, e) || this
            }

            return e(n, t), n.prototype.getDefaultStyle = function () {
                return {stroke: "#000", fill: null}
            }, n.prototype.getDefaultShape = function () {
                return new gW
            }, n.prototype.buildPath = function (t, e) {
                var n = e.segs, i = e.curveness;
                if (e.polyline) for (var r = 0; r < n.length;) {
                    var o = n[r++];
                    if (o > 0) {
                        t.moveTo(n[r++], n[r++]);
                        for (var a = 1; o > a; a++) t.lineTo(n[r++], n[r++])
                    }
                } else for (var r = 0; r < n.length;) {
                    var s = n[r++], l = n[r++], u = n[r++], h = n[r++];
                    if (t.moveTo(s, l), i > 0) {
                        var c = (s + u) / 2 - (l - h) * i, p = (l + h) / 2 - (u - s) * i;
                        t.quadraticCurveTo(c, p, u, h)
                    } else t.lineTo(u, h)
                }
            }, n.prototype.findDataIndex = function (t, e) {
                var n = this.shape, i = n.segs, r = n.curveness, o = this.style.lineWidth;
                if (n.polyline) for (var a = 0, s = 0; s < i.length;) {
                    var l = i[s++];
                    if (l > 0) for (var u = i[s++], h = i[s++], c = 1; l > c; c++) {
                        var p = i[s++], d = i[s++];
                        if (fo(u, h, p, d, o, t, e)) return a
                    }
                    a++
                } else for (var a = 0, s = 0; s < i.length;) {
                    var u = i[s++], h = i[s++], p = i[s++], d = i[s++];
                    if (r > 0) {
                        var f = (u + p) / 2 - (h - d) * r, g = (h + d) / 2 - (p - u) * r;
                        if (yo(u, h, f, g, p, d, o, t, e)) return a
                    } else if (fo(u, h, p, d, o, t, e)) return a;
                    a++
                }
                return -1
            }, n
        }(Bk), vW = function () {
            function t() {
                this.group = new sL
            }

            return t.prototype.isPersistent = function () {
                return !this._incremental
            }, t.prototype.updateData = function (t) {
                this.group.removeAll();
                var e = new yW({rectHover: !0, cursor: "default"});
                e.setShape({segs: t.getLayout("linesPoints")}), this._setCommon(e, t), this.group.add(e), this._incremental = null
            }, t.prototype.incrementalPrepareUpdate = function (t) {
                this.group.removeAll(), this._clearIncremental(), t.count() > 5e5 ? (this._incremental || (this._incremental = new vO({silent: !0})), this.group.add(this._incremental)) : this._incremental = null
            }, t.prototype.incrementalUpdate = function (t, e) {
                var n = new yW;
                n.setShape({segs: e.getLayout("linesPoints")}), this._setCommon(n, e, !!this._incremental), this._incremental ? this._incremental.addDisplayable(n, !0) : (n.rectHover = !0, n.cursor = "default", n.__startIndex = t.start, this.group.add(n))
            }, t.prototype.remove = function () {
                this._clearIncremental(), this._incremental = null, this.group.removeAll()
            }, t.prototype._setCommon = function (t, e, n) {
                var i = e.hostModel;
                t.setShape({
                    polyline: i.get("polyline"),
                    curveness: i.get(["lineStyle", "curveness"])
                }), t.useStyle(i.getModel("lineStyle").getLineStyle()), t.style.strokeNoScale = !0;
                var r = e.getVisual("style");
                if (r && r.stroke && t.setStyle("stroke", r.stroke), t.setStyle("fill", null), !n) {
                    var o = tP(t);
                    o.seriesIndex = i.seriesIndex, t.on("mousemove", function (e) {
                        o.dataIndex = null;
                        var n = t.findDataIndex(e.offsetX, e.offsetY);
                        n > 0 && (o.dataIndex = n + t.__startIndex)
                    })
                }
            }, t.prototype._clearIncremental = function () {
                var t = this._incremental;
                t && t.clearDisplaybles()
            }, t
        }(), mW = {
            seriesType: "lines", plan: Ch(), reset: function (t) {
                var e = t.coordinateSystem, n = t.get("polyline"), i = t.pipelineContext.large;
                return {
                    progress: function (r, o) {
                        var a = [];
                        if (i) {
                            var s = void 0, l = r.end - r.start;
                            if (n) {
                                for (var u = 0, h = r.start; h < r.end; h++) u += t.getLineCoordsCount(h);
                                s = new Float32Array(l + 2 * u)
                            } else s = new Float32Array(4 * l);
                            for (var c = 0, p = [], h = r.start; h < r.end; h++) {
                                var d = t.getLineCoords(h, a);
                                n && (s[c++] = d);
                                for (var f = 0; d > f; f++) p = e.dataToPoint(a[f], !1, p), s[c++] = p[0], s[c++] = p[1]
                            }
                            o.setLayout("linesPoints", s)
                        } else for (var h = r.start; h < r.end; h++) {
                            var g = o.getItemModel(h), d = t.getLineCoords(h, a), y = [];
                            if (n) for (var v = 0; d > v; v++) y.push(e.dataToPoint(a[v])); else {
                                y[0] = e.dataToPoint(a[0]), y[1] = e.dataToPoint(a[1]);
                                var m = g.get(["lineStyle", "curveness"]);
                                +m && (y[2] = [(y[0][0] + y[1][0]) / 2 - (y[0][1] - y[1][1]) * m, (y[0][1] + y[1][1]) / 2 - (y[1][0] - y[0][0]) * m])
                            }
                            o.setItemLayout(h, y)
                        }
                    }
                }
            }
        }, xW = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.render = function (t, e, n) {
                var i = t.getData(), r = this._updateLineDraw(i, t), o = t.get("zlevel"),
                    a = t.get(["effect", "trailLength"]), s = n.getZr(), l = "svg" === s.painter.getType();
                l || s.painter.getLayer(o).clear(!0), null == this._lastZlevel || l || s.configLayer(this._lastZlevel, {motionBlur: !1}), this._showEffect(t) && a && (l || s.configLayer(o, {
                    motionBlur: !0,
                    lastFrameAlpha: Math.max(Math.min(a / 10 + .9, 1), 0)
                })), r.updateData(i);
                var u = t.get("clip", !0) && Xf(t.coordinateSystem, !1, t);
                u ? this.group.setClipPath(u) : this.group.removeClipPath(), this._lastZlevel = o, this._finished = !0
            }, n.prototype.incrementalPrepareRender = function (t, e, n) {
                var i = t.getData(), r = this._updateLineDraw(i, t);
                r.incrementalPrepareUpdate(i), this._clearLayer(n), this._finished = !1
            }, n.prototype.incrementalRender = function (t, e) {
                this._lineDraw.incrementalUpdate(t, e.getData()), this._finished = t.end === e.getData().count()
            }, n.prototype.updateTransform = function (t, e, n) {
                var i = t.getData(), r = t.pipelineContext;
                if (!this._finished || r.large || r.progressiveRender) return {update: !0};
                var o = mW.reset(t, e, n);
                o.progress && o.progress({
                    start: 0,
                    end: i.count(),
                    count: i.count()
                }, i), this._lineDraw.updateLayout(), this._clearLayer(n)
            }, n.prototype._updateLineDraw = function (t, e) {
                var n = this._lineDraw, i = this._showEffect(e), r = !!e.get("polyline"), o = e.pipelineContext,
                    a = o.large;
                return n && i === this._hasEffet && r === this._isPolyline && a === this._isLargeDraw || (n && n.remove(), n = this._lineDraw = a ? new vW : new cW(r ? i ? fW : dW : i ? pW : hW), this._hasEffet = i, this._isPolyline = r, this._isLargeDraw = a, this.group.removeAll()), this.group.add(n.group), n
            }, n.prototype._showEffect = function (t) {
                return !!t.get(["effect", "show"])
            }, n.prototype._clearLayer = function (t) {
                var e = t.getZr(), n = "svg" === e.painter.getType();
                n || null == this._lastZlevel || e.painter.getLayer(this._lastZlevel).clear(!0)
            }, n.prototype.remove = function (t, e) {
                this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(e)
            }, n.type = "lines", n
        }(Dz), _W = "undefined" == typeof Uint32Array ? Array : Uint32Array,
        bW = "undefined" == typeof Float64Array ? Array : Float64Array, wW = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.visualStyleAccessPath = "lineStyle", e.visualDrawType = "stroke", e
            }

            return e(n, t), n.prototype.init = function (e) {
                e.data = e.data || [], Jm(e);
                var n = this._processFlatCoordsArray(e.data);
                this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (e.data = new Float32Array(n.count)), t.prototype.init.apply(this, arguments)
            }, n.prototype.mergeOption = function (e) {
                if (Jm(e), e.data) {
                    var n = this._processFlatCoordsArray(e.data);
                    this._flatCoords = n.flatCoords, this._flatCoordsOffset = n.flatCoordsOffset, n.flatCoords && (e.data = new Float32Array(n.count))
                }
                t.prototype.mergeOption.apply(this, arguments)
            }, n.prototype.appendData = function (t) {
                var e = this._processFlatCoordsArray(t.data);
                e.flatCoords && (this._flatCoords ? (this._flatCoords = U(this._flatCoords, e.flatCoords), this._flatCoordsOffset = U(this._flatCoordsOffset, e.flatCoordsOffset)) : (this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset), t.data = new Float32Array(e.count)), this.getRawData().appendData(t.data)
            }, n.prototype._getCoordsFromItemModel = function (t) {
                var e = this.getData().getItemModel(t), n = e.option instanceof Array ? e.option : e.getShallow("coords");
                return n
            }, n.prototype.getLineCoordsCount = function (t) {
                return this._flatCoordsOffset ? this._flatCoordsOffset[2 * t + 1] : this._getCoordsFromItemModel(t).length
            }, n.prototype.getLineCoords = function (t, e) {
                if (this._flatCoordsOffset) {
                    for (var n = this._flatCoordsOffset[2 * t], i = this._flatCoordsOffset[2 * t + 1], r = 0; i > r; r++) e[r] = e[r] || [], e[r][0] = this._flatCoords[n + 2 * r], e[r][1] = this._flatCoords[n + 2 * r + 1];
                    return i
                }
                for (var o = this._getCoordsFromItemModel(t), r = 0; r < o.length; r++) e[r] = e[r] || [], e[r][0] = o[r][0], e[r][1] = o[r][1];
                return o.length
            }, n.prototype._processFlatCoordsArray = function (t) {
                var e = 0;
                if (this._flatCoords && (e = this._flatCoords.length), "number" == typeof t[0]) {
                    for (var n = t.length, i = new _W(n), r = new bW(n), o = 0, a = 0, s = 0, l = 0; n > l;) {
                        s++;
                        var u = t[l++];
                        i[a++] = o + e, i[a++] = u;
                        for (var h = 0; u > h; h++) {
                            var c = t[l++], p = t[l++];
                            r[o++] = c, r[o++] = p
                        }
                    }
                    return {flatCoordsOffset: new Uint32Array(i.buffer, 0, a), flatCoords: r, count: s}
                }
                return {flatCoordsOffset: null, flatCoords: null, count: t.length}
            }, n.prototype.getInitialData = function (t) {
                var e = new fV(["value"], this);
                return e.hasItemOption = !1, e.initData(t.data, [], function (t, n, i, r) {
                    if (t instanceof Array) return 0 / 0;
                    e.hasItemOption = !0;
                    var o = t.value;
                    return null != o ? o instanceof Array ? o[r] : o : void 0
                }), e
            }, n.prototype.formatTooltip = function (t) {
                var e = this.getData(), n = e.getItemModel(t), i = n.get("name");
                if (i) return i;
                var r = n.get("fromName"), o = n.get("toName"), a = [];
                return null != r && a.push(r), null != o && a.push(o), rh("nameValue", {name: a.join(" > ")})
            }, n.prototype.preventIncremental = function () {
                return !!this.get(["effect", "show"])
            }, n.prototype.getProgressive = function () {
                var t = this.option.progressive;
                return null == t ? this.option.large ? 1e4 : this.get("progressive") : t
            }, n.prototype.getProgressiveThreshold = function () {
                var t = this.option.progressiveThreshold;
                return null == t ? this.option.large ? 2e4 : this.get("progressiveThreshold") : t
            }, n.type = "series.lines", n.dependencies = ["grid", "polar", "geo", "calendar"], n.defaultOption = {
                coordinateSystem: "geo",
                zlevel: 0,
                z: 2,
                legendHoverLink: !0,
                xAxisIndex: 0,
                yAxisIndex: 0,
                symbol: ["none", "none"],
                symbolSize: [10, 10],
                geoIndex: 0,
                effect: {show: !1, period: 4, constantSpeed: 0, symbol: "circle", symbolSize: 3, loop: !0, trailLength: .2},
                large: !1,
                largeThreshold: 2e3,
                polyline: !1,
                clip: !0,
                label: {show: !1, position: "end"},
                lineStyle: {opacity: .5}
            }, n
        }(Iz), SW = {
            seriesType: "lines", reset: function (t) {
                function e(t, e) {
                    var n = t.getItemModel(e), i = Qm(n.getShallow("symbol", !0)), r = Qm(n.getShallow("symbolSize", !0));
                    i[0] && t.setItemVisual(e, "fromSymbol", i[0]), i[1] && t.setItemVisual(e, "toSymbol", i[1]), r[0] && t.setItemVisual(e, "fromSymbolSize", r[0]), r[1] && t.setItemVisual(e, "toSymbolSize", r[1])
                }

                var n = Qm(t.get("symbol")), i = Qm(t.get("symbolSize")), r = t.getData();
                return r.setVisual("fromSymbol", n && n[0]), r.setVisual("toSymbol", n && n[1]), r.setVisual("fromSymbolSize", i && i[0]), r.setVisual("toSymbolSize", i && i[1]), {dataEach: r.hasItemOption ? e : null}
            }
        };
    df(tx);
    var MW = "-->", IW = function (t) {
        return t.get("autoCurveness") || null
    }, TW = function (t, e) {
        var n = IW(t), i = 20, r = [];
        if ("number" == typeof n) i = n; else if (M(n)) return void (t.__curvenessList = n);
        e > i && (i = e);
        var o = i % 2 ? i + 2 : i + 3;
        r = [];
        for (var a = 0; o > a; a++) r.push((a % 2 ? a + 1 : a) / 10 * (a % 2 ? -1 : 1));
        t.__curvenessList = r
    }, CW = function (t, e, n) {
        var i = [t.id, t.dataIndex].join("."), r = [e.id, e.dataIndex].join(".");
        return [n.uid, i, r].join(MW)
    }, AW = function (t) {
        var e = t.split(MW);
        return [e[0], e[2], e[1]].join(MW)
    }, DW = function (t, e) {
        var n = CW(t.node1, t.node2, e);
        return e.__edgeMap[n]
    }, LW = function (t, e) {
        var n = kW(CW(t.node1, t.node2, e), e), i = kW(CW(t.node2, t.node1, e), e);
        return n + i
    }, kW = function (t, e) {
        var n = e.__edgeMap;
        return n[t] ? n[t].length : 0
    }, PW = Math.PI, OW = [], RW = {
        value: function (t, e, n, i, r, o, a) {
            var s = 0, l = n.getSum("value"), u = 2 * Math.PI / (l || a);
            e.eachNode(function (t) {
                var e = t.getValue("value"), n = u * (l ? e : 1) / 2;
                s += n, t.setLayout([i * Math.cos(s) + r, i * Math.sin(s) + o]), s += n
            })
        }, symbolSize: function (t, e, n, i, r, o, a) {
            var s = 0;
            OW.length = a;
            var l = cx(t);
            e.eachNode(function (t) {
                var e = px(t);
                isNaN(e) && (e = 2), 0 > e && (e = 0), e *= l;
                var n = Math.asin(e / 2 / i);
                isNaN(n) && (n = PW / 2), OW[t.dataIndex] = n, s += 2 * n
            });
            var u = (2 * PW - s) / a / 2, h = 0;
            e.eachNode(function (t) {
                var e = u + OW[t.dataIndex];
                h += e, t.setLayout([i * Math.cos(h) + r, i * Math.sin(h) + o]), h += e
            })
        }
    }, zW = ne, EW = [], NW = [], BW = [], VW = Qr, FW = TA, GW = Math.abs, HW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function (t, e) {
            var n = new CF, i = new cW, r = this.group;
            this._controller = new rH(e.getZr()), this._controllerHost = {target: r}, r.add(n.group), r.add(i.group), this._symbolDraw = n, this._lineDraw = i, this._firstRender = !0
        }, n.prototype.render = function (t, e, n) {
            var i = this, r = t.coordinateSystem;
            this._model = t;
            var o = this._symbolDraw, a = this._lineDraw, s = this.group;
            if (bx(r)) {
                var l = {x: r.x, y: r.y, scaleX: r.scaleX, scaleY: r.scaleY};
                this._firstRender ? s.attr(l) : us(s, l, t)
            }
            _x(t.getGraph(), cx(t));
            var u = t.getData();
            o.updateData(u);
            var c = t.getEdgeData();
            a.updateData(c), this._updateNodeAndLinkScale(), this._updateController(t, e, n), clearTimeout(this._layoutTimeout);
            var p = t.forceLayout, d = t.get(["force", "layoutAnimation"]);
            p && this._startForceLayoutIteration(p, d), u.graph.eachNode(function (t) {
                var e = t.dataIndex, n = t.getGraphicEl(), r = t.getModel();
                n.off("drag").off("dragend");
                var o = r.get("draggable");
                o && n.on("drag", function () {
                    p && (p.warmUp(), !i._layouting && i._startForceLayoutIteration(p, d), p.setFixed(e), u.setItemLayout(e, [n.x, n.y]))
                }).on("dragend", function () {
                    p && p.setUnfixed(e)
                }), n.setDraggable(o && !!p);
                var a = r.get(["emphasis", "focus"]);
                "adjacency" === a && (tP(n).focus = t.getAdjacentDataIndices())
            }), u.graph.eachEdge(function (t) {
                var e = t.getGraphicEl(), n = t.getModel().get(["emphasis", "focus"]);
                "adjacency" === n && (tP(e).focus = {edge: [t.dataIndex], node: [t.node1.dataIndex, t.node2.dataIndex]})
            });
            var f = "circular" === t.get("layout") && t.get(["circular", "rotateLabel"]), g = u.getLayout("cx"),
                y = u.getLayout("cy");
            u.eachItemGraphicEl(function (t, e) {
                var n = u.getItemModel(e), i = n.get(["label", "rotate"]) || 0, r = t.getSymbolPath();
                if (f) {
                    var o = u.getItemLayout(e), a = Math.atan2(o[1] - y, o[0] - g);
                    0 > a && (a = 2 * Math.PI + a);
                    var s = o[0] < g;
                    s && (a -= Math.PI);
                    var l = s ? "left" : "right";
                    r.setTextConfig({rotation: -a, position: l, origin: "center"});
                    var c = r.ensureState("emphasis");
                    h(c.textConfig || (c.textConfig = {}), {position: l})
                } else r.setTextConfig({rotation: i *= Math.PI / 180})
            }), this._firstRender = !1
        }, n.prototype.dispose = function () {
            this._controller && this._controller.dispose(), this._controllerHost = null
        }, n.prototype._startForceLayoutIteration = function (t, e) {
            var n = this;
            !function i() {
                t.step(function (t) {
                    n.updateLayout(n._model), (n._layouting = !t) && (e ? n._layoutTimeout = setTimeout(i, 16) : i())
                })
            }()
        }, n.prototype._updateController = function (t, e, n) {
            var i = this, r = this._controller, o = this._controllerHost, a = this.group;
            return r.setPointerChecker(function (e, i, r) {
                var o = a.getBoundingRect();
                return o.applyTransform(a.transform), o.contain(i, r) && !_v(e, n, t)
            }), bx(t.coordinateSystem) ? (r.enable(t.get("roam")), o.zoomLimit = t.get("scaleLimit"), o.zoom = t.coordinateSystem.getZoom(), void r.off("pan").off("zoom").on("pan", function (e) {
                cv(o, e.dx, e.dy), n.dispatchAction({seriesId: t.id, type: "graphRoam", dx: e.dx, dy: e.dy})
            }).on("zoom", function (e) {
                pv(o, e.scale, e.originX, e.originY), n.dispatchAction({
                    seriesId: t.id,
                    type: "graphRoam",
                    zoom: e.scale,
                    originX: e.originX,
                    originY: e.originY
                }), i._updateNodeAndLinkScale(), _x(t.getGraph(), cx(t)), i._lineDraw.updateLayout(), n.updateLabelLayout()
            })) : void r.disable()
        }, n.prototype._updateNodeAndLinkScale = function () {
            var t = this._model, e = t.getData(), n = cx(t);
            e.eachItemGraphicEl(function (t) {
                t.setSymbolScale(n)
            })
        }, n.prototype.updateLayout = function (t) {
            _x(t.getGraph(), cx(t)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout()
        }, n.prototype.remove = function () {
            this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove()
        }, n.type = "graph", n
    }(Dz), WW = function () {
        function t(t) {
            this.type = "graph", this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this._directed = t || !1
        }

        return t.prototype.isDirected = function () {
            return this._directed
        }, t.prototype.addNode = function (t, e) {
            t = null == t ? "" + e : "" + t;
            var n = this._nodesMap;
            if (!n[Sx(t)]) {
                var i = new XW(t, e);
                return i.hostGraph = this, this.nodes.push(i), n[Sx(t)] = i, i
            }
        }, t.prototype.getNodeByIndex = function (t) {
            var e = this.data.getRawIndex(t);
            return this.nodes[e]
        }, t.prototype.getNodeById = function (t) {
            return this._nodesMap[Sx(t)]
        }, t.prototype.addEdge = function (t, e, n) {
            var i = this._nodesMap, r = this._edgesMap;
            if ("number" == typeof t && (t = this.nodes[t]), "number" == typeof e && (e = this.nodes[e]), t instanceof XW || (t = i[Sx(t)]), e instanceof XW || (e = i[Sx(e)]), t && e) {
                var o = t.id + "-" + e.id, a = new YW(t, e, n);
                return a.hostGraph = this, this._directed && (t.outEdges.push(a), e.inEdges.push(a)), t.edges.push(a), t !== e && e.edges.push(a), this.edges.push(a), r[o] = a, a
            }
        }, t.prototype.getEdgeByIndex = function (t) {
            var e = this.edgeData.getRawIndex(t);
            return this.edges[e]
        }, t.prototype.getEdge = function (t, e) {
            t instanceof XW && (t = t.id), e instanceof XW && (e = e.id);
            var n = this._edgesMap;
            return this._directed ? n[t + "-" + e] : n[t + "-" + e] || n[e + "-" + t]
        }, t.prototype.eachNode = function (t, e) {
            for (var n = this.nodes, i = n.length, r = 0; i > r; r++) n[r].dataIndex >= 0 && t.call(e, n[r], r)
        }, t.prototype.eachEdge = function (t, e) {
            for (var n = this.edges, i = n.length, r = 0; i > r; r++) n[r].dataIndex >= 0 && n[r].node1.dataIndex >= 0 && n[r].node2.dataIndex >= 0 && t.call(e, n[r], r)
        }, t.prototype.breadthFirstTraverse = function (t, e, n, i) {
            if (e instanceof XW || (e = this._nodesMap[Sx(e)]), e) {
                for (var r = "out" === n ? "outEdges" : "in" === n ? "inEdges" : "edges", o = 0; o < this.nodes.length; o++) this.nodes[o].__visited = !1;
                if (!t.call(i, e, null)) for (var a = [e]; a.length;) for (var s = a.shift(), l = s[r], o = 0; o < l.length; o++) {
                    var u = l[o], h = u.node1 === s ? u.node2 : u.node1;
                    if (!h.__visited) {
                        if (t.call(i, h, s)) return;
                        a.push(h), h.__visited = !0
                    }
                }
            }
        }, t.prototype.update = function () {
            for (var t = this.data, e = this.edgeData, n = this.nodes, i = this.edges, r = 0, o = n.length; o > r; r++) n[r].dataIndex = -1;
            for (var r = 0, o = t.count(); o > r; r++) n[t.getRawIndex(r)].dataIndex = r;
            e.filterSelf(function (t) {
                var n = i[e.getRawIndex(t)];
                return n.node1.dataIndex >= 0 && n.node2.dataIndex >= 0
            });
            for (var r = 0, o = i.length; o > r; r++) i[r].dataIndex = -1;
            for (var r = 0, o = e.count(); o > r; r++) i[e.getRawIndex(r)].dataIndex = r
        }, t.prototype.clone = function () {
            for (var e = new t(this._directed), n = this.nodes, i = this.edges, r = 0; r < n.length; r++) e.addNode(n[r].id, n[r].dataIndex);
            for (var r = 0; r < i.length; r++) {
                var o = i[r];
                e.addEdge(o.node1.id, o.node2.id, o.dataIndex)
            }
            return e
        }, t
    }(), XW = function () {
        function t(t, e) {
            this.inEdges = [], this.outEdges = [], this.edges = [], this.dataIndex = -1, this.id = null == t ? "" : t, this.dataIndex = null == e ? -1 : e
        }

        return t.prototype.degree = function () {
            return this.edges.length
        }, t.prototype.inDegree = function () {
            return this.inEdges.length
        }, t.prototype.outDegree = function () {
            return this.outEdges.length
        }, t.prototype.getModel = function (t) {
            if (!(this.dataIndex < 0)) {
                var e = this.hostGraph, n = e.data.getItemModel(this.dataIndex);
                return n.getModel(t)
            }
        }, t.prototype.getAdjacentDataIndices = function () {
            for (var t = {edge: [], node: []}, e = 0; e < this.edges.length; e++) {
                var n = this.edges[e];
                n.dataIndex < 0 || (t.edge.push(n.dataIndex), t.node.push(n.node1.dataIndex, n.node2.dataIndex))
            }
            return t
        }, t
    }(), YW = function () {
        function t(t, e, n) {
            this.dataIndex = -1, this.node1 = t, this.node2 = e, this.dataIndex = null == n ? -1 : n
        }

        return t.prototype.getModel = function (t) {
            if (!(this.dataIndex < 0)) {
                var e = this.hostGraph, n = e.edgeData.getItemModel(this.dataIndex);
                return n.getModel(t)
            }
        }, t.prototype.getAdjacentDataIndices = function () {
            return {edge: [this.dataIndex], node: [this.node1.dataIndex, this.node2.dataIndex]}
        }, t
    }();
    f(XW, Mx("hostGraph", "data")), f(YW, Mx("hostGraph", "edgeData"));
    var ZW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.hasSymbolVisual = !0, e
        }

        return e(n, t), n.prototype.init = function (e) {
            function n() {
                return i._categoriesData
            }

            t.prototype.init.apply(this, arguments);
            var i = this;
            this.legendVisualProvider = new HF(n, n), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData()
        }, n.prototype.mergeOption = function (e) {
            t.prototype.mergeOption.apply(this, arguments), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData()
        }, n.prototype.mergeDefaultAndTheme = function (e) {
            t.prototype.mergeDefaultAndTheme.apply(this, arguments), Wi(e, "edgeLabel", ["show"])
        }, n.prototype.getInitialData = function (t) {
            function e(t, e) {
                function n(t, e) {
                    var n = o.call(this, t, e);
                    return n.resolveParentPath = i, n
                }

                function i(t) {
                    if (t && ("label" === t[0] || "label" === t[1])) {
                        var e = t.slice();
                        return "label" === t[0] ? e[0] = "edgeLabel" : "label" === t[1] && (e[1] = "edgeLabel"), e
                    }
                    return t
                }

                t.wrapMethod("getItemModel", function (t) {
                    var e = r._categoriesModels, n = t.getShallow("category"), i = e[n];
                    return i && (i.parentModel = t.parentModel, t.parentModel = i), t
                });
                var o = VO.prototype.getModel;
                e.wrapMethod("getItemModel", function (t) {
                    return t.resolveParentPath = i, t.getModel = n, t
                })
            }

            var n = t.edges || t.links || [], i = t.data || t.nodes || [], r = this;
            if (i && n) {
                ox(this);
                var o = Ix(i, n, this, !0, e);
                return y(o.edges, function (t) {
                    ax(t.node1, t.node2, this, t.dataIndex)
                }, this), o.data
            }
        }, n.prototype.getGraph = function () {
            return this.getData().graph
        }, n.prototype.getEdgeData = function () {
            return this.getGraph().edgeData
        }, n.prototype.getCategoriesData = function () {
            return this._categoriesData
        }, n.prototype.formatTooltip = function (t, e, n) {
            if ("edge" === n) {
                var i = this.getData(), r = this.getDataParams(t, n), o = i.graph.getEdgeByIndex(t),
                    a = i.getName(o.node1.dataIndex), s = i.getName(o.node2.dataIndex), l = [];
                return null != a && l.push(a), null != s && l.push(s), rh("nameValue", {
                    name: l.join(" > "),
                    value: r.value,
                    noValue: null == r.value
                })
            }
            var u = yh({series: this, dataIndex: t, multipleSeries: e});
            return u
        }, n.prototype._updateCategoriesData = function () {
            var t = v(this.option.categories || [], function (t) {
                return null != t.value ? t : h({value: 0}, t)
            }), e = new fV(["value"], this);
            e.initData(t), this._categoriesData = e, this._categoriesModels = e.mapArray(function (t) {
                return e.getItemModel(t)
            })
        }, n.prototype.setZoom = function (t) {
            this.option.zoom = t
        }, n.prototype.setCenter = function (t) {
            this.option.center = t
        }, n.prototype.isAnimationEnabled = function () {
            return t.prototype.isAnimationEnabled.call(this) && !("force" === this.get("layout") && this.get(["force", "layoutAnimation"]))
        }, n.type = "series.graph", n.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "view",
            legendHoverLink: !0,
            layout: null,
            circular: {rotateLabel: !1},
            force: {
                initLayout: null,
                repulsion: [0, 50],
                gravity: .1,
                friction: .6,
                edgeLength: 30,
                layoutAnimation: !0
            },
            left: "center",
            top: "center",
            symbol: "circle",
            symbolSize: 10,
            edgeSymbol: ["none", "none"],
            edgeSymbolSize: 10,
            edgeLabel: {position: "middle", distance: 5},
            draggable: !1,
            roam: !1,
            center: null,
            zoom: 1,
            nodeScaleRatio: .6,
            label: {show: !1, formatter: "{b}"},
            itemStyle: {},
            lineStyle: {color: "#aaa", width: 1, opacity: .5},
            emphasis: {scale: !0, label: {show: !0}},
            select: {itemStyle: {borderColor: "#212121"}}
        }, n
    }(Iz), UW = {type: "graphRoam", event: "graphRoam", update: "none"};
    df(Tx);
    var jW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.defaultValueDimensions = [{name: "min", defaultTooltip: !0}, {
                name: "Q1",
                defaultTooltip: !0
            }, {name: "median", defaultTooltip: !0}, {name: "Q3", defaultTooltip: !0}, {
                name: "max",
                defaultTooltip: !0
            }], e.visualDrawType = "stroke", e
        }

        return e(n, t), n.type = "series.boxplot", n.dependencies = ["xAxis", "yAxis", "grid"], n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            layout: null,
            boxWidth: [7, 50],
            itemStyle: {color: "#fff", borderWidth: 1},
            emphasis: {
                scale: !0,
                itemStyle: {
                    borderWidth: 2,
                    shadowBlur: 5,
                    shadowOffsetX: 1,
                    shadowOffsetY: 1,
                    shadowColor: "rgba(0,0,0,0.2)"
                }
            },
            animationDuration: 800
        }, n
    }(Iz);
    f(jW, RG, !0);
    var qW = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            var e = t.getData(), n = this.group, i = this._data;
            this._data || n.removeAll();
            var r = "horizontal" === t.get("layout") ? 1 : 0;
            e.diff(i).add(function (t) {
                if (e.hasValue(t)) {
                    var i = e.getItemLayout(t), o = Cx(i, e, t, r, !0);
                    e.setItemGraphicEl(t, o), n.add(o)
                }
            }).update(function (t, o) {
                var a = i.getItemGraphicEl(o);
                if (!e.hasValue(t)) return void n.remove(a);
                var s = e.getItemLayout(t);
                a ? Ax(s, a, e, t) : a = Cx(s, e, t, r), n.add(a), e.setItemGraphicEl(t, a)
            }).remove(function (t) {
                var e = i.getItemGraphicEl(t);
                e && n.remove(e)
            }).execute(), this._data = e
        }, n.prototype.remove = function () {
            var t = this.group, e = this._data;
            this._data = null, e && e.eachItemGraphicEl(function (e) {
                e && t.remove(e)
            })
        }, n.type = "boxplot", n
    }(Dz), KW = function () {
        function t() {
        }

        return t
    }(), $W = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "boxplotBoxPath", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new KW
        }, n.prototype.buildPath = function (t, e) {
            var n = e.points, i = 0;
            for (t.moveTo(n[i][0], n[i][1]), i++; 4 > i; i++) t.lineTo(n[i][0], n[i][1]);
            for (t.closePath(); i < n.length; i++) t.moveTo(n[i][0], n[i][1]), i++, t.lineTo(n[i][0], n[i][1])
        }, n
    }(Bk), JW = y, QW = {
        type: "echartsAll:boxplot", transform: function (t) {
            var e = t.upstream;
            if (e.sourceFormat !== SR) {
                var n = "";
                Gi(n)
            }
            var i = zx(e.getRawData(), t.config);
            return [{dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"], data: i.boxData}, {data: i.outliers}]
        }
    };
    df(Ex);
    var tX = .3, eX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._dataGroup = new sL, e._initialized = !1, e
            }

            return e(n, t), n.prototype.init = function () {
                this.group.add(this._dataGroup)
            }, n.prototype.render = function (t) {
                function e(t) {
                    var e = Vx(o, r, t, l, s);
                    Gx(e, o, t, u)
                }

                function n(e, n) {
                    var i = a.getItemGraphicEl(n), r = Bx(o, e, l, s);
                    o.setItemGraphicEl(e, i), us(i, {shape: {points: r}}, t, e), Gx(i, o, e, u)
                }

                function i(t) {
                    var e = a.getItemGraphicEl(t);
                    r.remove(e)
                }

                var r = this._dataGroup, o = t.getData(), a = this._data, s = t.coordinateSystem, l = s.dimensions,
                    u = Fx(t);
                if (o.diff(a).add(e).update(n).remove(i).execute(), !this._initialized) {
                    this._initialized = !0;
                    var h = Nx(s, t, function () {
                        setTimeout(function () {
                            r.removeClipPath()
                        })
                    });
                    r.setClipPath(h)
                }
                this._data = o
            }, n.prototype.incrementalPrepareRender = function () {
                this._initialized = !0, this._data = null, this._dataGroup.removeAll()
            }, n.prototype.incrementalRender = function (t, e) {
                for (var n = e.getData(), i = e.coordinateSystem, r = i.dimensions, o = Fx(e), a = t.start; a < t.end; a++) {
                    var s = Vx(n, this._dataGroup, a, r, i);
                    s.incremental = !0, Gx(s, n, a, o)
                }
            }, n.prototype.remove = function () {
                this._dataGroup && this._dataGroup.removeAll(), this._data = null
            }, n.type = "parallel", n
        }(Dz), nX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.visualStyleAccessPath = "lineStyle", e.visualDrawType = "stroke", e
            }

            return e(n, t), n.prototype.getInitialData = function () {
                return gd(this.getSource(), this, {useEncodeDefaulter: xA(Wx, null, this)})
            }, n.prototype.getRawIndicesByActiveState = function (t) {
                var e = this.coordinateSystem, n = this.getData(), i = [];
                return e.eachActiveState(n, function (e, r) {
                    t === e && i.push(n.getRawIndex(r))
                }), i
            }, n.type = "series.parallel", n.dependencies = ["parallel"], n.defaultOption = {
                zlevel: 0,
                z: 2,
                coordinateSystem: "parallel",
                parallelIndex: 0,
                label: {show: !1},
                inactiveOpacity: .05,
                activeOpacity: 1,
                lineStyle: {width: 1, opacity: .45, type: "solid"},
                emphasis: {label: {show: !1}},
                progressive: 500,
                smooth: !1,
                animationEasing: "linear"
            }, n
        }(Iz), iX = ["lineStyle", "opacity"], rX = {
            seriesType: "parallel", reset: function (t) {
                var e = t.coordinateSystem, n = {
                    normal: t.get(["lineStyle", "opacity"]),
                    active: t.get("activeOpacity"),
                    inactive: t.get("inactiveOpacity")
                };
                return {
                    progress: function (t, i) {
                        e.eachActiveState(i, function (t, e) {
                            var r = n[t];
                            if ("normal" === t && i.hasItemOption) {
                                var o = i.getItemModel(e).get(iX, !0);
                                null != o && (r = o)
                            }
                            var a = i.ensureUniqueItemVisual(e, "style");
                            a.opacity = r
                        }, t.start, t.end)
                    }
                }
            }
        }, oX = 5, aX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.render = function (t, e, n) {
                this._model = t, this._api = n, this._handlers || (this._handlers = {}, y(sX, function (t, e) {
                    n.getZr().on(e, this._handlers[e] = xA(t, this))
                }, this)), Oh(this, "_throttledDispatchExpand", t.get("axisExpandRate"), "fixRate")
            }, n.prototype.dispose = function (t, e) {
                y(this._handlers, function (t, n) {
                    e.getZr().off(n, t)
                }), this._handlers = null
            }, n.prototype._throttledDispatchExpand = function (t) {
                this._dispatchExpand(t)
            }, n.prototype._dispatchExpand = function (t) {
                t && this._api.dispatchAction(h({type: "parallelAxisExpand"}, t))
            }, n.type = "parallel", n
        }(Tz), sX = {
            mousedown: function (t) {
                jx(this, "click") && (this._mouseDownPoint = [t.offsetX, t.offsetY])
            }, mouseup: function (t) {
                var e = this._mouseDownPoint;
                if (jx(this, "click") && e) {
                    var n = [t.offsetX, t.offsetY], i = Math.pow(e[0] - n[0], 2) + Math.pow(e[1] - n[1], 2);
                    if (i > oX) return;
                    var r = this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]);
                    "none" !== r.behavior && this._dispatchExpand({axisExpandWindow: r.axisExpandWindow})
                }
                this._mouseDownPoint = null
            }, mousemove: function (t) {
                if (!this._mouseDownPoint && jx(this, "mousemove")) {
                    var e = this._model, n = e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]),
                        i = n.behavior;
                    "jump" === i && this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")), this._throttledDispatchExpand("none" === i ? null : {
                        axisExpandWindow: n.axisExpandWindow,
                        animation: "jump" === i ? null : {duration: 0}
                    })
                }
            }
        }, lX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.init = function () {
                t.prototype.init.apply(this, arguments), this.mergeOption({})
            }, n.prototype.mergeOption = function (t) {
                var e = this.option;
                t && l(e, t, !0), this._initDimensions()
            }, n.prototype.contains = function (t, e) {
                var n = t.get("parallelIndex");
                return null != n && e.getComponent("parallel", n) === this
            }, n.prototype.setAxisExpand = function (t) {
                y(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function (e) {
                    t.hasOwnProperty(e) && (this.option[e] = t[e])
                }, this)
            }, n.prototype._initDimensions = function () {
                var t = this.dimensions = [], e = this.parallelAxisIndex = [],
                    n = x(this.ecModel.queryComponents({mainType: "parallelAxis"}), function (t) {
                        return (t.get("parallelIndex") || 0) === this.componentIndex
                    }, this);
                y(n, function (n) {
                    t.push("dim" + n.get("dim")), e.push(n.componentIndex)
                })
            }, n.type = "parallel", n.dependencies = ["parallelAxis"], n.layoutMode = "box", n.defaultOption = {
                zlevel: 0,
                z: 0,
                left: 80,
                top: 60,
                right: 80,
                bottom: 60,
                layout: "horizontal",
                axisExpandable: !1,
                axisExpandCenter: null,
                axisExpandCount: 0,
                axisExpandWidth: 50,
                axisExpandRate: 17,
                axisExpandDebounce: 50,
                axisExpandSlideTriggerArea: [-.15, .05, .4],
                axisExpandTriggerOn: "click",
                parallelAxisDefault: null
            }, n
        }(gR), uX = function (t) {
            function n(e, n, i, r, o) {
                var a = t.call(this, e, n, i) || this;
                return a.type = r || "value", a.axisIndex = o, a
            }

            return e(n, t), n.prototype.isHorizontal = function () {
                return "horizontal" !== this.coordinateSystem.getModel().get("layout")
            }, n
        }(tF), hX = y, cX = Math.min, pX = Math.max, dX = Math.floor, fX = Math.ceil, gX = bi, yX = Math.PI,
        vX = function () {
            function t(t, e, n) {
                this.type = "parallel", this._axesMap = Z(), this._axesLayout = {}, this.dimensions = t.dimensions, this._model = t, this._init(t, e, n)
            }

            return t.prototype._init = function (t, e) {
                var n = t.dimensions, i = t.parallelAxisIndex;
                hX(n, function (t, n) {
                    var r = i[n], o = e.getComponent("parallelAxis", r),
                        a = this._axesMap.set(t, new uX(t, Jd(o), [0, 0], o.get("type"), r)), s = "category" === a.type;
                    a.onBand = s && o.get("boundaryGap"), a.inverse = o.get("inverse"), o.axis = a, a.model = o, a.coordinateSystem = o.coordinateSystem = this
                }, this)
            }, t.prototype.update = function (t) {
                this._updateAxesFromSeries(this._model, t)
            }, t.prototype.containPoint = function (t) {
                var e = this._makeLayoutInfo(), n = e.axisBase, i = e.layoutBase, r = e.pixelDimIndex, o = t[1 - r],
                    a = t[r];
                return o >= n && o <= n + e.axisLength && a >= i && a <= i + e.layoutLength
            }, t.prototype.getModel = function () {
                return this._model
            }, t.prototype._updateAxesFromSeries = function (t, e) {
                e.eachSeries(function (n) {
                    if (t.contains(n, e)) {
                        var i = n.getData();
                        hX(this.dimensions, function (t) {
                            var e = this._axesMap.get(t);
                            e.scale.unionExtentFromData(i, i.mapDimension(t)), $d(e.scale, e.model)
                        }, this)
                    }
                }, this)
            }, t.prototype.resize = function (t, e) {
                this._rect = kl(t.getBoxLayoutParams(), {
                    width: e.getWidth(),
                    height: e.getHeight()
                }), this._layoutAxes()
            }, t.prototype.getRect = function () {
                return this._rect
            }, t.prototype._makeLayoutInfo = function () {
                var t, e = this._model, n = this._rect, i = ["x", "y"], r = ["width", "height"], o = e.get("layout"),
                    a = "horizontal" === o ? 0 : 1, s = n[r[a]], l = [0, s], u = this.dimensions.length,
                    h = Jx(e.get("axisExpandWidth"), l), c = Jx(e.get("axisExpandCount") || 0, [0, u]),
                    p = e.get("axisExpandable") && u > 3 && u > c && c > 1 && h > 0 && s > 0,
                    d = e.get("axisExpandWindow");
                if (d) t = Jx(d[1] - d[0], l), d[1] = d[0] + t; else {
                    t = Jx(h * (c - 1), l);
                    var f = e.get("axisExpandCenter") || dX(u / 2);
                    d = [h * f - t / 2], d[1] = d[0] + t
                }
                var g = (s - t) / (u - c);
                3 > g && (g = 0);
                var y = [dX(gX(d[0] / h, 1)) + 1, fX(gX(d[1] / h, 1)) - 1], v = g / h * d[0];
                return {
                    layout: o,
                    pixelDimIndex: a,
                    layoutBase: n[i[a]],
                    layoutLength: s,
                    axisBase: n[i[1 - a]],
                    axisLength: n[r[1 - a]],
                    axisExpandable: p,
                    axisExpandWidth: h,
                    axisCollapseWidth: g,
                    axisExpandWindow: d,
                    axisCount: u,
                    winInnerIndices: y,
                    axisExpandWindow0Pos: v
                }
            }, t.prototype._layoutAxes = function () {
                var t = this._rect, e = this._axesMap, n = this.dimensions, i = this._makeLayoutInfo(), r = i.layout;
                e.each(function (t) {
                    var e = [0, i.axisLength], n = t.inverse ? 1 : 0;
                    t.setExtent(e[n], e[1 - n])
                }), hX(n, function (e, n) {
                    var o = (i.axisExpandable ? t_ : Qx)(n, i),
                        a = {horizontal: {x: o.position, y: i.axisLength}, vertical: {x: 0, y: o.position}},
                        s = {horizontal: yX / 2, vertical: 0}, l = [a[r].x + t.x, a[r].y + t.y], u = s[r], h = Gn();
                    Zn(h, h, u), Yn(h, h, l), this._axesLayout[e] = {
                        position: l,
                        rotation: u,
                        transform: h,
                        axisNameAvailableWidth: o.axisNameAvailableWidth,
                        axisLabelShow: o.axisLabelShow,
                        nameTruncateMaxWidth: o.nameTruncateMaxWidth,
                        tickDirection: 1,
                        labelDirection: 1
                    }
                }, this)
            }, t.prototype.getAxis = function (t) {
                return this._axesMap.get(t)
            }, t.prototype.dataToPoint = function (t, e) {
                return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t), e)
            }, t.prototype.eachActiveState = function (t, e, n, i) {
                null == n && (n = 0), null == i && (i = t.count());
                var r = this._axesMap, o = this.dimensions, a = [], s = [];
                y(o, function (e) {
                    a.push(t.mapDimension(e)), s.push(r.get(e).model)
                });
                for (var l = this.hasAxisBrushed(), u = n; i > u; u++) {
                    var h = void 0;
                    if (l) {
                        h = "active";
                        for (var c = t.getValues(a, u), p = 0, d = o.length; d > p; p++) {
                            var f = s[p].getActiveState(c[p]);
                            if ("inactive" === f) {
                                h = "inactive";
                                break
                            }
                        }
                    } else h = "normal";
                    e(h, u)
                }
            }, t.prototype.hasAxisBrushed = function () {
                for (var t = this.dimensions, e = this._axesMap, n = !1, i = 0, r = t.length; r > i; i++) "normal" !== e.get(t[i]).model.getActiveState() && (n = !0);
                return n
            }, t.prototype.axisCoordToPoint = function (t, e) {
                var n = this._axesLayout[e];
                return ys([t, 0], n.transform)
            }, t.prototype.getAxisLayout = function (t) {
                return s(this._axesLayout[t])
            }, t.prototype.getSlidedAxisExpandWindow = function (t) {
                var e = this._makeLayoutInfo(), n = e.pixelDimIndex, i = e.axisExpandWindow.slice(), r = i[1] - i[0],
                    o = [0, e.axisExpandWidth * (e.axisCount - 1)];
                if (!this.containPoint(t)) return {behavior: "none", axisExpandWindow: i};
                var a, s = t[n] - e.layoutBase - e.axisExpandWindow0Pos, l = "slide", u = e.axisCollapseWidth,
                    h = this._model.get("axisExpandSlideTriggerArea"), c = null != h[0];
                if (u) c && u && s < r * h[0] ? (l = "jump", a = s - r * h[2]) : c && u && s > r * (1 - h[0]) ? (l = "jump", a = s - r * (1 - h[2])) : (a = s - r * h[1]) >= 0 && (a = s - r * (1 - h[1])) <= 0 && (a = 0), a *= e.axisExpandWidth / u, a ? qx(a, i, o, "all") : l = "none"; else {
                    var p = i[1] - i[0], d = o[1] * s / p;
                    i = [pX(0, d - p / 2)], i[1] = cX(o[1], i[0] + p), i[0] = i[1] - p
                }
                return {axisExpandWindow: i, behavior: l}
            }, t
        }(), mX = {create: e_}, xX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.activeIntervals = [], e
            }

            return e(n, t), n.prototype.getAreaSelectStyle = function () {
                return Ar([["fill", "color"], ["lineWidth", "borderWidth"], ["stroke", "borderColor"], ["width", "width"], ["opacity", "opacity"]])(this.getModel("areaSelectStyle"))
            }, n.prototype.setActiveIntervals = function (t) {
                var e = this.activeIntervals = s(t);
                if (e) for (var n = e.length - 1; n >= 0; n--) wi(e[n])
            }, n.prototype.getActiveState = function (t) {
                var e = this.activeIntervals;
                if (!e.length) return "normal";
                if (null == t || isNaN(+t)) return "inactive";
                if (1 === e.length) {
                    var n = e[0];
                    if (n[0] <= t && t <= n[1]) return "active"
                } else for (var i = 0, r = e.length; r > i; i++) if (e[i][0] <= t && t <= e[i][1]) return "active";
                return "inactive"
            }, n
        }(gR);
    f(xX, HV);
    var _X = !0, bX = Math.min, wX = Math.max, SX = Math.pow, MX = 1e4, IX = 6, TX = 6, CX = "globalPan",
        AX = {w: [0, 0], e: [0, 1], n: [1, 0], s: [1, 1]},
        DX = {w: "ew", e: "ew", n: "ns", s: "ns", ne: "nesw", sw: "nesw", nw: "nwse", se: "nwse"}, LX = {
            brushStyle: {lineWidth: 2, stroke: "rgba(210,219,238,0.3)", fill: "#D2DBEE"},
            transformable: !0,
            brushMode: "single",
            removeOnClick: !1
        }, kX = 0, PX = function (t) {
            function n(e) {
                var n = t.call(this) || this;
                return n._track = [], n._covers = [], n._handlers = {}, n._zr = e, n.group = new sL, n._uid = "brushController_" + kX++, y(OX, function (t, e) {
                    this._handlers[e] = xA(t, this)
                }, n), n
            }

            return e(n, t), n.prototype.enableBrush = function (t) {
                return this._brushType && this._doDisableBrush(), t.brushType && this._doEnableBrush(t), this
            }, n.prototype._doEnableBrush = function (t) {
                var e = this._zr;
                this._enableGlobalPan || dv(e, CX, this._uid), y(this._handlers, function (t, n) {
                    e.on(n, t)
                }), this._brushType = t.brushType, this._brushOption = l(s(LX), t, !0)
            }, n.prototype._doDisableBrush = function () {
                var t = this._zr;
                fv(t, CX, this._uid), y(this._handlers, function (e, n) {
                    t.off(n, e)
                }), this._brushType = this._brushOption = null
            }, n.prototype.setPanels = function (t) {
                if (t && t.length) {
                    var e = this._panels = {};
                    y(t, function (t) {
                        e[t.panelId] = s(t)
                    })
                } else this._panels = null;
                return this
            }, n.prototype.mount = function (t) {
                t = t || {}, this._enableGlobalPan = t.enableGlobalPan;
                var e = this.group;
                return this._zr.add(e), e.attr({
                    x: t.x || 0,
                    y: t.y || 0,
                    rotation: t.rotation || 0,
                    scaleX: t.scaleX || 1,
                    scaleY: t.scaleY || 1
                }), this._transform = e.getLocalTransform(), this
            }, n.prototype.updateCovers = function (t) {
                function e(t, e) {
                    return (null != t.id ? t.id : o + e) + "-" + t.brushType
                }

                function n(t, n) {
                    return e(t.__brushOption, n)
                }

                function i(e, n) {
                    var i = t[e];
                    if (null != n && a[n] === c) u[e] = a[n]; else {
                        var r = u[e] = null != n ? (a[n].__brushOption = i, a[n]) : i_(h, n_(h, i));
                        a_(h, r)
                    }
                }

                function r(t) {
                    a[t] !== c && h.group.remove(a[t])
                }

                t = v(t, function (t) {
                    return l(s(LX), t, !0)
                });
                var o = "\x00-brush-index-", a = this._covers, u = this._covers = [], h = this, c = this._creatingCover;
                return new tV(a, t, n, e).add(i).update(i).remove(r).execute(), this
            }, n.prototype.unmount = function () {
                return this.enableBrush(!1), h_(this), this._zr.remove(this.group), this
            }, n.prototype.dispose = function () {
                this.unmount(), this.off()
            }, n
        }(LA), OX = {
            mousedown: function (t) {
                if (this._dragging) O_(this, t); else if (!t.target || !t.target.draggable) {
                    D_(t);
                    var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
                    this._creatingCover = null;
                    var n = this._creatingPanel = l_(this, t, e);
                    n && (this._dragging = !0, this._track = [e.slice()])
                }
            }, mousemove: function (t) {
                var e = t.offsetX, n = t.offsetY, i = this.group.transformCoordToLocal(e, n);
                if (A_(this, t, i), this._dragging) {
                    D_(t);
                    var r = k_(this, t, i, !1);
                    r && c_(this, r)
                }
            }, mouseup: function (t) {
                O_(this, t)
            }
        }, RX = {
            lineX: z_(0), lineY: z_(1), rect: {
                createCover: function (t, e) {
                    function n(t) {
                        return t
                    }

                    return f_({
                        toRectRange: n,
                        fromRectRange: n
                    }, t, e, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]])
                }, getCreatingRange: function (t) {
                    var e = d_(t);
                    return x_(e[1][0], e[1][1], e[0][0], e[0][1])
                }, updateCoverShape: function (t, e, n, i) {
                    g_(t, e, n, i)
                }, updateCommon: y_, contain: L_
            }, polygon: {
                createCover: function (t, e) {
                    var n = new sL;
                    return n.add(new JP({name: "main", style: m_(e), silent: !0})), n
                }, getCreatingRange: function (t) {
                    return t
                }, endCreating: function (t, e) {
                    e.remove(e.childAt(0)), e.add(new KP({
                        name: "main",
                        draggable: !0,
                        drift: S(M_, t, e),
                        ondragend: S(c_, t, {isEnd: !0})
                    }))
                }, updateCoverShape: function (t, e, n) {
                    e.childAt(0).setShape({points: T_(t, e, n)})
                }, updateCommon: y_, contain: L_
            }
        }, zX = ["axisLine", "axisTickLabel", "axisName"], EX = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.init = function (e, n) {
                t.prototype.init.apply(this, arguments), (this._brushController = new PX(n.getZr())).on("brush", xA(this._onBrush, this))
            }, n.prototype.render = function (t, e, n, i) {
                if (!F_(t, e, i)) {
                    this.axisModel = t, this.api = n, this.group.removeAll();
                    var r = this._axisGroup;
                    if (this._axisGroup = new sL, this.group.add(this._axisGroup), t.get("show")) {
                        var o = H_(t, e), a = o.coordinateSystem, s = t.getAreaSelectStyle(), l = s.width, u = t.axis.dim,
                            c = a.getAxisLayout(u), p = h({strokeContainThreshold: l}, c), d = new cG(t, p);
                        y(zX, d.add, d), this._axisGroup.add(d.getGroup()), this._refreshBrushController(p, s, t, o, l, n), _s(r, this._axisGroup, t)
                    }
                }
            }, n.prototype._refreshBrushController = function (t, e, n, i, r, o) {
                var a = n.axis.getExtent(), s = a[1] - a[0], l = Math.min(30, .1 * Math.abs(s)),
                    u = $D.create({x: a[0], y: -r / 2, width: s, height: r});
                u.x -= l, u.width += 2 * l, this._brushController.mount({
                    enableGlobalPan: !0,
                    rotation: t.rotation,
                    x: t.position[0],
                    y: t.position[1]
                }).setPanels([{
                    panelId: "pl",
                    clipPath: E_(u),
                    isTargetByCursor: B_(u, o, i),
                    getLinearBrushOtherExtent: N_(u, 0)
                }]).enableBrush({brushType: "lineX", brushStyle: e, removeOnClick: !0}).updateCovers(G_(n))
            }, n.prototype._onBrush = function (t) {
                var e = t.areas, n = this.axisModel, i = n.axis, r = v(e, function (t) {
                    return [i.coordToData(t.range[0], !0), i.coordToData(t.range[1], !0)]
                });
                (!n.option.realtime === t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                    type: "axisAreaSelect",
                    parallelAxisId: n.id,
                    intervals: r
                })
            }, n.prototype.dispose = function () {
                this._brushController.dispose()
            }, n.type = "parallelAxis", n
        }(Tz), NX = {type: "axisAreaSelect", event: "axisAreaSelected"}, BX = {
            type: "value",
            areaSelectStyle: {
                width: 20,
                borderWidth: 1,
                borderColor: "rgba(160,197,232)",
                color: "rgba(160,197,232)",
                opacity: .3
            },
            realtime: !0,
            z: 10
        };
    df(Y_);
    var VX = function () {
        function t() {
            this.angle = 0, this.width = 10, this.r = 10, this.x = 0, this.y = 0
        }

        return t
    }(), FX = function (t) {
        function n(e) {
            var n = t.call(this, e) || this;
            return n.type = "pointer", n
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new VX
        }, n.prototype.buildPath = function (t, e) {
            var n = Math.cos, i = Math.sin, r = e.r, o = e.width, a = e.angle,
                s = e.x - n(a) * o * (o >= r / 3 ? 1 : 2), l = e.y - i(a) * o * (o >= r / 3 ? 1 : 2);
            a = e.angle - Math.PI / 2, t.moveTo(s, l), t.lineTo(e.x + n(a) * o, e.y + i(a) * o), t.lineTo(e.x + n(e.angle) * r, e.y + i(e.angle) * r), t.lineTo(e.x - n(a) * o, e.y - i(a) * o), t.lineTo(s, l)
        }, n
    }(Bk), GX = 2 * Math.PI, HX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            this.group.removeAll();
            var i = t.get(["axisLine", "lineStyle", "color"]), r = Z_(t, n);
            this._renderMain(t, e, n, i, r), this._data = t.getData()
        }, n.prototype.dispose = function () {
        }, n.prototype._renderMain = function (t, e, n, i, r) {
            for (var o = this.group, a = t.get("clockwise"), s = -t.get("startAngle") / 180 * Math.PI, l = -t.get("endAngle") / 180 * Math.PI, u = t.getModel("axisLine"), h = u.get("roundCap"), c = h ? fF : ZP, p = u.get("show"), d = u.getModel("lineStyle"), f = d.get("width"), g = (l - s) % GX || l === s ? (l - s) % GX : GX, y = s, v = 0; p && v < i.length; v++) {
                var m = Math.min(Math.max(i[v][0], 0), 1);
                l = s + g * m;
                var x = new c({
                    shape: {
                        startAngle: y,
                        endAngle: l,
                        cx: r.cx,
                        cy: r.cy,
                        clockwise: a,
                        r0: r.r - f,
                        r: r.r
                    }, silent: !0
                });
                x.setStyle({fill: i[v][1]}), x.setStyle(d.getLineStyle(["color", "width"])), o.add(x), y = l
            }
            var _ = function (t) {
                if (0 >= t) return i[0][1];
                var e;
                for (e = 0; e < i.length; e++) if (i[e][0] >= t && (0 === e ? 0 : i[e - 1][0]) < t) return i[e][1];
                return i[e - 1][1]
            };
            if (!a) {
                var b = s;
                s = l, l = b
            }
            this._renderTicks(t, e, n, _, r, s, l, a, f), this._renderTitleAndDetail(t, e, n, _, r), this._renderAnchor(t, r), this._renderPointer(t, e, n, _, r, s, l, a, f)
        }, n.prototype._renderTicks = function (t, e, n, i, r, o, a, s, l) {
            for (var u, h, c = this.group, p = r.cx, d = r.cy, f = r.r, g = +t.get("min"), y = +t.get("max"), v = t.getModel("splitLine"), m = t.getModel("axisTick"), x = t.getModel("axisLabel"), _ = t.get("splitNumber"), b = m.get("splitNumber"), w = _i(v.get("length"), f), S = _i(m.get("length"), f), M = o, I = (a - o) / _, T = I / b, C = v.getModel("lineStyle").getLineStyle(), A = m.getModel("lineStyle").getLineStyle(), D = v.get("distance"), L = 0; _ >= L; L++) {
                if (u = Math.cos(M), h = Math.sin(M), v.get("show")) {
                    var k = D ? D + l : l, P = new eO({
                        shape: {
                            x1: u * (f - k) + p,
                            y1: h * (f - k) + d,
                            x2: u * (f - w - k) + p,
                            y2: h * (f - w - k) + d
                        }, style: C, silent: !0
                    });
                    "auto" === C.stroke && P.setStyle({stroke: i(L / _)}), c.add(P)
                }
                if (x.get("show")) {
                    var k = x.get("distance") + D, O = U_(bi(L / _ * (y - g) + g), x.get("formatter")), R = i(L / _);
                    c.add(new $k({
                        style: Os(x, {
                            text: O,
                            x: u * (f - w - k) + p,
                            y: h * (f - w - k) + d,
                            verticalAlign: -.8 > h ? "top" : h > .8 ? "bottom" : "middle",
                            align: -.4 > u ? "left" : u > .4 ? "right" : "center"
                        }, {inheritColor: R}), silent: !0
                    }))
                }
                if (m.get("show") && L !== _) {
                    var k = m.get("distance");
                    k = k ? k + l : l;
                    for (var z = 0; b >= z; z++) {
                        u = Math.cos(M), h = Math.sin(M);
                        var E = new eO({
                            shape: {
                                x1: u * (f - k) + p,
                                y1: h * (f - k) + d,
                                x2: u * (f - S - k) + p,
                                y2: h * (f - S - k) + d
                            }, silent: !0, style: A
                        });
                        "auto" === A.stroke && E.setStyle({stroke: i((L + z / b) / _)}), c.add(E), M += T
                    }
                    M -= T
                } else M += I
            }
        }, n.prototype._renderPointer = function (t, e, n, i, r, o, a, s, l) {
            function u(e, n) {
                var i, o = x.getItemModel(e), a = o.getModel("pointer"), s = _i(a.get("width"), r.r),
                    l = _i(a.get("length"), r.r), u = t.get(["pointer", "icon"]), h = a.get("offsetCenter"),
                    c = _i(h[0], r.r), p = _i(h[1], r.r), d = a.get("keepAspect");
                return i = u ? Sc(u, c - s / 2, p - l, s, l, null, d) : new FX({
                    shape: {
                        angle: -Math.PI / 2,
                        width: s,
                        r: l,
                        x: c,
                        y: p
                    }
                }), i.rotation = -(n + Math.PI / 2), i.x = r.cx, i.y = r.cy, i
            }

            function c(t, e) {
                var n = v.get("roundCap"), i = n ? fF : ZP, a = v.get("overlap"),
                    u = a ? v.get("width") : l / x.count(), h = a ? r.r - u : r.r - (t + 1) * u,
                    c = a ? r.r : r.r - t * u,
                    p = new i({shape: {startAngle: o, endAngle: e, cx: r.cx, cy: r.cy, clockwise: s, r0: h, r: c}});
                return a && (p.z2 = w - x.get(_, t) % w), p
            }

            var p = this.group, d = this._data, f = this._progressEls, g = [], y = t.get(["pointer", "show"]),
                v = t.getModel("progress"), m = v.get("show"), x = t.getData(), _ = x.mapDimension("value"),
                b = +t.get("min"), w = +t.get("max"), S = [b, w], M = [o, a];
            (m || y) && (x.diff(d).add(function (e) {
                if (y) {
                    var n = u(e, o);
                    hs(n, {rotation: -(xi(x.get(_, e), S, M, !0) + Math.PI / 2)}, t), p.add(n), x.setItemGraphicEl(e, n)
                }
                if (m) {
                    var i = c(e, o), r = v.get("clip");
                    hs(i, {shape: {endAngle: xi(x.get(_, e), S, M, r)}}, t), p.add(i), g[e] = i
                }
            }).update(function (e, n) {
                if (y) {
                    var i = d.getItemGraphicEl(n), r = i ? i.rotation : o, a = u(e, r);
                    a.rotation = r, us(a, {rotation: -(xi(x.get(_, e), S, M, !0) + Math.PI / 2)}, t), p.add(a), x.setItemGraphicEl(e, a)
                }
                if (m) {
                    var s = f[n], l = s ? s.shape.endAngle : o, h = c(e, l), b = v.get("clip");
                    us(h, {shape: {endAngle: xi(x.get(_, e), S, M, b)}}, t), p.add(h), g[e] = h
                }
            }).execute(), x.each(function (t) {
                var e = x.getItemModel(t), n = e.getModel("emphasis");
                if (y) {
                    var r = x.getItemGraphicEl(t), o = x.getItemVisual(t, "style"), a = o.fill;
                    if (r instanceof Wk) {
                        var s = r.style;
                        r.useStyle(h({image: s.image, x: s.x, y: s.y, width: s.width, height: s.height}, o))
                    } else r.useStyle(o), "pointer" !== r.type && r.setColor(a);
                    r.setStyle(e.getModel(["pointer", "itemStyle"]).getItemStyle()), "auto" === r.style.fill && r.setStyle("fill", i(xi(x.get(_, t), S, [0, 1], !0))), r.z2EmphasisLift = 0, Ia(r, e), Sa(r, n.get("focus"), n.get("blurScope"))
                }
                if (m) {
                    var l = g[t];
                    l.useStyle(x.getItemVisual(t, "style")), l.setStyle(e.getModel(["progress", "itemStyle"]).getItemStyle()), l.z2EmphasisLift = 0, Ia(l, e), Sa(l, n.get("focus"), n.get("blurScope"))
                }
            }), this._progressEls = g)
        }, n.prototype._renderAnchor = function (t, e) {
            var n = t.getModel("anchor"), i = n.get("show");
            if (i) {
                var r = n.get("size"), o = n.get("icon"), a = n.get("offsetCenter"), s = n.get("keepAspect"),
                    l = Sc(o, e.cx - r / 2 + _i(a[0], e.r), e.cy - r / 2 + _i(a[1], e.r), r, r, null, s);
                l.z2 = n.get("showAbove") ? 1 : 0, l.setStyle(n.getModel("itemStyle").getItemStyle()), this.group.add(l)
            }
        }, n.prototype._renderTitleAndDetail = function (t, e, n, i, r) {
            var o = this, a = t.getData(), s = a.mapDimension("value"), l = +t.get("min"), u = +t.get("max"),
                h = new sL, c = [], p = [], d = t.isAnimationEnabled();
            a.diff(this._data).add(function (t) {
                c[t] = new $k({silent: !0}), p[t] = new $k({silent: !0})
            }).update(function (t, e) {
                c[t] = o._titleEls[e], p[t] = o._detailEls[e]
            }).execute(), a.each(function (e) {
                var n = a.getItemModel(e), o = a.get(s, e), f = new sL, g = i(xi(o, [l, u], [0, 1], !0)),
                    y = n.getModel("title");
                if (y.get("show")) {
                    var v = y.get("offsetCenter"), m = r.cx + _i(v[0], r.r), x = r.cy + _i(v[1], r.r), _ = c[e];
                    _.attr({
                        style: Os(y, {
                            x: m,
                            y: x,
                            text: a.getName(e),
                            align: "center",
                            verticalAlign: "middle"
                        }, {inheritColor: g})
                    }), f.add(_)
                }
                var b = n.getModel("detail");
                if (b.get("show")) {
                    var w = b.get("offsetCenter"), S = r.cx + _i(w[0], r.r), M = r.cy + _i(w[1], r.r),
                        I = _i(b.get("width"), r.r), T = _i(b.get("height"), r.r),
                        C = t.get(["progress", "show"]) ? a.getItemVisual(e, "style").fill : g, _ = p[e],
                        A = b.get("formatter");
                    _.attr({
                        style: Os(b, {
                            x: S,
                            y: M,
                            text: U_(o, A),
                            width: isNaN(I) ? null : I,
                            height: isNaN(T) ? null : T,
                            align: "center",
                            verticalAlign: "middle"
                        }, {inheritColor: C})
                    }), Vs(_, {normal: b}, o, function (t) {
                        return U_(t, A)
                    }), d && Fs(_, e, a, t, {
                        getFormattedLabel: function (t, e, n, i, r, a) {
                            return U_(a ? a.interpolatedValue : o, A)
                        }
                    }), f.add(_)
                }
                h.add(f)
            }), this.group.add(h), this._titleEls = c, this._detailEls = p
        }, n.type = "gauge", n
    }(Dz), WX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.visualStyleAccessPath = "itemStyle", e.useColorPaletteOnData = !0, e
        }

        return e(n, t), n.prototype.getInitialData = function () {
            return Xg(this, ["value"])
        }, n.type = "series.gauge", n.defaultOption = {
            zlevel: 0,
            z: 2,
            center: ["50%", "50%"],
            legendHoverLink: !0,
            radius: "75%",
            startAngle: 225,
            endAngle: -45,
            clockwise: !0,
            min: 0,
            max: 100,
            splitNumber: 10,
            axisLine: {show: !0, roundCap: !1, lineStyle: {color: [[1, "#E6EBF8"]], width: 10}},
            progress: {show: !1, overlap: !0, width: 10, roundCap: !1, clip: !0},
            splitLine: {show: !0, length: 10, distance: 10, lineStyle: {color: "#63677A", width: 3, type: "solid"}},
            axisTick: {
                show: !0,
                splitNumber: 5,
                length: 6,
                distance: 10,
                lineStyle: {color: "#63677A", width: 1, type: "solid"}
            },
            axisLabel: {show: !0, distance: 15, color: "#464646", fontSize: 12},
            pointer: {icon: null, offsetCenter: [0, 0], show: !0, length: "60%", width: 6, keepAspect: !1},
            anchor: {
                show: !1,
                showAbove: !1,
                size: 6,
                icon: "circle",
                offsetCenter: [0, 0],
                keepAspect: !1,
                itemStyle: {color: "#fff", borderWidth: 0, borderColor: "#5470c6"}
            },
            title: {show: !0, offsetCenter: [0, "20%"], color: "#464646", fontSize: 16, valueAnimation: !1},
            detail: {
                show: !0,
                backgroundColor: "rgba(0,0,0,0)",
                borderWidth: 0,
                borderColor: "#ccc",
                width: 100,
                height: null,
                padding: [5, 10],
                offsetCenter: [0, "40%"],
                color: "#464646",
                fontSize: 30,
                fontWeight: "bold",
                lineHeight: 30,
                valueAnimation: !1
            }
        }, n
    }(Iz);
    df(j_);
    var XX = ["itemStyle", "opacity"], YX = function (t) {
        function n(e, n) {
            var i = t.call(this) || this, r = i, o = new JP, a = new $k;
            return r.setTextContent(a), i.setTextGuideLine(o), i.updateData(e, n, !0), i
        }

        return e(n, t), n.prototype.updateData = function (t, e, n) {
            var i = this, r = t.hostModel, o = t.getItemModel(e), a = t.getItemLayout(e), s = o.getModel("emphasis"),
                l = o.get(XX);
            l = null == l ? 1 : l, i.useStyle(t.getItemVisual(e, "style")), i.style.lineJoin = "round", n ? (i.setShape({points: a.points}), i.style.opacity = 0, hs(i, {style: {opacity: l}}, r, e)) : us(i, {
                style: {opacity: l},
                shape: {points: a.points}
            }, r, e), Ia(i, o), this._updateLabel(t, e), Sa(this, s.get("focus"), s.get("blurScope"))
        }, n.prototype._updateLabel = function (t, e) {
            var n = this, i = this.getTextGuideLine(), r = n.getTextContent(), o = t.hostModel, a = t.getItemModel(e),
                s = t.getItemLayout(e), l = s.label, u = t.getItemVisual(e, "style"), h = u.fill;
            ks(r, Ps(a), {
                labelFetcher: t.hostModel,
                labelDataIndex: e,
                defaultOpacity: u.opacity,
                defaultText: t.getName(e)
            }, {normal: {align: l.textAlign, verticalAlign: l.verticalAlign}}), n.setTextConfig({
                local: !0,
                inside: !!l.inside,
                insideStroke: h,
                outsideFill: h
            });
            var c = l.linePoints;
            i.setShape({points: c}), n.textGuideLineConfig = {anchor: c ? new HD(c[0][0], c[0][1]) : null}, us(r, {
                style: {
                    x: l.x,
                    y: l.y
                }
            }, o, e), r.attr({rotation: l.rotation, originX: l.x, originY: l.y, z2: 10}), lc(n, uc(a), {stroke: h})
        }, n
    }(KP), ZX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.ignoreLabelLineUpdate = !0, e
        }

        return e(n, t), n.prototype.render = function (t) {
            var e = t.getData(), n = this._data, i = this.group;
            e.diff(n).add(function (t) {
                var n = new YX(e, t);
                e.setItemGraphicEl(t, n), i.add(n)
            }).update(function (t, r) {
                var o = n.getItemGraphicEl(r);
                o.updateData(e, t), i.add(o), e.setItemGraphicEl(t, o)
            }).remove(function (e) {
                var i = n.getItemGraphicEl(e);
                ds(i, t, e)
            }).execute(), this._data = e
        }, n.prototype.remove = function () {
            this.group.removeAll(), this._data = null
        }, n.prototype.dispose = function () {
        }, n.type = "funnel", n
    }(Dz), UX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.useColorPaletteOnData = !0, e
        }

        return e(n, t), n.prototype.init = function (e) {
            t.prototype.init.apply(this, arguments), this.legendVisualProvider = new HF(xA(this.getData, this), xA(this.getRawData, this)), this._defaultLabelLine(e)
        }, n.prototype.getInitialData = function () {
            return Xg(this, {coordDimensions: ["value"], encodeDefaulter: S(Gl, this)})
        }, n.prototype._defaultLabelLine = function (t) {
            Wi(t, "labelLine", ["show"]);
            var e = t.labelLine, n = t.emphasis.labelLine;
            e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show
        }, n.prototype.getDataParams = function (e) {
            var n = this.getData(), i = t.prototype.getDataParams.call(this, e), r = n.mapDimension("value"),
                o = n.getSum(r);
            return i.percent = o ? +(n.get(r, e) / o * 100).toFixed(2) : 0, i.$vars.push("percent"), i
        }, n.type = "series.funnel", n.defaultOption = {
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            left: 80,
            top: 60,
            right: 80,
            bottom: 60,
            minSize: "0%",
            maxSize: "100%",
            sort: "descending",
            orient: "vertical",
            gap: 0,
            funnelAlign: "center",
            label: {show: !0, position: "outer"},
            labelLine: {show: !0, length: 20, lineStyle: {width: 1}},
            itemStyle: {borderColor: "#fff", borderWidth: 1},
            emphasis: {label: {show: !0}},
            select: {itemStyle: {borderColor: "#212121"}}
        }, n
    }(Iz);
    df(Q_);
    var jX = function () {
        function t() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.cpx2 = 0, this.cpy2 = 0, this.extent = 0
        }

        return t
    }(), qX = function (t) {
        function n(e) {
            return t.call(this, e) || this
        }

        return e(n, t), n.prototype.getDefaultShape = function () {
            return new jX
        }, n.prototype.buildPath = function (t, e) {
            var n = e.extent;
            t.moveTo(e.x1, e.y1), t.bezierCurveTo(e.cpx1, e.cpy1, e.cpx2, e.cpy2, e.x2, e.y2), "vertical" === e.orient ? (t.lineTo(e.x2 + n, e.y2), t.bezierCurveTo(e.cpx2 + n, e.cpy2, e.cpx1 + n, e.cpy1, e.x1 + n, e.y1)) : (t.lineTo(e.x2, e.y2 + n), t.bezierCurveTo(e.cpx2, e.cpy2 + n, e.cpx1, e.cpy1 + n, e.x1, e.y1 + n)), t.closePath()
        }, n.prototype.highlight = function () {
            aa(this)
        }, n.prototype.downplay = function () {
            sa(this)
        }, n
    }(Bk), KX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e._focusAdjacencyDisabled = !1, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            var i = this, r = t.getGraph(), o = this.group, a = t.layoutInfo, s = a.width, l = a.height,
                u = t.getData(), h = t.getData("edge"), c = t.get("orient");
            this._model = t, o.removeAll(), o.x = a.x, o.y = a.y, r.eachEdge(function (e) {
                var n = new qX, i = tP(n);
                i.dataIndex = e.dataIndex, i.seriesIndex = t.seriesIndex, i.dataType = "edge";
                var r, a, u, p, d, f, g, y, v = e.getModel(), m = v.getModel("lineStyle"), x = m.get("curveness"),
                    _ = e.node1.getLayout(), b = e.node1.getModel(), w = b.get("localX"), S = b.get("localY"),
                    M = e.node2.getLayout(), I = e.node2.getModel(), T = I.get("localX"), C = I.get("localY"),
                    A = e.getLayout();
                switch (n.shape.extent = Math.max(1, A.dy), n.shape.orient = c, "vertical" === c ? (r = (null != w ? w * s : _.x) + A.sy, a = (null != S ? S * l : _.y) + _.dy, u = (null != T ? T * s : M.x) + A.ty, p = null != C ? C * l : M.y, d = r, f = a * (1 - x) + p * x, g = u, y = a * x + p * (1 - x)) : (r = (null != w ? w * s : _.x) + _.dx, a = (null != S ? S * l : _.y) + A.sy, u = null != T ? T * s : M.x, p = (null != C ? C * l : M.y) + A.ty, d = r * (1 - x) + u * x, f = a, g = r * x + u * (1 - x), y = p), n.setShape({
                    x1: r,
                    y1: a,
                    x2: u,
                    y2: p,
                    cpx1: d,
                    cpy1: f,
                    cpx2: g,
                    cpy2: y
                }), n.useStyle(m.getItemStyle()), n.style.fill) {
                    case"source":
                        n.style.fill = e.node1.getVisual("color"), n.style.decal = e.node1.getVisual("style").decal;
                        break;
                    case"target":
                        n.style.fill = e.node2.getVisual("color"), n.style.decal = e.node2.getVisual("style").decal;
                        break;
                    case"gradient":
                        var D = e.node1.getVisual("color"), L = e.node2.getVisual("color");
                        "string" == typeof D && "string" == typeof L && (n.style.fill = new uO(0, 0, 1, 0, [{
                            color: D,
                            offset: 0
                        }, {color: L, offset: 1}]))
                }
                var k = v.getModel("emphasis");
                Ia(n, v, "lineStyle", function (t) {
                    return t.getItemStyle()
                }), o.add(n), h.setItemGraphicEl(e.dataIndex, n);
                var P = k.get("focus");
                Sa(n, "adjacency" === P ? e.getAdjacentDataIndices() : P, k.get("blurScope")), tP(n).dataType = "edge"
            }), r.eachNode(function (e) {
                var n = e.getLayout(), i = e.getModel(), r = i.get("localX"), a = i.get("localY"),
                    h = i.getModel("emphasis"), c = new Uk({
                        shape: {
                            x: null != r ? r * s : n.x,
                            y: null != a ? a * l : n.y,
                            width: n.dx,
                            height: n.dy
                        }, style: i.getModel("itemStyle").getItemStyle(), z2: 10
                    });
                ks(c, Ps(i), {
                    labelFetcher: t,
                    labelDataIndex: e.dataIndex,
                    defaultText: e.id
                }), c.disableLabelAnimation = !0, c.setStyle("fill", e.getVisual("color")), c.setStyle("decal", e.getVisual("style").decal), Ia(c, i), o.add(c), u.setItemGraphicEl(e.dataIndex, c), tP(c).dataType = "node";
                var p = h.get("focus");
                Sa(c, "adjacency" === p ? e.getAdjacentDataIndices() : p, h.get("blurScope"))
            }), u.eachItemGraphicEl(function (e, r) {
                var o = u.getItemModel(r);
                o.get("draggable") && (e.drift = function (e, o) {
                    i._focusAdjacencyDisabled = !0, this.shape.x += e, this.shape.y += o, this.dirty(), n.dispatchAction({
                        type: "dragNode",
                        seriesId: t.id,
                        dataIndex: u.getRawIndex(r),
                        localX: this.shape.x / s,
                        localY: this.shape.y / l
                    })
                }, e.ondragend = function () {
                    i._focusAdjacencyDisabled = !1
                }, e.draggable = !0, e.cursor = "move")
            }), !this._data && t.isAnimationEnabled() && o.setClipPath(tb(o.getBoundingRect(), t, function () {
                o.removeClipPath()
            })), this._data = t.getData()
        }, n.prototype.dispose = function () {
        }, n.type = "sankey", n
    }(Dz), $X = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.getInitialData = function (t, e) {
            function n(t, e) {
                t.wrapMethod("getItemModel", function (t, e) {
                    var n = t.parentModel, i = n.getData().getItemLayout(e);
                    if (i) {
                        var r = i.depth, o = n.levelModels[r];
                        o && (t.parentModel = o)
                    }
                    return t
                }), e.wrapMethod("getItemModel", function (t, e) {
                    var n = t.parentModel, i = n.getGraph().getEdgeByIndex(e), r = i.node1.getLayout();
                    if (r) {
                        var o = r.depth, a = n.levelModels[o];
                        a && (t.parentModel = a)
                    }
                    return t
                })
            }

            var i = t.edges || t.links, r = t.data || t.nodes, o = t.levels;
            this.levelModels = [];
            for (var a = this.levelModels, s = 0; s < o.length; s++) null != o[s].depth && o[s].depth >= 0 && (a[o[s].depth] = new VO(o[s], this, e));
            if (r && i) {
                var l = Ix(r, i, this, !0, n);
                return l.data
            }
        }, n.prototype.setNodePosition = function (t, e) {
            var n = this.option.data[t];
            n.localX = e[0], n.localY = e[1]
        }, n.prototype.getGraph = function () {
            return this.getData().graph
        }, n.prototype.getEdgeData = function () {
            return this.getGraph().edgeData
        }, n.prototype.formatTooltip = function (t, e, n) {
            function i(t) {
                return isNaN(t) || null == t
            }

            if ("edge" === n) {
                var r = this.getDataParams(t, n), o = r.data, a = r.value, s = o.source + " -- " + o.target;
                return rh("nameValue", {name: s, value: a, noValue: i(a)})
            }
            var l = this.getGraph().getNodeByIndex(t), u = l.getLayout().value, h = this.getDataParams(t, n).data.name;
            return rh("nameValue", {name: null != h ? h + "" : null, value: u, noValue: i(u)})
        }, n.prototype.optionUpdated = function () {
        }, n.prototype.getDataParams = function (e, n) {
            var i = t.prototype.getDataParams.call(this, e, n);
            if (null == i.value && "node" === n) {
                var r = this.getGraph().getNodeByIndex(e), o = r.getLayout().value;
                i.value = o
            }
            return i
        }, n.type = "series.sankey", n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "view",
            left: "5%",
            top: "5%",
            right: "20%",
            bottom: "5%",
            orient: "horizontal",
            nodeWidth: 20,
            nodeGap: 8,
            draggable: !0,
            layoutIterations: 32,
            label: {show: !0, position: "right", fontSize: 12},
            levels: [],
            nodeAlign: "justify",
            lineStyle: {color: "#314656", opacity: .2, curveness: .5},
            emphasis: {label: {show: !0}, lineStyle: {opacity: .5}},
            select: {itemStyle: {borderColor: "#212121"}},
            animationEasing: "linear",
            animationDuration: 1e3
        }, n
    }(Iz);
    df(Ib);
    var JX = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e._layers = [], e
        }

        return e(n, t), n.prototype.render = function (t) {
            function e(t) {
                return t.name
            }

            function n(e, n, s) {
                var l = r._layers;
                if ("remove" === e) return void o.remove(l[n]);
                for (var u, h = [], p = [], d = a[n].indices, f = 0; f < d.length; f++) {
                    var g = i.getItemLayout(d[f]), y = g.x, v = g.y0, m = g.y;
                    h.push(y, v), p.push(y, v + m), u = i.getItemVisual(d[f], "style")
                }
                var x, _ = i.getItemLayout(d[0]), b = t.getModel("label"), w = b.get("margin"),
                    S = t.getModel("emphasis");
                if ("add" === e) {
                    var M = c[n] = new sL;
                    x = new zF({
                        shape: {
                            points: h,
                            stackedOnPoints: p,
                            smooth: .4,
                            stackedOnSmooth: .4,
                            smoothConstraint: !1
                        }, z2: 0
                    }), M.add(x), o.add(M), t.isAnimationEnabled() && x.setClipPath(Tb(x.getBoundingRect(), t, function () {
                        x.removeClipPath()
                    }))
                } else {
                    var M = l[s];
                    x = M.childAt(0), o.add(M), c[n] = M, us(x, {shape: {points: h, stackedOnPoints: p}}, t)
                }
                ks(x, Ps(t), {
                    labelDataIndex: d[f - 1],
                    defaultText: i.getName(d[f - 1]),
                    inheritColor: u.fill
                }, {normal: {verticalAlign: "middle"}}), x.setTextConfig({position: null, local: !0});
                var I = x.getTextContent();
                I && (I.x = _.x - w, I.y = _.y0 + _.y / 2), x.useStyle(u), i.setItemGraphicEl(n, x), Ia(x, t), Sa(x, S.get("focus"), S.get("blurScope"))
            }

            var i = t.getData(), r = this, o = this.group, a = t.getLayerSeries(), s = i.getLayout("layoutInfo"),
                l = s.rect, u = s.boundaryGap;
            o.x = 0, o.y = l.y + u[0];
            var h = new tV(this._layersSeries || [], a, e, e), c = [];
            h.add(xA(n, this, "add")).update(xA(n, this, "update")).remove(xA(n, this, "remove")).execute(), this._layersSeries = a, this._layers = c
        }, n.type = "themeRiver", n
    }(Dz), QX = 2, tY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.useColorPaletteOnData = !0, e
        }

        return e(n, t), n.prototype.init = function () {
            t.prototype.init.apply(this, arguments), this.legendVisualProvider = new HF(xA(this.getData, this), xA(this.getRawData, this))
        }, n.prototype.fixData = function (t) {
            var e = t.length, n = {}, i = yr(t, function (t) {
                return n.hasOwnProperty(t[0] + "") || (n[t[0] + ""] = -1), t[2]
            }), r = [];
            i.buckets.each(function (t, e) {
                r.push({name: e, dataList: t})
            });
            for (var o = r.length, a = 0; o > a; ++a) {
                for (var s = r[a].name, l = 0; l < r[a].dataList.length; ++l) {
                    var u = r[a].dataList[l][0] + "";
                    n[u] = a
                }
                for (var u in n) n.hasOwnProperty(u) && n[u] !== a && (n[u] = a, t[e] = [u, 0, s], e++)
            }
            return t
        }, n.prototype.getInitialData = function (t) {
            for (var e = this.getReferringComponents("singleAxis", wL).models[0], n = e.get("type"), i = x(t.data, function (t) {
                return void 0 !== t[2]
            }), r = this.fixData(i || []), o = [], a = this.nameMap = Z(), s = 0, l = 0; l < r.length; ++l) o.push(r[l][QX]), a.get(r[l][QX]) || (a.set(r[l][QX], s), s++);
            var u = ud(r, {
                coordDimensions: ["single"],
                dimensionsDefine: [{name: "time", type: rd(n)}, {name: "value", type: "float"}, {
                    name: "name",
                    type: "ordinal"
                }],
                encodeDefine: {single: 0, value: 1, itemName: 2}
            }), h = new fV(u, this);
            return h.initData(r), h
        }, n.prototype.getLayerSeries = function () {
            for (var t = this.getData(), e = t.count(), n = [], i = 0; e > i; ++i) n[i] = i;
            var r = t.mapDimension("single"), o = yr(n, function (e) {
                return t.get("name", e)
            }), a = [];
            return o.buckets.each(function (e, n) {
                e.sort(function (e, n) {
                    return t.get(r, e) - t.get(r, n)
                }), a.push({name: n, indices: e})
            }), a
        }, n.prototype.getAxisTooltipData = function (t, e) {
            M(t) || (t = t ? [t] : []);
            for (var n, i = this.getData(), r = this.getLayerSeries(), o = [], a = r.length, s = 0; a > s; ++s) {
                for (var l = Number.MAX_VALUE, u = -1, h = r[s].indices.length, c = 0; h > c; ++c) {
                    var p = i.get(t[0], r[s].indices[c]), d = Math.abs(p - e);
                    l >= d && (n = p, l = d, u = r[s].indices[c])
                }
                o.push(u)
            }
            return {dataIndices: o, nestestValue: n}
        }, n.prototype.formatTooltip = function (t) {
            var e = this.getData(), n = e.getName(t), i = e.get(e.mapDimension("value"), t);
            return rh("nameValue", {name: n, value: i})
        }, n.type = "series.themeRiver", n.dependencies = ["singleAxis"], n.defaultOption = {
            zlevel: 0,
            z: 2,
            coordinateSystem: "singleAxis",
            boundaryGap: ["10%", "10%"],
            singleAxisIndex: 0,
            animationEasing: "linear",
            label: {margin: 4, show: !0, position: "left", fontSize: 11},
            emphasis: {label: {show: !0}}
        }, n
    }(Iz);
    df(Lb);
    var eY = ["itemStyle", "borderWidth"], nY = [{xy: "x", wh: "width", index: 0, posDesc: ["left", "right"]}, {
        xy: "y",
        wh: "height",
        index: 1,
        posDesc: ["top", "bottom"]
    }], iY = new kP, rY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            var i = this.group, r = t.getData(), o = this._data, a = t.coordinateSystem, s = a.getBaseAxis(),
                l = s.isHorizontal(), u = a.master.getRect(), h = {
                    ecSize: {width: n.getWidth(), height: n.getHeight()},
                    seriesModel: t,
                    coordSys: a,
                    coordSysExtent: [[u.x, u.x + u.width], [u.y, u.y + u.height]],
                    isHorizontal: l,
                    valueDim: nY[+l],
                    categoryDim: nY[1 - +l]
                };
            return r.diff(o).add(function (t) {
                if (r.hasValue(t)) {
                    var e = Hb(r, t), n = kb(r, t, e, h), o = Yb(r, h, n);
                    r.setItemGraphicEl(t, o), i.add(o), $b(o, h, n)
                }
            }).update(function (t, e) {
                var n = o.getItemGraphicEl(e);
                if (!r.hasValue(t)) return void i.remove(n);
                var a = Hb(r, t), s = kb(r, t, a, h), l = jb(r, s);
                n && l !== n.__pictorialShapeStr && (i.remove(n), r.setItemGraphicEl(t, null), n = null), n ? Zb(n, h, s) : n = Yb(r, h, s, !0), r.setItemGraphicEl(t, n), n.__pictorialSymbolMeta = s, i.add(n), $b(n, h, s)
            }).remove(function (t) {
                var e = o.getItemGraphicEl(t);
                e && Ub(o, t, e.__pictorialSymbolMeta.animationModel, e)
            }).execute(), this._data = r, this.group
        }, n.prototype.remove = function (t) {
            var e = this.group, n = this._data;
            t.get("animation") ? n && n.eachItemGraphicEl(function (e) {
                Ub(n, tP(e).dataIndex, t, e)
            }) : e.removeAll()
        }, n.type = "pictorialBar", n
    }(Dz), oY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.hasSymbolVisual = !0, e.defaultSymbol = "roundRect", e
        }

        return e(n, t), n.prototype.getInitialData = function (e) {
            return e.stack = null, t.prototype.getInitialData.apply(this, arguments)
        }, n.type = "series.pictorialBar", n.dependencies = ["grid"], n.defaultOption = Xs(cF.defaultOption, {
            symbol: "circle",
            symbolSize: null,
            symbolRotate: null,
            symbolPosition: null,
            symbolOffset: null,
            symbolMargin: null,
            symbolRepeat: !1,
            symbolRepeatDirection: "end",
            symbolClip: !1,
            symbolBoundingData: null,
            symbolPatternSize: 400,
            barGap: "-100%",
            progressive: 0,
            emphasis: {scale: !1},
            select: {itemStyle: {borderColor: "#212121"}}
        }), n
    }(cF);
    df(Qb);
    var aY = Ck.CMD, sY = 2 * Math.PI, lY = ["x", "y"], uY = ["width", "height"], hY = [], cY = ur(),
        pY = {x: 1, y: 1, scaleX: 1, scaleY: 1, originX: 1, originY: 1, rotation: 1},
        dY = (b(pY).join(", "), {color: "fill", borderColor: "stroke"}),
        fY = {symbol: 1, symbolSize: 1, symbolKeepAspect: 1, legendIcon: 1, visualMeta: 1, liftZ: 1, decal: 1},
        gY = "emphasis", yY = "normal", vY = "blur", mY = "select", xY = [yY, gY, vY, mY],
        _Y = {normal: ["itemStyle"], emphasis: [gY, "itemStyle"], blur: [vY, "itemStyle"], select: [mY, "itemStyle"]},
        bY = {normal: ["label"], emphasis: [gY, "label"], blur: [vY, "label"], select: [mY, "label"]}, wY = "e\x00\x00",
        SY = {normal: {}, emphasis: {}, blur: {}, select: {}},
        MY = {position: ["x", "y"], scale: ["scaleX", "scaleY"], origin: ["originX", "originY"]}, IY = new GD,
        TY = {cartesian2d: ew, geo: iw, singleAxis: ow, polar: sw, calendar: lw}, CY = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.optionUpdated = function () {
                this.currentZLevel = this.get("zlevel", !0), this.currentZ = this.get("z", !0)
            }, n.prototype.getInitialData = function () {
                return gd(this.getSource(), this)
            }, n.prototype.getDataParams = function (e, n, i) {
                var r = t.prototype.getDataParams.call(this, e, n);
                return i && (r.info = cY(i).info), r
            }, n.type = "series.custom", n.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], n.defaultOption = {
                coordinateSystem: "cartesian2d",
                zlevel: 0,
                z: 2,
                legendHoverLink: !0,
                clip: !1
            }, n
        }(Iz), AY = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.render = function (t, e, n, i) {
                var r = this._data, o = t.getData(), a = this.group, s = hS(t, o, e, n);
                r || a.removeAll();
                var l = t.__transientTransitionOpt;
                if (!l || null != l.from && null != l.to) {
                    var u = new kY(t, l), h = l ? "multiple" : "oneToOne";
                    new tV(r ? r.getIndices() : [], o.getIndices(), Xw(r, h, l && l.from), Xw(o, h, l && l.to), null, h).add(function (e) {
                        pS(n, null, e, s(e, i), t, a, o, null)
                    }).remove(function (e) {
                        IS(r.getItemGraphicEl(e), t, a)
                    }).update(function (e, l) {
                        u.reset("oneToOne");
                        var h = r.getItemGraphicEl(l);
                        u.findAndAddFrom(h), u.hasFrom() && (DS(h, a), h = null), pS(n, h, e, s(e, i), t, a, o, u), u.applyMorphing()
                    }).updateManyToOne(function (e, l) {
                        u.reset("manyToOne");
                        for (var h = 0; h < l.length; h++) {
                            var c = r.getItemGraphicEl(l[h]);
                            u.findAndAddFrom(c), DS(c, a)
                        }
                        pS(n, null, e, s(e, i), t, a, o, u), u.applyMorphing()
                    }).updateOneToMany(function (e, l) {
                        u.reset("oneToMany");
                        var h = e.length, c = r.getItemGraphicEl(l);
                        u.findAndAddFrom(c), DS(c, a);
                        for (var p = 0; h > p; p++) pS(n, null, e[p], s(e[p], i), t, a, o, u);
                        u.applyMorphing()
                    }).execute()
                } else r && r.each(function (e) {
                    IS(r.getItemGraphicEl(e), t, a)
                }), o.each(function (e) {
                    pS(n, null, e, s(e, i), t, a, o, null)
                });
                var c = t.get("clip", !0) ? Xf(t.coordinateSystem, !1, t) : null;
                c ? a.setClipPath(c) : a.removeClipPath(), this._data = o
            }, n.prototype.incrementalPrepareRender = function () {
                this.group.removeAll(), this._data = null
            }, n.prototype.incrementalRender = function (t, e, n, i, r) {
                function o(t) {
                    t.isGroup || (t.incremental = !0, t.ensureState("emphasis").hoverLayer = !0)
                }

                for (var a = e.getData(), s = hS(e, a, n, i), l = t.start; l < t.end; l++) {
                    var u = pS(null, null, l, s(l, r), e, this.group, a, null);
                    u && u.traverse(o)
                }
            }, n.prototype.filterForExposedEvent = function (t, e, n) {
                var i = e.element;
                if (null == i || n.name === i) return !0;
                for (; (n = n.__hostTarget || n.parent) && n !== this.group;) if (n.name === i) return !0;
                return !1
            }, n.type = "custom", n
        }(Dz), DY = {}, LY = {
            setTransform: function (t, e) {
                return DY.el[t] = e, this
            }, getTransform: function (t) {
                return DY.el[t]
            }, setShape: function (t, e) {
                var n = DY.el.shape || (DY.el.shape = {});
                return n[t] = e, DY.isShapeDirty = !0, this
            }, getShape: function (t) {
                var e = DY.el.shape;
                return e ? e[t] : void 0
            }, setStyle: function (t, e) {
                var n = DY.el.style;
                return n && (n[t] = e, DY.isStyleDirty = !0), this
            }, getStyle: function (t) {
                var e = DY.el.style;
                return e ? e[t] : void 0
            }, setExtra: function (t, e) {
                var n = DY.el.extra || (DY.el.extra = {});
                return n[t] = e, this
            }, getExtra: function (t) {
                var e = DY.el.extra;
                return e ? e[t] : void 0
            }
        }, kY = function () {
            function t(t, e) {
                this._fromList = [], this._toList = [], this._toElOptionList = [], this._allPropsFinalList = [], this._toDataIndices = [], this._morphConfigList = [], this._seriesModel = t, this._transOpt = e
            }

            return t.prototype.hasFrom = function () {
                return !!this._fromList.length
            }, t.prototype.findAndAddFrom = function (t) {
                if (t && (cY(t).canMorph && this._fromList.push(t), t.isGroup)) for (var e = t.childrenRef(), n = 0; n < e.length; n++) this.findAndAddFrom(e[n])
            }, t.prototype.addTo = function (t, e, n, i) {
                t && (this._toList.push(t), this._toElOptionList.push(e), this._toDataIndices.push(n), this._allPropsFinalList.push(i))
            }, t.prototype.applyMorphing = function () {
                var t = this._type, e = this._fromList, n = this._toList, i = n.length, r = e.length;
                if (r && i) if ("oneToOne" === t) for (var o = 0; i > o; o++) this._oneToOneForSingleTo(o, o); else if ("manyToOne" === t) for (var a = Math.max(1, Math.floor(r / i)), o = 0, s = 0; i > o; o++, s += a) {
                    var l = o + 1 >= i ? r - s : a;
                    this._manyToOneForSingleTo(o, s >= r ? null : s, l)
                } else if ("oneToMany" === t) for (var u = Math.max(1, Math.floor(i / r)), h = 0, c = 0; i > h; h += u, c++) {
                    var p = h + u >= i ? i - h : u;
                    this._oneToManyForSingleFrom(h, p, c >= r ? null : c)
                }
            }, t.prototype._oneToOneForSingleTo = function (t, e) {
                var n = this._toList[t], i = this._toElOptionList[t], r = this._toDataIndices[t],
                    o = this._allPropsFinalList[t], a = this._fromList[e], s = this._getOrCreateMorphConfig(r),
                    l = s.duration;
                if (a && Dw(a)) {
                    if (Uw(n, o, i.style), l) {
                        var u = kw([a], n, s, LS);
                        this._processResultIndividuals(u, t, null)
                    }
                } else {
                    var h = l && a && (a !== n || Lw(a)) ? a : null, c = {};
                    qw("shape", n, h, i, c, !1), qw("extra", n, h, i, c, !1), $w(n, h, i, c, !1), Qw(n, h, i, i.style, c, !1), Uw(n, o, i.style), h && Sw(h, n, s), jw(n, r, i, this._seriesModel, c, !1)
                }
            }, t.prototype._manyToOneForSingleTo = function (t, e, n) {
                var i = this._toList[t], r = this._toElOptionList[t], o = this._allPropsFinalList[t];
                Uw(i, o, r.style);
                var a = this._getOrCreateMorphConfig(this._toDataIndices[t]);
                if (a.duration && null != e) {
                    for (var s = [], l = e; n > l; l++) s.push(this._fromList[l]);
                    var u = kw(s, i, a, LS);
                    this._processResultIndividuals(u, t, null)
                }
            }, t.prototype._oneToManyForSingleFrom = function (t, e, n) {
                for (var i = null == n ? null : this._fromList[n], r = this._toList, o = [], a = t; e > a; a++) {
                    var s = r[a];
                    Uw(s, this._allPropsFinalList[a], this._toElOptionList[a].style), o.push(s)
                }
                var l = this._getOrCreateMorphConfig(this._toDataIndices[t]);
                if (l.duration && i) {
                    var u = Vw(i, o, l, LS);
                    this._processResultIndividuals(u, t, e)
                }
            }, t.prototype._processResultIndividuals = function (t, e, n) {
                for (var i = null != n, r = 0; r < t.count; r++) {
                    var o = t.fromIndividuals[r], a = t.toIndividuals[r], s = e + (i ? r : 0), l = this._toElOptionList[s],
                        u = this._toDataIndices[s], h = {};
                    $w(a, o, l, h, !1), Qw(a, o, l, l.style, h, !1), jw(a, u, l, this._seriesModel, h, !1)
                }
            }, t.prototype._getOrCreateMorphConfig = function (t) {
                var e = this._morphConfigList, n = e[t];
                if (n) return n;
                var i, r, o, a = this._seriesModel, s = this._transOpt;
                if (a.isAnimationEnabled()) {
                    var l = void 0;
                    if (a && a.ecModel) {
                        var u = a.ecModel.getUpdatePayload();
                        l = u && u.animation
                    }
                    if (l) i = l.duration || 0, r = l.easing || "cubicOut", o = l.delay || 0; else {
                        r = a.get("animationEasingUpdate");
                        var h = a.get("animationDelayUpdate");
                        o = I(h) ? h(t) : h;
                        var c = a.get("animationDurationUpdate");
                        i = I(c) ? c(t) : c
                    }
                }
                return n = {duration: i || 0, delay: o, easing: r, dividingMethod: s ? s.dividingMethod : null}, e[t] = n, n
            }, t.prototype.reset = function (t) {
                this._type = t, this._fromList.length = this._toList.length = this._toElOptionList.length = this._allPropsFinalList.length = this._toDataIndices.length = 0
            }, t
        }();
    df(kS), df(My);
    var PY = ur(), OY = s, RY = xA, zY = function () {
        function t() {
            this._dragging = !1, this.animationThreshold = 15
        }

        return t.prototype.render = function (t, e, n, i) {
            var r = e.get("value"), o = e.get("status");
            if (this._axisModel = t, this._axisPointerModel = e, this._api = n, i || this._lastValue !== r || this._lastStatus !== o) {
                this._lastValue = r, this._lastStatus = o;
                var a = this._group, s = this._handle;
                if (!o || "hide" === o) return a && a.hide(), void (s && s.hide());
                a && a.show(), s && s.show();
                var l = {};
                this.makeElOption(l, r, t, e, n);
                var u = l.graphicKey;
                u !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = u;
                var h = this._moveAnimation = this.determineAnimation(t, e);
                if (a) {
                    var c = S(PS, e, h);
                    this.updatePointerEl(a, l, c), this.updateLabelEl(a, l, c, e)
                } else a = this._group = new sL, this.createPointerEl(a, l, t, e), this.createLabelEl(a, l, t, e), n.getZr().add(a);
                ES(a, e, !0), this._renderHandle(r)
            }
        }, t.prototype.remove = function (t) {
            this.clear(t)
        }, t.prototype.dispose = function (t) {
            this.clear(t)
        }, t.prototype.determineAnimation = function (t, e) {
            var n = e.get("animation"), i = t.axis, r = "category" === i.type, o = e.get("snap");
            if (!o && !r) return !1;
            if ("auto" === n || null == n) {
                var a = this.animationThreshold;
                if (r && i.getBandWidth() > a) return !0;
                if (o) {
                    var s = my(t).seriesDataCount, l = i.getExtent();
                    return Math.abs(l[0] - l[1]) / s > a
                }
                return !1
            }
            return n === !0
        }, t.prototype.makeElOption = function () {
        }, t.prototype.createPointerEl = function (t, e) {
            var n = e.pointer;
            if (n) {
                var i = PY(t).pointerEl = new MO[n.type](OY(e.pointer));
                t.add(i)
            }
        }, t.prototype.createLabelEl = function (t, e, n, i) {
            if (e.label) {
                var r = PY(t).labelEl = new $k(OY(e.label));
                t.add(r), RS(r, i)
            }
        }, t.prototype.updatePointerEl = function (t, e, n) {
            var i = PY(t).pointerEl;
            i && e.pointer && (i.setStyle(e.pointer.style), n(i, {shape: e.pointer.shape}))
        }, t.prototype.updateLabelEl = function (t, e, n, i) {
            var r = PY(t).labelEl;
            r && (r.setStyle(e.label.style), n(r, {x: e.label.x, y: e.label.y}), RS(r, i))
        }, t.prototype._renderHandle = function (t) {
            if (!this._dragging && this.updateHandleTransform) {
                var e = this._axisPointerModel, n = this._api.getZr(), i = this._handle, r = e.getModel("handle"),
                    o = e.get("status");
                if (!r.get("show") || !o || "hide" === o) return i && n.remove(i), void (this._handle = null);
                var a;
                this._handle || (a = !0, i = this._handle = Ss(r.get("icon"), {
                    cursor: "move",
                    draggable: !0,
                    onmousemove: function (t) {
                        NA(t.event)
                    },
                    onmousedown: RY(this._onHandleDragMove, this, 0, 0),
                    drift: RY(this._onHandleDragMove, this),
                    ondragend: RY(this._onHandleDragEnd, this)
                }), n.add(i)), ES(i, e, !1), i.setStyle(r.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
                var s = r.get("size");
                M(s) || (s = [s, s]), i.scaleX = s[0] / 2, i.scaleY = s[1] / 2, Oh(this, "_doDispatchAxisPointer", r.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, a)
            }
        }, t.prototype._moveHandleToValue = function (t, e) {
            PS(this._axisPointerModel, !e && this._moveAnimation, this._handle, zS(this.getHandleTransform(t, this._axisModel, this._axisPointerModel)))
        }, t.prototype._onHandleDragMove = function (t, e) {
            var n = this._handle;
            if (n) {
                this._dragging = !0;
                var i = this.updateHandleTransform(zS(n), [t, e], this._axisModel, this._axisPointerModel);
                this._payloadInfo = i, n.stopAnimation(), n.attr(zS(i)), PY(n).lastProp = null, this._doDispatchAxisPointer()
            }
        }, t.prototype._doDispatchAxisPointer = function () {
            var t = this._handle;
            if (t) {
                var e = this._payloadInfo, n = this._axisModel;
                this._api.dispatchAction({
                    type: "updateAxisPointer",
                    x: e.cursorPoint[0],
                    y: e.cursorPoint[1],
                    tooltipOption: e.tooltipOption,
                    axesInfo: [{axisDim: n.axis.dim, axisIndex: n.componentIndex}]
                })
            }
        }, t.prototype._onHandleDragEnd = function () {
            this._dragging = !1;
            var t = this._handle;
            if (t) {
                var e = this._axisPointerModel.get("value");
                this._moveHandleToValue(e), this._api.dispatchAction({type: "hideTip"})
            }
        }, t.prototype.clear = function (t) {
            this._lastValue = null, this._lastStatus = null;
            var e = t.getZr(), n = this._group, i = this._handle;
            e && n && (this._lastGraphicKey = null, n && e.remove(n), i && e.remove(i), this._group = null, this._handle = null, this._payloadInfo = null)
        }, t.prototype.doClear = function () {
        }, t.prototype.buildLabel = function (t, e, n) {
            return n = n || 0, {x: t[n], y: t[1 - n], width: e[n], height: e[1 - n]}
        }, t
    }(), EY = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.makeElOption = function (t, e, n, i, r) {
            var o = n.axis;
            "angle" === o.dim && (this.animationThreshold = Math.PI / 18);
            var a = o.polar, s = a.getOtherAxis(o), l = s.getExtent(), u = o.dataToCoord(e), h = i.get("type");
            if (h && "none" !== h) {
                var c = NS(i), p = NY[h](o, a, u, l);
                p.style = c, t.graphicKey = p.type, t.pointer = p
            }
            var d = i.get(["label", "margin"]), f = ZS(e, n, i, a, d);
            BS(t, n, i, r, f)
        }, n
    }(zY), NY = {
        line: function (t, e, n, i) {
            return "angle" === t.dim ? {
                type: "Line",
                shape: WS(e.coordToPoint([i[0], n]), e.coordToPoint([i[1], n]))
            } : {type: "Circle", shape: {cx: e.cx, cy: e.cy, r: n}}
        }, shadow: function (t, e, n, i) {
            var r = Math.max(1, t.getBandWidth()), o = Math.PI / 180;
            return "angle" === t.dim ? {
                type: "Sector",
                shape: YS(e.cx, e.cy, i[0], i[1], (-n - r / 2) * o, (-n + r / 2) * o)
            } : {type: "Sector", shape: YS(e.cx, e.cy, n - r / 2, n + r / 2, 0, 2 * Math.PI)}
        }
    }, BY = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.makeElOption = function (t, e, n, i, r) {
            var o = n.axis, a = o.grid, s = i.get("type"), l = US(a, o).getOtherAxis(o).getGlobalExtent(),
                u = o.toGlobalCoord(o.dataToCoord(e, !0));
            if (s && "none" !== s) {
                var h = NS(i), c = VY[s](o, u, l);
                c.style = h, t.graphicKey = c.type, t.pointer = c
            }
            var p = qg(a.model, n);
            HS(e, t, p, n, i, r)
        }, n.prototype.getHandleTransform = function (t, e, n) {
            var i = qg(e.axis.grid.model, e, {labelInside: !1});
            i.labelMargin = n.get(["handle", "margin"]);
            var r = GS(e.axis, t, i);
            return {x: r[0], y: r[1], rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)}
        }, n.prototype.updateHandleTransform = function (t, e, n) {
            var i = n.axis, r = i.grid, o = i.getGlobalExtent(!0), a = US(r, i).getOtherAxis(i).getGlobalExtent(),
                s = "x" === i.dim ? 0 : 1, l = [t.x, t.y];
            l[s] += e[s], l[s] = Math.min(o[1], l[s]), l[s] = Math.max(o[0], l[s]);
            var u = (a[1] + a[0]) / 2, h = [u, u];
            h[s] = l[s];
            var c = [{verticalAlign: "middle"}, {align: "center"}];
            return {x: l[0], y: l[1], rotation: t.rotation, cursorPoint: h, tooltipOption: c[s]}
        }, n
    }(zY), VY = {
        line: function (t, e, n) {
            var i = WS([e, n[0]], [e, n[1]], jS(t));
            return {type: "Line", subPixelOptimize: !0, shape: i}
        }, shadow: function (t, e, n) {
            var i = Math.max(1, t.getBandWidth()), r = n[1] - n[0];
            return {type: "Rect", shape: XS([e - i / 2, n[0]], [i, r], jS(t))}
        }
    }, FY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "axisPointer", n.defaultOption = {
            show: "auto",
            zlevel: 0,
            z: 50,
            type: "line",
            snap: !1,
            triggerTooltip: !0,
            value: null,
            status: null,
            link: [],
            animation: null,
            animationDurationUpdate: 200,
            lineStyle: {color: "#B9BEC9", width: 1, type: "dashed"},
            shadowStyle: {color: "rgba(210,219,238,0.2)"},
            label: {
                show: !0,
                formatter: null,
                precision: "auto",
                margin: 3,
                color: "#fff",
                padding: [5, 7, 5, 7],
                backgroundColor: "auto",
                borderColor: null,
                borderWidth: 0,
                borderRadius: 3
            },
            handle: {
                show: !1,
                icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
                size: 45,
                margin: 50,
                color: "#333",
                shadowBlur: 3,
                shadowColor: "#aaa",
                shadowOffsetX: 0,
                shadowOffsetY: 2,
                throttle: 40
            }
        }, n
    }(gR), GY = ur(), HY = y, WY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            var i = e.getComponent("tooltip"), r = t.get("triggerOn") || i && i.get("triggerOn") || "mousemove|click";
            qS("axisPointer", n, function (t, e, n) {
                "none" !== r && ("leave" === t || r.indexOf(t) >= 0) && n({
                    type: "updateAxisPointer",
                    currTrigger: t,
                    x: e && e.offsetX,
                    y: e && e.offsetY
                })
            })
        }, n.prototype.remove = function (t, e) {
            eM("axisPointer", e)
        }, n.prototype.dispose = function (t, e) {
            eM("axisPointer", e)
        }, n.type = "axisPointer", n
    }(Tz), XY = ur(), YY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.findAxisModel = function (t) {
            var e, n = this.ecModel;
            return n.eachComponent(t, function (t) {
                t.getCoordSysModel() === this && (e = t)
            }, this), e
        }, n.type = "polar", n.dependencies = ["radiusAxis", "angleAxis"], n.defaultOption = {
            zlevel: 0,
            z: 0,
            center: ["50%", "50%"],
            radius: "80%"
        }, n
    }(gR), ZY = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.getCoordSysModel = function () {
            return this.getReferringComponents("polar", wL).models[0]
        }, n.type = "polarAxis", n
    }(gR);
    f(ZY, HV);
    var UY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "angleAxis", n
    }(ZY), jY = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "radiusAxis", n
    }(ZY), qY = function (t) {
        function n(e, n) {
            return t.call(this, "radius", e, n) || this
        }

        return e(n, t), n.prototype.pointToData = function (t, e) {
            return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
        }, n
    }(tF);
    qY.prototype.dataToRadius = tF.prototype.dataToCoord, qY.prototype.radiusToData = tF.prototype.coordToData;
    var KY = ur(), $Y = function (t) {
        function n(e, n) {
            return t.call(this, "angle", e, n || [0, 360]) || this
        }

        return e(n, t), n.prototype.pointToData = function (t, e) {
            return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
        }, n.prototype.calculateCategoryInterval = function () {
            var t = this, e = t.getLabelModel(), n = t.scale, i = n.getExtent(), r = n.count();
            if (i[1] - i[0] < 1) return 0;
            var o = i[0], a = t.dataToCoord(o + 1) - t.dataToCoord(o), s = Math.abs(a),
                l = ti(null == o ? "" : o + "", e.getFont(), "center", "top"), u = Math.max(l.height, 7), h = u / s;
            isNaN(h) && (h = 1 / 0);
            var c = Math.max(0, Math.floor(h)), p = KY(t.model), d = p.lastAutoInterval, f = p.lastTickCount;
            return null != d && null != f && Math.abs(d - c) <= 1 && Math.abs(f - r) <= 1 && d > c ? c = d : (p.lastTickCount = r, p.lastAutoInterval = c), c
        }, n
    }(tF);
    $Y.prototype.dataToAngle = tF.prototype.dataToCoord, $Y.prototype.angleToData = tF.prototype.coordToData;
    var JY = function () {
            function t(t) {
                this.dimensions = ["radius", "angle"], this.type = "polar", this.cx = 0, this.cy = 0, this._radiusAxis = new qY, this._angleAxis = new $Y, this.axisPointerEnabled = !0, this.name = t || "", this._radiusAxis.polar = this._angleAxis.polar = this
            }

            return t.prototype.containPoint = function (t) {
                var e = this.pointToCoord(t);
                return this._radiusAxis.contain(e[0]) && this._angleAxis.contain(e[1])
            }, t.prototype.containData = function (t) {
                return this._radiusAxis.containData(t[0]) && this._angleAxis.containData(t[1])
            }, t.prototype.getAxis = function (t) {
                var e = "_" + t + "Axis";
                return this[e]
            }, t.prototype.getAxes = function () {
                return [this._radiusAxis, this._angleAxis]
            }, t.prototype.getAxesByScale = function (t) {
                var e = [], n = this._angleAxis, i = this._radiusAxis;
                return n.scale.type === t && e.push(n), i.scale.type === t && e.push(i), e
            }, t.prototype.getAngleAxis = function () {
                return this._angleAxis
            }, t.prototype.getRadiusAxis = function () {
                return this._radiusAxis
            }, t.prototype.getOtherAxis = function (t) {
                var e = this._angleAxis;
                return t === e ? this._radiusAxis : e
            }, t.prototype.getBaseAxis = function () {
                return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis()
            }, t.prototype.getTooltipAxes = function (t) {
                var e = null != t && "auto" !== t ? this.getAxis(t) : this.getBaseAxis();
                return {baseAxes: [e], otherAxes: [this.getOtherAxis(e)]}
            }, t.prototype.dataToPoint = function (t, e) {
                return this.coordToPoint([this._radiusAxis.dataToRadius(t[0], e), this._angleAxis.dataToAngle(t[1], e)])
            }, t.prototype.pointToData = function (t, e) {
                var n = this.pointToCoord(t);
                return [this._radiusAxis.radiusToData(n[0], e), this._angleAxis.angleToData(n[1], e)]
            }, t.prototype.pointToCoord = function (t) {
                var e = t[0] - this.cx, n = t[1] - this.cy, i = this.getAngleAxis(), r = i.getExtent(),
                    o = Math.min(r[0], r[1]), a = Math.max(r[0], r[1]);
                i.inverse ? o = a - 360 : a = o + 360;
                var s = Math.sqrt(e * e + n * n);
                e /= s, n /= s;
                for (var l = Math.atan2(-n, e) / Math.PI * 180, u = o > l ? 1 : -1; o > l || l > a;) l += 360 * u;
                return [s, l]
            }, t.prototype.coordToPoint = function (t) {
                var e = t[0], n = t[1] / 180 * Math.PI, i = Math.cos(n) * e + this.cx, r = -Math.sin(n) * e + this.cy;
                return [i, r]
            }, t.prototype.getArea = function () {
                var t = this.getAngleAxis(), e = this.getRadiusAxis(), n = e.getExtent().slice();
                n[0] > n[1] && n.reverse();
                var i = t.getExtent(), r = Math.PI / 180;
                return {
                    cx: this.cx,
                    cy: this.cy,
                    r0: n[0],
                    r: n[1],
                    startAngle: -i[0] * r,
                    endAngle: -i[1] * r,
                    clockwise: t.inverse,
                    contain: function (t, e) {
                        var n = t - this.cx, i = e - this.cy, r = n * n + i * i, o = this.r, a = this.r0;
                        return o * o >= r && r >= a * a
                    }
                }
            }, t.prototype.convertToPixel = function (t, e, n) {
                var i = gM(e);
                return i === this ? this.dataToPoint(n) : null
            }, t.prototype.convertFromPixel = function (t, e, n) {
                var i = gM(e);
                return i === this ? this.pointToData(n) : null
            }, t
        }(), QY = {
            dimensions: JY.prototype.dimensions, create: function (t, e) {
                var n = [];
                return t.eachComponent("polar", function (t, i) {
                    var r = new JY(i + "");
                    r.update = vM;
                    var o = r.getRadiusAxis(), a = r.getAngleAxis(), s = t.findAxisModel("radiusAxis"),
                        l = t.findAxisModel("angleAxis");
                    xM(o, s), xM(a, l), yM(r, t, e), n.push(r), t.coordinateSystem = r, r.model = t
                }), t.eachSeries(function (t) {
                    if ("polar" === t.get("coordinateSystem")) {
                        var e = t.getReferringComponents("polar", wL).models[0];
                        t.coordinateSystem = e.coordinateSystem
                    }
                }), n
            }
        }, tZ = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"],
        eZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.axisPointerClass = "PolarAxisPointer", e
            }

            return e(n, t), n.prototype.render = function (t) {
                if (this.group.removeAll(), t.get("show")) {
                    var e = t.axis, n = e.polar, i = n.getRadiusAxis().getExtent(), r = e.getTicksCoords(),
                        o = e.getMinorTicksCoords(), a = v(e.getViewLabels(), function (t) {
                            t = s(t);
                            var n = e.scale, i = "ordinal" === n.type ? n.getRawOrdinalNumber(t.tickValue) : t.tickValue;
                            return t.coord = e.dataToCoord(i), t
                        });
                    wM(a), wM(r), y(tZ, function (s) {
                        !t.get([s, "show"]) || e.scale.isBlank() && "axisLine" !== s || nZ[s](this.group, t, n, r, o, i, a)
                    }, this)
                }
            }, n.type = "angleAxis", n
        }(fG), nZ = {
            axisLine: function (t, e, n, i, r, o) {
                var a, s = e.getModel(["axisLine", "lineStyle"]), l = bM(n), u = l ? 0 : 1;
                a = 0 === o[u] ? new kP({
                    shape: {cx: n.cx, cy: n.cy, r: o[l]},
                    style: s.getLineStyle(),
                    z2: 1,
                    silent: !0
                }) : new jP({
                    shape: {cx: n.cx, cy: n.cy, r: o[l], r0: o[u]},
                    style: s.getLineStyle(),
                    z2: 1,
                    silent: !0
                }), a.style.fill = null, t.add(a)
            }, axisTick: function (t, e, n, i, r, o) {
                var a = e.getModel("axisTick"), s = (a.get("inside") ? -1 : 1) * a.get("length"), l = o[bM(n)],
                    u = v(i, function (t) {
                        return new eO({shape: _M(n, [l, l + s], t.coord)})
                    });
                t.add(wO(u, {style: c(a.getModel("lineStyle").getLineStyle(), {stroke: e.get(["axisLine", "lineStyle", "color"])})}))
            }, minorTick: function (t, e, n, i, r, o) {
                if (r.length) {
                    for (var a = e.getModel("axisTick"), s = e.getModel("minorTick"), l = (a.get("inside") ? -1 : 1) * s.get("length"), u = o[bM(n)], h = [], p = 0; p < r.length; p++) for (var d = 0; d < r[p].length; d++) h.push(new eO({shape: _M(n, [u, u + l], r[p][d].coord)}));
                    t.add(wO(h, {style: c(s.getModel("lineStyle").getLineStyle(), c(a.getLineStyle(), {stroke: e.get(["axisLine", "lineStyle", "color"])}))}))
                }
            }, axisLabel: function (t, e, n, i, r, o, a) {
                var s = e.getCategories(!0), l = e.getModel("axisLabel"), u = l.get("margin"), h = e.get("triggerEvent");
                y(a, function (i) {
                    var r = l, a = i.tickValue, c = o[bM(n)], p = n.coordToPoint([c + u, i.coord]), d = n.cx, f = n.cy,
                        g = Math.abs(p[0] - d) / c < .3 ? "center" : p[0] > d ? "left" : "right",
                        y = Math.abs(p[1] - f) / c < .3 ? "middle" : p[1] > f ? "top" : "bottom";
                    if (s && s[a]) {
                        var v = s[a];
                        D(v) && v.textStyle && (r = new VO(v.textStyle, l, l.ecModel))
                    }
                    var m = new $k({
                        silent: cG.isLabelSilent(e),
                        style: Os(r, {
                            x: p[0],
                            y: p[1],
                            fill: r.getTextColor() || e.get(["axisLine", "lineStyle", "color"]),
                            text: i.formattedLabel,
                            align: g,
                            verticalAlign: y
                        })
                    });
                    if (t.add(m), h) {
                        var x = cG.makeAxisEventDataBase(e);
                        x.targetType = "axisLabel", x.value = i.rawLabel, tP(m).eventData = x
                    }
                }, this)
            }, splitLine: function (t, e, n, i, r, o) {
                var a = e.getModel("splitLine"), s = a.getModel("lineStyle"), l = s.get("color"), u = 0;
                l = l instanceof Array ? l : [l];
                for (var h = [], p = 0; p < i.length; p++) {
                    var d = u++ % l.length;
                    h[d] = h[d] || [], h[d].push(new eO({shape: _M(n, o, i[p].coord)}))
                }
                for (var p = 0; p < h.length; p++) t.add(wO(h[p], {
                    style: c({stroke: l[p % l.length]}, s.getLineStyle()),
                    silent: !0,
                    z: e.get("z")
                }))
            }, minorSplitLine: function (t, e, n, i, r, o) {
                if (r.length) {
                    for (var a = e.getModel("minorSplitLine"), s = a.getModel("lineStyle"), l = [], u = 0; u < r.length; u++) for (var h = 0; h < r[u].length; h++) l.push(new eO({shape: _M(n, o, r[u][h].coord)}));
                    t.add(wO(l, {style: s.getLineStyle(), silent: !0, z: e.get("z")}))
                }
            }, splitArea: function (t, e, n, i, r, o) {
                if (i.length) {
                    var a = e.getModel("splitArea"), s = a.getModel("areaStyle"), l = s.get("color"), u = 0;
                    l = l instanceof Array ? l : [l];
                    for (var h = [], p = Math.PI / 180, d = -i[0].coord * p, f = Math.min(o[0], o[1]), g = Math.max(o[0], o[1]), y = e.get("clockwise"), v = 1, m = i.length; m >= v; v++) {
                        var x = v === m ? i[0].coord : i[v].coord, _ = u++ % l.length;
                        h[_] = h[_] || [], h[_].push(new ZP({
                            shape: {
                                cx: n.cx,
                                cy: n.cy,
                                r0: f,
                                r: g,
                                startAngle: d,
                                endAngle: -x * p,
                                clockwise: y
                            }, silent: !0
                        })), d = -x * p
                    }
                    for (var v = 0; v < h.length; v++) t.add(wO(h[v], {
                        style: c({fill: l[v % l.length]}, s.getAreaStyle()),
                        silent: !0
                    }))
                }
            }
        }, iZ = ["axisLine", "axisTickLabel", "axisName"], rZ = ["splitLine", "splitArea", "minorSplitLine"],
        oZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.axisPointerClass = "PolarAxisPointer", e
            }

            return e(n, t), n.prototype.render = function (t) {
                if (this.group.removeAll(), t.get("show")) {
                    var e = this._axisGroup, n = this._axisGroup = new sL;
                    this.group.add(n);
                    var i = t.axis, r = i.polar, o = r.getAngleAxis(), a = i.getTicksCoords(),
                        s = i.getMinorTicksCoords(), l = o.getExtent()[0], u = i.getExtent(), h = SM(r, t, l),
                        c = new cG(t, h);
                    y(iZ, c.add, c), n.add(c.getGroup()), _s(e, n, t), y(rZ, function (e) {
                        t.get([e, "show"]) && !i.scale.isBlank() && aZ[e](this.group, t, r, l, u, a, s)
                    }, this)
                }
            }, n.type = "radiusAxis", n
        }(fG), aZ = {
            splitLine: function (t, e, n, i, r, o) {
                var a = e.getModel("splitLine"), s = a.getModel("lineStyle"), l = s.get("color"), u = 0;
                l = l instanceof Array ? l : [l];
                for (var h = [], p = 0; p < o.length; p++) {
                    var d = u++ % l.length;
                    h[d] = h[d] || [], h[d].push(new kP({shape: {cx: n.cx, cy: n.cy, r: o[p].coord}}))
                }
                for (var p = 0; p < h.length; p++) t.add(wO(h[p], {
                    style: c({
                        stroke: l[p % l.length],
                        fill: null
                    }, s.getLineStyle()), silent: !0
                }))
            }, minorSplitLine: function (t, e, n, i, r, o, a) {
                if (a.length) {
                    for (var s = e.getModel("minorSplitLine"), l = s.getModel("lineStyle"), u = [], h = 0; h < a.length; h++) for (var p = 0; p < a[h].length; p++) u.push(new kP({
                        shape: {
                            cx: n.cx,
                            cy: n.cy,
                            r: a[h][p].coord
                        }
                    }));
                    t.add(wO(u, {style: c({fill: null}, l.getLineStyle()), silent: !0}))
                }
            }, splitArea: function (t, e, n, i, r, o) {
                if (o.length) {
                    var a = e.getModel("splitArea"), s = a.getModel("areaStyle"), l = s.get("color"), u = 0;
                    l = l instanceof Array ? l : [l];
                    for (var h = [], p = o[0].coord, d = 1; d < o.length; d++) {
                        var f = u++ % l.length;
                        h[f] = h[f] || [], h[f].push(new ZP({
                            shape: {
                                cx: n.cx,
                                cy: n.cy,
                                r0: p,
                                r: o[d].coord,
                                startAngle: 0,
                                endAngle: 2 * Math.PI
                            }, silent: !0
                        })), p = o[d].coord
                    }
                    for (var d = 0; d < h.length; d++) t.add(wO(h[d], {
                        style: c({fill: l[d % l.length]}, s.getAreaStyle()),
                        silent: !0
                    }))
                }
            }
        }, sZ = {startAngle: 90, clockwise: !0, splitNumber: 12, axisLabel: {rotate: 0}}, lZ = {splitNumber: 5},
        uZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "polar", n
        }(Tz);
    df(AM);
    var hZ = {geoJSON: {aspectScale: .75, invertLongitute: !0}, geoSVG: {aspectScale: 1, invertLongitute: !1}},
        cZ = function (t) {
            function n(e, n, i) {
                var r = t.call(this, e) || this;
                r.dimensions = ["lng", "lat"], r.type = "geo", r._nameCoordMap = Z(), r.map = n;
                var o = yN.load(n, i.nameMap, i.nameProperty), a = yN.getGeoResource(n);
                r.resourceType = a ? a.type : null;
                var s = hZ[a.type];
                r._regionsMap = o.regionsMap, r._invertLongitute = s.invertLongitute, r.regions = o.regions, r.aspectScale = B(i.aspectScale, s.aspectScale);
                var l = o.boundingRect;
                return r.setBoundingRect(l.x, l.y, l.width, l.height), r
            }

            return e(n, t), n.prototype._transformTo = function (t, e, n, i) {
                var r = this.getBoundingRect(), o = this._invertLongitute;
                r = r.clone(), o && (r.y = -r.y - r.height);
                var a = this._rawTransformable;
                a.transform = r.calculateTransform(new $D(t, e, n, i));
                var s = a.parent;
                a.parent = null, a.decomposeTransform(), a.parent = s, o && (a.scaleY = -a.scaleY), this._updateTransform()
            }, n.prototype.getRegion = function (t) {
                return this._regionsMap.get(t)
            }, n.prototype.getRegionByCoord = function (t) {
                for (var e = this.regions, n = 0; n < e.length; n++) {
                    var i = e[n];
                    if ("geoJSON" === i.type && i.contain(t)) return e[n]
                }
            }, n.prototype.addGeoCoord = function (t, e) {
                this._nameCoordMap.set(t, e)
            }, n.prototype.getGeoCoord = function (t) {
                var e = this._regionsMap.get(t);
                return this._nameCoordMap.get(t) || e && e.getCenter()
            }, n.prototype.dataToPoint = function (t, e, n) {
                return "string" == typeof t && (t = this.getGeoCoord(t)), t ? nH.prototype.dataToPoint.call(this, t, e, n) : void 0
            }, n.prototype.convertToPixel = function (t, e, n) {
                var i = DM(e);
                return i === this ? i.dataToPoint(n) : null
            }, n.prototype.convertFromPixel = function (t, e, n) {
                var i = DM(e);
                return i === this ? i.pointToData(n) : null
            }, n
        }(nH);
    f(cZ, nH);
    var pZ = function () {
            function t() {
                this.dimensions = cZ.prototype.dimensions
            }

            return t.prototype.create = function (t, e) {
                var n = [];
                t.eachComponent("geo", function (t, i) {
                    var r = t.get("map"), o = new cZ(r + i, r, {
                        nameMap: t.get("nameMap"),
                        nameProperty: t.get("nameProperty"),
                        aspectScale: t.get("aspectScale")
                    });
                    o.zoomLimit = t.get("scaleLimit"), n.push(o), t.coordinateSystem = o, o.model = t, o.resize = LM, o.resize(t, e)
                }), t.eachSeries(function (t) {
                    var e = t.get("coordinateSystem");
                    if ("geo" === e) {
                        var i = t.get("geoIndex") || 0;
                        t.coordinateSystem = n[i]
                    }
                });
                var i = {};
                return t.eachSeriesByType("map", function (t) {
                    if (!t.getHostGeoModel()) {
                        var e = t.getMapType();
                        i[e] = i[e] || [], i[e].push(t)
                    }
                }), y(i, function (t, i) {
                    var r = v(t, function (t) {
                        return t.get("nameMap")
                    }), o = new cZ(i, i, {
                        nameMap: u(r),
                        nameProperty: t[0].get("nameProperty"),
                        aspectScale: t[0].get("aspectScale")
                    });
                    o.zoomLimit = N.apply(null, v(t, function (t) {
                        return t.get("scaleLimit")
                    })), n.push(o), o.resize = LM, o.resize(t[0], e), y(t, function (t) {
                        t.coordinateSystem = o, kM(o, t)
                    })
                }), n
            }, t.prototype.getFilledRegions = function (t, e, n, i) {
                for (var r = (t || []).slice(), o = Z(), a = 0; a < r.length; a++) o.set(r[a].name, r[a]);
                var s = yN.load(e, n, i);
                return y(s.regions, function (t) {
                    var e = t.name;
                    !o.get(e) && r.push({name: e})
                }), r
            }, t
        }(), dZ = new pZ, fZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.init = function (t, e, n) {
                var i = yN.getGeoResource(t.map);
                if (i && "geoJSON" === i.type) {
                    var r = t.itemStyle = t.itemStyle || {};
                    "color" in r || (r.color = "#eee")
                }
                this.mergeDefaultAndTheme(t, n), Wi(t, "label", ["show"])
            }, n.prototype.optionUpdated = function () {
                var t = this, e = this.option;
                e.regions = dZ.getFilledRegions(e.regions, e.map, e.nameMap, e.nameProperty);
                var n = {};
                this._optionModelMap = m(e.regions || [], function (e, i) {
                    var r = i.name;
                    return r && (e.set(r, new VO(i, t, t.ecModel)), i.selected && (n[r] = !0)), e
                }, Z()), e.selectedMap || (e.selectedMap = n)
            }, n.prototype.getRegionModel = function (t) {
                return this._optionModelMap.get(t) || new VO(null, this, this.ecModel)
            }, n.prototype.getFormattedLabel = function (t, e) {
                var n = this.getRegionModel(t),
                    i = n.get("normal" === e ? ["label", "formatter"] : ["emphasis", "label", "formatter"]), r = {name: t};
                return "function" == typeof i ? (r.status = e, i(r)) : "string" == typeof i ? i.replace("{a}", null != t ? t : "") : void 0
            }, n.prototype.setZoom = function (t) {
                this.option.zoom = t
            }, n.prototype.setCenter = function (t) {
                this.option.center = t
            }, n.prototype.select = function (t) {
                var e = this.option, n = e.selectedMode;
                if (n) {
                    "multiple" !== n && (e.selectedMap = null);
                    var i = e.selectedMap || (e.selectedMap = {});
                    i[t] = !0
                }
            }, n.prototype.unSelect = function (t) {
                var e = this.option.selectedMap;
                e && (e[t] = !1)
            }, n.prototype.toggleSelected = function (t) {
                this[this.isSelected(t) ? "unSelect" : "select"](t)
            }, n.prototype.isSelected = function (t) {
                var e = this.option.selectedMap;
                return !(!e || !e[t])
            }, n.type = "geo", n.layoutMode = "box", n.defaultOption = {
                zlevel: 0,
                z: 0,
                show: !0,
                left: "center",
                top: "center",
                aspectScale: null,
                silent: !1,
                map: "",
                boundingCoords: null,
                center: null,
                zoom: 1,
                scaleLimit: null,
                label: {show: !1, color: "#000"},
                itemStyle: {borderWidth: .5, borderColor: "#444"},
                emphasis: {label: {show: !0, color: "rgb(100,0,0)"}, itemStyle: {color: "rgba(255,215,0,0.8)"}},
                select: {label: {show: !0, color: "rgb(100,0,0)"}, itemStyle: {color: "rgba(255,215,0,0.8)"}},
                regions: []
            }, n
        }(gR), gZ = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"], yZ = Z(gZ),
        vZ = Z(gZ.concat(["g"])), mZ = Z(gZ.concat(["g"])), xZ = ur(), _Z = function () {
            function t(t) {
                var e = new sL;
                this.uid = Gs("ec_map_draw"), this._controller = new rH(t.getZr()), this._controllerHost = {target: e}, this.group = e, e.add(this._regionsGroup = new sL), e.add(this._svgGroup = new sL)
            }

            return t.prototype.draw = function (t, e, n, i, r) {
                var o = "geo" === t.mainType, a = t.getData && t.getData();
                o && e.eachComponent({mainType: "series", subType: "map"}, function (e) {
                    a || e.getHostGeoModel() !== t || (a = e.getData())
                });
                var s = t.coordinateSystem, l = this._regionsGroup, u = this.group, h = s.getTransformInfo(), c = h.raw,
                    p = h.roam, d = !l.childAt(0) || r;
                d ? (u.x = p.x, u.y = p.y, u.scaleX = p.scaleX, u.scaleY = p.scaleY, u.dirty()) : us(u, p, t);
                var f = a && a.getVisual("visualMeta") && a.getVisual("visualMeta").length > 0, g = {
                    api: n,
                    geo: s,
                    mapOrGeoModel: t,
                    data: a,
                    isVisualEncodedByVisualMap: f,
                    isGeo: o,
                    transformInfoRaw: c
                };
                "geoJSON" === s.resourceType ? this._buildGeoJSON(g) : "geoSVG" === s.resourceType && this._buildSVG(g), this._updateController(t, e, n), this._updateMapSelectHandler(t, l, n, i)
            }, t.prototype._buildGeoJSON = function (t) {
                var e = this._regionsGroupByName = Z(), n = Z(), i = this._regionsGroup, r = t.transformInfoRaw,
                    o = t.mapOrGeoModel, a = t.data, s = function (t) {
                        return [t[0] * r.scaleX + r.x, t[1] * r.scaleY + r.y]
                    };
                i.removeAll(), y(t.geo.regions, function (r) {
                    var l = r.name, u = e.get(l), h = n.get(l) || {}, c = h.dataIdx, p = h.regionModel;
                    u || (u = e.set(l, new sL), i.add(u), c = a ? a.indexOfName(l) : null, p = t.isGeo ? o.getRegionModel(l) : a ? a.getItemModel(c) : null, n.set(l, {
                        dataIdx: c,
                        regionModel: p
                    }));
                    var d = new sO({segmentIgnoreThreshold: 1, shape: {paths: []}});
                    u.add(d), y(r.geometries, function (t) {
                        if ("polygon" === t.type) {
                            for (var e = [], n = 0; n < t.exterior.length; ++n) e.push(s(t.exterior[n]));
                            d.shape.paths.push(new KP({segmentIgnoreThreshold: 1, shape: {points: e}}));
                            for (var n = 0; n < (t.interiors ? t.interiors.length : 0); ++n) {
                                for (var i = t.interiors[n], r = [], o = 0; o < i.length; ++o) r.push(s(i[o]));
                                d.shape.paths.push(new KP({segmentIgnoreThreshold: 1, shape: {points: r}}))
                            }
                        }
                    }), OM(t, d, c, p), d instanceof HL && (d.culling = !0);
                    var f = s(r.getCenter());
                    RM(t, d, l, p, o, c, f)
                }), e.each(function (e, i) {
                    var r = n.get(i), a = r.dataIdx, s = r.regionModel;
                    zM(t, e, i, s, o, a), EM(t, e, i, s, o), NM(t, e, i, s, o)
                }, this)
            }, t.prototype._buildSVG = function (t) {
                var e = t.geo.map, n = t.transformInfoRaw;
                this._svgGroup.x = n.x, this._svgGroup.y = n.y, this._svgGroup.scaleX = n.scaleX, this._svgGroup.scaleY = n.scaleY, this._svgResourceChanged(e) && (this._freeSVG(), this._useSVG(e));
                var i = this._svgDispatcherMap = Z(), r = !1;
                y(this._svgGraphicRecord.named, function (e) {
                    var n = e.name, o = t.mapOrGeoModel, a = t.data, s = e.svgNodeTagLower, l = e.el,
                        u = a ? a.indexOfName(n) : null, h = o.getRegionModel(n);
                    if (null != yZ.get(s) && l instanceof HL && OM(t, l, u, h), l instanceof HL && (l.culling = !0), l.z2EmphasisLift = 0, !e.namedFrom && (null != mZ.get(s) && RM(t, l, n, h, o, u, null), zM(t, l, n, h, o, u), EM(t, l, n, h, o), null != vZ.get(s))) {
                        var c = NM(t, l, n, h, o);
                        "self" === c && (r = !0);
                        var p = i.get(n) || i.set(n, []);
                        p.push(l)
                    }
                }, this), this._enableBlurEntireSVG(r, t)
            }, t.prototype._enableBlurEntireSVG = function (t, e) {
                if (t && e.isGeo) {
                    var n = e.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(), i = n.opacity;
                    this._svgGraphicRecord.root.traverse(function (t) {
                        if (!t.isGroup) {
                            ia(t);
                            var e = t.ensureState("blur").style || {};
                            null == e.opacity && null != i && (e.opacity = i), t.ensureState("emphasis")
                        }
                    })
                }
            }, t.prototype.remove = function () {
                this._regionsGroup.removeAll(), this._regionsGroupByName = null, this._svgGroup.removeAll(), this._freeSVG(), this._controller.dispose(), this._controllerHost = null
            }, t.prototype.findHighDownDispatchers = function (t, e) {
                if (null == t) return [];
                var n = e.coordinateSystem;
                if ("geoJSON" === n.resourceType) {
                    var i = this._regionsGroupByName;
                    if (i) {
                        var r = i.get(t);
                        return r ? [r] : []
                    }
                } else if ("geoSVG" === n.resourceType) return this._svgDispatcherMap && this._svgDispatcherMap.get(t) || []
            }, t.prototype._svgResourceChanged = function (t) {
                return this._svgMapName !== t
            }, t.prototype._useSVG = function (t) {
                var e = yN.getGeoResource(t);
                if (e && "geoSVG" === e.type) {
                    var n = e.useGraphic(this.uid);
                    this._svgGroup.add(n.root), this._svgGraphicRecord = n, this._svgMapName = t
                }
            }, t.prototype._freeSVG = function () {
                var t = this._svgMapName;
                if (null != t) {
                    var e = yN.getGeoResource(t);
                    e && "geoSVG" === e.type && e.freeGraphic(this.uid), this._svgGraphicRecord = null, this._svgDispatcherMap = null, this._svgGroup.removeAll(), this._svgMapName = null
                }
            }, t.prototype._updateController = function (t, e, n) {
                function i() {
                    var e = {type: "geoRoam", componentType: s};
                    return e[s + "Id"] = t.id, e
                }

                var r = t.coordinateSystem, o = this._controller, a = this._controllerHost;
                a.zoomLimit = t.get("scaleLimit"), a.zoom = r.getZoom(), o.enable(t.get("roam") || !1);
                var s = t.mainType;
                o.off("pan").on("pan", function (t) {
                    this._mouseDownFlag = !1, cv(a, t.dx, t.dy), n.dispatchAction(h(i(), {dx: t.dx, dy: t.dy}))
                }, this), o.off("zoom").on("zoom", function (t) {
                    this._mouseDownFlag = !1, pv(a, t.scale, t.originX, t.originY), n.dispatchAction(h(i(), {
                        zoom: t.scale,
                        originX: t.originX,
                        originY: t.originY
                    }))
                }, this), o.setPointerChecker(function (e, i, o) {
                    return r.containPoint([i, o]) && !_v(e, n, t)
                })
            }, t.prototype.resetForLabelLayout = function () {
                this.group.traverse(function (t) {
                    var e = t.getTextContent();
                    e && (e.ignore = xZ(e).ignore)
                })
            }, t.prototype._updateMapSelectHandler = function (t, e) {
                var n = this;
                e.off("mousedown"), e.off("click"), t.get("selectedMode") && (e.on("mousedown", function () {
                    n._mouseDownFlag = !0
                }), e.on("click", function () {
                    n._mouseDownFlag && (n._mouseDownFlag = !1)
                }))
            }, t
        }(), bZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.focusBlurEnabled = !0, e
            }

            return e(n, t), n.prototype.init = function (t, e) {
                var n = new _Z(e);
                this._mapDraw = n, this.group.add(n.group), this._api = e
            }, n.prototype.render = function (t, e, n, i) {
                var r = this._mapDraw;
                t.get("show") ? r.draw(t, e, n, this, i) : this._mapDraw.group.removeAll(), r.group.on("click", this._handleRegionClick, this), r.group.silent = t.get("silent"), this._model = t, this.updateSelectStatus(t, e, n)
            }, n.prototype._handleRegionClick = function (t) {
                var e;
                bc(t.target, function (t) {
                    return null != (e = tP(t).eventData)
                }, !0), e && this._api.dispatchAction({type: "geoToggleSelect", geoId: this._model.id, name: e.name})
            }, n.prototype.updateSelectStatus = function (t, e, n) {
                var i = this;
                this._mapDraw.group.traverse(function (t) {
                    var e = tP(t).eventData;
                    return e ? (i._model.isSelected(e.name) ? n.enterSelect(t) : n.leaveSelect(t), !0) : void 0
                })
            }, n.prototype.findHighDownDispatchers = function (t) {
                return this._mapDraw && this._mapDraw.findHighDownDispatchers(t, this._model)
            }, n.prototype.dispose = function () {
                this._mapDraw && this._mapDraw.remove()
            }, n.type = "geo", n
        }(Tz);
    df(BM);
    var wZ = ["axisLine", "axisTickLabel", "axisName"], SZ = ["splitArea", "splitLine"], MZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.axisPointerClass = "SingleAxisPointer", e
        }

        return e(n, t), n.prototype.render = function (e, n, i, r) {
            var o = this.group;
            o.removeAll();
            var a = this._axisGroup;
            this._axisGroup = new sL;
            var s = VM(e), l = new cG(e, s);
            y(wZ, l.add, l), o.add(this._axisGroup), o.add(l.getGroup()), y(SZ, function (t) {
                e.get([t, "show"]) && IZ[t](this, this.group, this._axisGroup, e)
            }, this), _s(a, this._axisGroup, e), t.prototype.render.call(this, e, n, i, r)
        }, n.prototype.remove = function () {
            Sy(this)
        }, n.type = "singleAxis", n
    }(fG), IZ = {
        splitLine: function (t, e, n, i) {
            var r = i.axis;
            if (!r.scale.isBlank()) {
                var o = i.getModel("splitLine"), a = o.getModel("lineStyle"), s = a.get("color");
                s = s instanceof Array ? s : [s];
                for (var l = i.coordinateSystem.getRect(), u = r.isHorizontal(), h = [], p = 0, d = r.getTicksCoords({tickModel: o}), f = [], g = [], y = 0; y < d.length; ++y) {
                    var v = r.toGlobalCoord(d[y].coord);
                    u ? (f[0] = v, f[1] = l.y, g[0] = v, g[1] = l.y + l.height) : (f[0] = l.x, f[1] = v, g[0] = l.x + l.width, g[1] = v);
                    var m = p++ % s.length;
                    h[m] = h[m] || [], h[m].push(new eO({
                        subPixelOptimize: !0,
                        shape: {x1: f[0], y1: f[1], x2: g[0], y2: g[1]},
                        silent: !0
                    }))
                }
                for (var x = a.getLineStyle(["color"]), y = 0; y < h.length; ++y) e.add(wO(h[y], {
                    style: c({stroke: s[y % s.length]}, x),
                    silent: !0
                }))
            }
        }, splitArea: function (t, e, n, i) {
            wy(t, n, i, i)
        }
    }, TZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.getCoordSysModel = function () {
            return this
        }, n.type = "singleAxis", n.layoutMode = "box", n.defaultOption = {
            left: "5%",
            top: "5%",
            right: "5%",
            bottom: "5%",
            type: "value",
            position: "bottom",
            orient: "horizontal",
            axisLine: {show: !0, lineStyle: {width: 1, type: "solid"}},
            tooltip: {show: !0},
            axisTick: {show: !0, length: 6, lineStyle: {width: 1}},
            axisLabel: {show: !0, interval: "auto"},
            splitLine: {show: !0, lineStyle: {type: "dashed", opacity: .2}}
        }, n
    }(gR);
    f(TZ, HV.prototype);
    var CZ = function (t) {
            function n(e, n, i, r, o) {
                var a = t.call(this, e, n, i) || this;
                return a.type = r || "value", a.position = o || "bottom", a
            }

            return e(n, t), n.prototype.isHorizontal = function () {
                var t = this.position;
                return "top" === t || "bottom" === t
            }, n.prototype.pointToData = function (t) {
                return this.coordinateSystem.pointToData(t)[0]
            }, n
        }(tF), AZ = function () {
            function t(t, e, n) {
                this.type = "single", this.dimension = "single", this.dimensions = ["single"], this.axisPointerEnabled = !0, this.model = t, this._init(t, e, n)
            }

            return t.prototype._init = function (t) {
                var e = this.dimension, n = new CZ(e, Jd(t), [0, 0], t.get("type"), t.get("position")),
                    i = "category" === n.type;
                n.onBand = i && t.get("boundaryGap"), n.inverse = t.get("inverse"), n.orient = t.get("orient"), t.axis = n, n.model = t, n.coordinateSystem = this, this._axis = n
            }, t.prototype.update = function (t) {
                t.eachSeries(function (t) {
                    if (t.coordinateSystem === this) {
                        var e = t.getData();
                        y(e.mapDimensionsAll(this.dimension), function (t) {
                            this._axis.scale.unionExtentFromData(e, t)
                        }, this), $d(this._axis.scale, this._axis.model)
                    }
                }, this)
            }, t.prototype.resize = function (t, e) {
                this._rect = kl({
                    left: t.get("left"),
                    top: t.get("top"),
                    right: t.get("right"),
                    bottom: t.get("bottom"),
                    width: t.get("width"),
                    height: t.get("height")
                }, {width: e.getWidth(), height: e.getHeight()}), this._adjustAxis()
            }, t.prototype.getRect = function () {
                return this._rect
            }, t.prototype._adjustAxis = function () {
                var t = this._rect, e = this._axis, n = e.isHorizontal(), i = n ? [0, t.width] : [0, t.height],
                    r = e.reverse ? 1 : 0;
                e.setExtent(i[r], i[1 - r]), this._updateAxisTransform(e, n ? t.x : t.y)
            }, t.prototype._updateAxisTransform = function (t, e) {
                var n = t.getExtent(), i = n[0] + n[1], r = t.isHorizontal();
                t.toGlobalCoord = r ? function (t) {
                    return t + e
                } : function (t) {
                    return i - t + e
                }, t.toLocalCoord = r ? function (t) {
                    return t - e
                } : function (t) {
                    return i - t + e
                }
            }, t.prototype.getAxis = function () {
                return this._axis
            }, t.prototype.getBaseAxis = function () {
                return this._axis
            }, t.prototype.getAxes = function () {
                return [this._axis]
            }, t.prototype.getTooltipAxes = function () {
                return {baseAxes: [this.getAxis()], otherAxes: []}
            }, t.prototype.containPoint = function (t) {
                var e = this.getRect(), n = this.getAxis(), i = n.orient;
                return "horizontal" === i ? n.contain(n.toLocalCoord(t[0])) && t[1] >= e.y && t[1] <= e.y + e.height : n.contain(n.toLocalCoord(t[1])) && t[0] >= e.y && t[0] <= e.y + e.height
            }, t.prototype.pointToData = function (t) {
                var e = this.getAxis();
                return [e.coordToData(e.toLocalCoord(t["horizontal" === e.orient ? 0 : 1]))]
            }, t.prototype.dataToPoint = function (t) {
                var e = this.getAxis(), n = this.getRect(), i = [], r = "horizontal" === e.orient ? 0 : 1;
                return t instanceof Array && (t = t[0]), i[r] = e.toGlobalCoord(e.dataToCoord(+t)), i[1 - r] = 0 === r ? n.y + n.height / 2 : n.x + n.width / 2, i
            }, t.prototype.convertToPixel = function (t, e, n) {
                var i = FM(e);
                return i === this ? this.dataToPoint(n) : null
            }, t.prototype.convertFromPixel = function (t, e, n) {
                var i = FM(e);
                return i === this ? this.pointToData(n) : null
            }, t
        }(), DZ = {create: GM, dimensions: AZ.prototype.dimensions}, LZ = ["x", "y"], kZ = ["width", "height"],
        PZ = function (t) {
            function n() {
                return null !== t && t.apply(this, arguments) || this
            }

            return e(n, t), n.prototype.makeElOption = function (t, e, n, i, r) {
                var o = n.axis, a = o.coordinateSystem, s = WM(a, 1 - HM(o)), l = a.dataToPoint(e)[0],
                    u = i.get("type");
                if (u && "none" !== u) {
                    var h = NS(i), c = OZ[u](o, l, s);
                    c.style = h, t.graphicKey = c.type, t.pointer = c
                }
                var p = VM(n);
                HS(e, t, p, n, i, r)
            }, n.prototype.getHandleTransform = function (t, e, n) {
                var i = VM(e, {labelInside: !1});
                i.labelMargin = n.get(["handle", "margin"]);
                var r = GS(e.axis, t, i);
                return {x: r[0], y: r[1], rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)}
            }, n.prototype.updateHandleTransform = function (t, e, n) {
                var i = n.axis, r = i.coordinateSystem, o = HM(i), a = WM(r, o), s = [t.x, t.y];
                s[o] += e[o], s[o] = Math.min(a[1], s[o]), s[o] = Math.max(a[0], s[o]);
                var l = WM(r, 1 - o), u = (l[1] + l[0]) / 2, h = [u, u];
                return h[o] = s[o], {
                    x: s[0],
                    y: s[1],
                    rotation: t.rotation,
                    cursorPoint: h,
                    tooltipOption: {verticalAlign: "middle"}
                }
            }, n
        }(zY), OZ = {
            line: function (t, e, n) {
                var i = WS([e, n[0]], [e, n[1]], HM(t));
                return {type: "Line", subPixelOptimize: !0, shape: i}
            }, shadow: function (t, e, n) {
                var i = t.getBandWidth(), r = n[1] - n[0];
                return {type: "Rect", shape: XS([e - i / 2, n[0]], [i, r], HM(t))}
            }
        }, RZ = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "single", n
        }(Tz);
    df(XM);
    var zZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function (e) {
            var n = El(e);
            t.prototype.init.apply(this, arguments), YM(e, n)
        }, n.prototype.mergeOption = function (e) {
            t.prototype.mergeOption.apply(this, arguments), YM(this.option, e)
        }, n.prototype.getCellSize = function () {
            return this.option.cellSize
        }, n.type = "calendar", n.defaultOption = {
            zlevel: 0,
            z: 2,
            left: 80,
            top: 60,
            cellSize: 20,
            orient: "horizontal",
            splitLine: {show: !0, lineStyle: {color: "#000", width: 1, type: "solid"}},
            itemStyle: {color: "#fff", borderWidth: 1, borderColor: "#ccc"},
            dayLabel: {show: !0, firstDay: 0, position: "start", margin: "50%", nameMap: "en", color: "#000"},
            monthLabel: {
                show: !0,
                position: "start",
                margin: 5,
                align: "center",
                nameMap: "en",
                formatter: null,
                color: "#000"
            },
            yearLabel: {
                show: !0,
                position: null,
                margin: 30,
                formatter: null,
                color: "#ccc",
                fontFamily: "sans-serif",
                fontWeight: "bolder",
                fontSize: 20
            }
        }, n
    }(gR), EZ = {
        EN: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        CN: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
    }, NZ = {EN: ["S", "M", "T", "W", "T", "F", "S"], CN: ["日", "一", "二", "三", "四", "五", "六"]}, BZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t) {
            var e = this.group;
            e.removeAll();
            var n = t.coordinateSystem, i = n.getRangeInfo(), r = n.getOrient();
            this._renderDayRect(t, i, e), this._renderLines(t, i, r, e), this._renderYearText(t, i, r, e), this._renderMonthText(t, r, e), this._renderWeekText(t, i, r, e)
        }, n.prototype._renderDayRect = function (t, e, n) {
            for (var i = t.coordinateSystem, r = t.getModel("itemStyle").getItemStyle(), o = i.getCellWidth(), a = i.getCellHeight(), s = e.start.time; s <= e.end.time; s = i.getNextNDay(s, 1).time) {
                var l = i.dataToRect([s], !1).tl,
                    u = new Uk({shape: {x: l[0], y: l[1], width: o, height: a}, cursor: "default", style: r});
                n.add(u)
            }
        }, n.prototype._renderLines = function (t, e, n, i) {
            function r(e) {
                o._firstDayOfMonth.push(a.getDateInfo(e)), o._firstDayPoints.push(a.dataToRect([e], !1).tl);
                var r = o._getLinePointsOfOneWeek(t, e, n);
                o._tlpoints.push(r[0]), o._blpoints.push(r[r.length - 1]), l && o._drawSplitline(r, s, i)
            }

            var o = this, a = t.coordinateSystem, s = t.getModel(["splitLine", "lineStyle"]).getLineStyle(),
                l = t.get(["splitLine", "show"]), u = s.lineWidth;
            this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = [];
            for (var h = e.start, c = 0; h.time <= e.end.time; c++) {
                r(h.formatedDate), 0 === c && (h = a.getDateInfo(e.start.y + "-" + e.start.m));
                var p = h.date;
                p.setMonth(p.getMonth() + 1), h = a.getDateInfo(p)
            }
            r(a.getNextNDay(e.end.time, 1).formatedDate), l && this._drawSplitline(o._getEdgesPoints(o._tlpoints, u, n), s, i), l && this._drawSplitline(o._getEdgesPoints(o._blpoints, u, n), s, i)
        }, n.prototype._getEdgesPoints = function (t, e, n) {
            var i = [t[0].slice(), t[t.length - 1].slice()], r = "horizontal" === n ? 0 : 1;
            return i[0][r] = i[0][r] - e / 2, i[1][r] = i[1][r] + e / 2, i
        }, n.prototype._drawSplitline = function (t, e, n) {
            var i = new JP({z2: 20, shape: {points: t}, style: e});
            n.add(i)
        }, n.prototype._getLinePointsOfOneWeek = function (t, e, n) {
            for (var i = t.coordinateSystem, r = i.getDateInfo(e), o = [], a = 0; 7 > a; a++) {
                var s = i.getNextNDay(r.time, a), l = i.dataToRect([s.time], !1);
                o[2 * s.day] = l.tl, o[2 * s.day + 1] = l["horizontal" === n ? "bl" : "tr"]
            }
            return o
        }, n.prototype._formatterLabel = function (t, e) {
            return "string" == typeof t && t ? Sl(t, e) : "function" == typeof t ? t(e) : e.nameMap
        }, n.prototype._yearTextPositionControl = function (t, e, n, i, r) {
            var o = e[0], a = e[1], s = ["center", "bottom"];
            "bottom" === i ? (a += r, s = ["center", "top"]) : "left" === i ? o -= r : "right" === i ? (o += r, s = ["center", "top"]) : a -= r;
            var l = 0;
            return ("left" === i || "right" === i) && (l = Math.PI / 2), {
                rotation: l,
                x: o,
                y: a,
                style: {align: s[0], verticalAlign: s[1]}
            }
        }, n.prototype._renderYearText = function (t, e, n, i) {
            var r = t.getModel("yearLabel");
            if (r.get("show")) {
                var o = r.get("margin"), a = r.get("position");
                a || (a = "horizontal" !== n ? "top" : "left");
                var s = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]], l = (s[0][0] + s[1][0]) / 2,
                    u = (s[0][1] + s[1][1]) / 2, h = "horizontal" === n ? 0 : 1,
                    c = {top: [l, s[h][1]], bottom: [l, s[1 - h][1]], left: [s[1 - h][0], u], right: [s[h][0], u]},
                    p = e.start.y;
                +e.end.y > +e.start.y && (p = p + "-" + e.end.y);
                var d = r.get("formatter"), f = {start: e.start.y, end: e.end.y, nameMap: p},
                    g = this._formatterLabel(d, f), y = new $k({z2: 30, style: Os(r, {text: g})});
                y.attr(this._yearTextPositionControl(y, c[a], n, a, o)), i.add(y)
            }
        }, n.prototype._monthTextPositionControl = function (t, e, n, i, r) {
            var o = "left", a = "top", s = t[0], l = t[1];
            return "horizontal" === n ? (l += r, e && (o = "center"), "start" === i && (a = "bottom")) : (s += r, e && (a = "middle"), "start" === i && (o = "right")), {
                x: s,
                y: l,
                align: o,
                verticalAlign: a
            }
        }, n.prototype._renderMonthText = function (t, e, n) {
            var i = t.getModel("monthLabel");
            if (i.get("show")) {
                var r = i.get("nameMap"), o = i.get("margin"), a = i.get("position"), s = i.get("align"),
                    l = [this._tlpoints, this._blpoints];
                T(r) && (r = EZ[r.toUpperCase()] || []);
                var u = "start" === a ? 0 : 1, c = "horizontal" === e ? 0 : 1;
                o = "start" === a ? -o : o;
                for (var p = "center" === s, d = 0; d < l[u].length - 1; d++) {
                    var f = l[u][d].slice(), g = this._firstDayOfMonth[d];
                    if (p) {
                        var y = this._firstDayPoints[d];
                        f[c] = (y[c] + l[0][d + 1][c]) / 2
                    }
                    var v = i.get("formatter"), m = r[+g.m - 1],
                        x = {yyyy: g.y, yy: (g.y + "").slice(2), MM: g.m, M: +g.m, nameMap: m},
                        _ = this._formatterLabel(v, x),
                        b = new $k({z2: 30, style: h(Os(i, {text: _}), this._monthTextPositionControl(f, p, e, a, o))});
                    n.add(b)
                }
            }
        }, n.prototype._weekTextPositionControl = function (t, e, n, i, r) {
            var o = "center", a = "middle", s = t[0], l = t[1], u = "start" === n;
            return "horizontal" === e ? (s = s + i + (u ? 1 : -1) * r[0] / 2, o = u ? "right" : "left") : (l = l + i + (u ? 1 : -1) * r[1] / 2, a = u ? "bottom" : "top"), {
                x: s,
                y: l,
                align: o,
                verticalAlign: a
            }
        }, n.prototype._renderWeekText = function (t, e, n, i) {
            var r = t.getModel("dayLabel");
            if (r.get("show")) {
                var o = t.coordinateSystem, a = r.get("position"), s = r.get("nameMap"), l = r.get("margin"),
                    u = o.getFirstDayOfWeek();
                T(s) && (s = NZ[s.toUpperCase()] || []);
                var c = o.getNextNDay(e.end.time, 7 - e.lweek).time, p = [o.getCellWidth(), o.getCellHeight()];
                l = _i(l, Math.min(p[1], p[0])), "start" === a && (c = o.getNextNDay(e.start.time, -(7 + e.fweek)).time, l = -l);
                for (var d = 0; 7 > d; d++) {
                    var f = o.getNextNDay(c, d), g = o.dataToRect([f.time], !1).center, y = d;
                    y = Math.abs((d + u) % 7);
                    var v = new $k({
                        z2: 30,
                        style: h(Os(r, {text: s[y]}), this._weekTextPositionControl(g, n, a, l, p))
                    });
                    i.add(v)
                }
            }
        }, n.type = "calendar", n
    }(Tz), VZ = 864e5, FZ = function () {
        function t(e) {
            this.type = "calendar", this.dimensions = t.dimensions, this.getDimensionsInfo = t.getDimensionsInfo, this._model = e
        }

        return t.getDimensionsInfo = function () {
            return [{name: "time", type: "time"}, "value"]
        }, t.prototype.getRangeInfo = function () {
            return this._rangeInfo
        }, t.prototype.getModel = function () {
            return this._model
        }, t.prototype.getRect = function () {
            return this._rect
        }, t.prototype.getCellWidth = function () {
            return this._sw
        }, t.prototype.getCellHeight = function () {
            return this._sh
        }, t.prototype.getOrient = function () {
            return this._orient
        }, t.prototype.getFirstDayOfWeek = function () {
            return this._firstDayOfWeek
        }, t.prototype.getDateInfo = function (t) {
            t = Li(t);
            var e = t.getFullYear(), n = t.getMonth() + 1, i = 10 > n ? "0" + n : "" + n, r = t.getDate(),
                o = 10 > r ? "0" + r : "" + r, a = t.getDay();
            return a = Math.abs((a + 7 - this.getFirstDayOfWeek()) % 7), {
                y: e + "",
                m: i,
                d: o,
                day: a,
                time: t.getTime(),
                formatedDate: e + "-" + i + "-" + o,
                date: t
            }
        }, t.prototype.getNextNDay = function (t, e) {
            return e = e || 0, 0 === e ? this.getDateInfo(t) : (t = new Date(this.getDateInfo(t).time), t.setDate(t.getDate() + e), this.getDateInfo(t))
        }, t.prototype.update = function (t, e) {
            function n(t, e) {
                return null != t[e] && "auto" !== t[e]
            }

            this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"), this._orient = this._model.get("orient"), this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0, this._rangeInfo = this._getRangeInfo(this._initRangeOption());
            var i = this._rangeInfo.weeks || 1, r = ["width", "height"], o = this._model.getCellSize().slice(),
                a = this._model.getBoxLayoutParams(), s = "horizontal" === this._orient ? [i, 7] : [7, i];
            y([0, 1], function (t) {
                n(o, t) && (a[r[t]] = o[t] * s[t])
            });
            var l = {width: e.getWidth(), height: e.getHeight()}, u = this._rect = kl(a, l);
            y([0, 1], function (t) {
                n(o, t) || (o[t] = u[r[t]] / s[t])
            }), this._sw = o[0], this._sh = o[1]
        }, t.prototype.dataToPoint = function (t, e) {
            M(t) && (t = t[0]), null == e && (e = !0);
            var n = this.getDateInfo(t), i = this._rangeInfo, r = n.formatedDate;
            if (e && !(n.time >= i.start.time && n.time < i.end.time + VZ)) return [0 / 0, 0 / 0];
            var o = n.day, a = this._getRangeInfo([i.start.time, r]).nthWeek;
            return "vertical" === this._orient ? [this._rect.x + o * this._sw + this._sw / 2, this._rect.y + a * this._sh + this._sh / 2] : [this._rect.x + a * this._sw + this._sw / 2, this._rect.y + o * this._sh + this._sh / 2]
        }, t.prototype.pointToData = function (t) {
            var e = this.pointToDate(t);
            return e && e.time
        }, t.prototype.dataToRect = function (t, e) {
            var n = this.dataToPoint(t, e);
            return {
                contentShape: {
                    x: n[0] - (this._sw - this._lineWidth) / 2,
                    y: n[1] - (this._sh - this._lineWidth) / 2,
                    width: this._sw - this._lineWidth,
                    height: this._sh - this._lineWidth
                },
                center: n,
                tl: [n[0] - this._sw / 2, n[1] - this._sh / 2],
                tr: [n[0] + this._sw / 2, n[1] - this._sh / 2],
                br: [n[0] + this._sw / 2, n[1] + this._sh / 2],
                bl: [n[0] - this._sw / 2, n[1] + this._sh / 2]
            }
        }, t.prototype.pointToDate = function (t) {
            var e = Math.floor((t[0] - this._rect.x) / this._sw) + 1,
                n = Math.floor((t[1] - this._rect.y) / this._sh) + 1, i = this._rangeInfo.range;
            return "vertical" === this._orient ? this._getDateByWeeksAndDay(n, e - 1, i) : this._getDateByWeeksAndDay(e, n - 1, i)
        }, t.prototype.convertToPixel = function (t, e, n) {
            var i = ZM(e);
            return i === this ? i.dataToPoint(n) : null
        }, t.prototype.convertFromPixel = function (t, e, n) {
            var i = ZM(e);
            return i === this ? i.pointToData(n) : null
        }, t.prototype.containPoint = function () {
            return console.warn("Not implemented."), !1
        }, t.prototype._initRangeOption = function () {
            var t, e = this._model.get("range");
            if (M(e) && 1 === e.length && (e = e[0]), M(e)) t = e; else {
                var n = e.toString();
                if (/^\d{4}$/.test(n) && (t = [n + "-01-01", n + "-12-31"]), /^\d{4}[\/|-]\d{1,2}$/.test(n)) {
                    var i = this.getDateInfo(n), r = i.date;
                    r.setMonth(r.getMonth() + 1);
                    var o = this.getNextNDay(r, -1);
                    t = [i.formatedDate, o.formatedDate]
                }
                /^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(n) && (t = [n, n])
            }
            if (!t) return e;
            var a = this._getRangeInfo(t);
            return a.start.time > a.end.time && t.reverse(), t
        }, t.prototype._getRangeInfo = function (t) {
            var e, n = [this.getDateInfo(t[0]), this.getDateInfo(t[1])];
            n[0].time > n[1].time && (e = !0, n.reverse());
            var i = Math.floor(n[1].time / VZ) - Math.floor(n[0].time / VZ) + 1, r = new Date(n[0].time),
                o = r.getDate(), a = n[1].date.getDate();
            r.setDate(o + i - 1);
            var s = r.getDate();
            if (s !== a) for (var l = r.getTime() - n[1].time > 0 ? 1 : -1; (s = r.getDate()) !== a && (r.getTime() - n[1].time) * l > 0;) i -= l, r.setDate(s - l);
            var u = Math.floor((i + n[0].day + 6) / 7), h = e ? -u + 1 : u - 1;
            return e && n.reverse(), {
                range: [n[0].formatedDate, n[1].formatedDate],
                start: n[0],
                end: n[1],
                allDay: i,
                weeks: u,
                nthWeek: h,
                fweek: n[0].day,
                lweek: n[1].day
            }
        }, t.prototype._getDateByWeeksAndDay = function (t, e, n) {
            var i = this._getRangeInfo(n);
            if (t > i.weeks || 0 === t && e < i.fweek || t === i.weeks && e > i.lweek) return null;
            var r = 7 * (t - 1) - i.fweek + e, o = new Date(i.start.time);
            return o.setDate(+i.start.d + r), this.getDateInfo(o)
        }, t.create = function (e, n) {
            var i = [];
            return e.eachComponent("calendar", function (r) {
                var o = new t(r, e, n);
                i.push(o), r.coordinateSystem = o
            }), e.eachSeries(function (t) {
                "calendar" === t.get("coordinateSystem") && (t.coordinateSystem = i[t.get("calendarIndex") || 0])
            }), i
        }, t.dimensions = ["time", "value"], t
    }();
    df(UM);
    var GZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.layoutMode = {type: "box", ignoreSize: !0}, e
        }

        return e(n, t), n.type = "title", n.defaultOption = {
            zlevel: 0,
            z: 6,
            show: !0,
            text: "",
            target: "blank",
            subtext: "",
            subtarget: "blank",
            left: 0,
            top: 0,
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            textStyle: {fontSize: 18, fontWeight: "bold", color: "#464646"},
            subtextStyle: {fontSize: 12, color: "#6E7079"}
        }, n
    }(gR), HZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.render = function (t, e, n) {
            if (this.group.removeAll(), t.get("show")) {
                var i = this.group, r = t.getModel("textStyle"), o = t.getModel("subtextStyle"), a = t.get("textAlign"),
                    s = B(t.get("textBaseline"), t.get("textVerticalAlign")),
                    l = new $k({style: Os(r, {text: t.get("text"), fill: r.getTextColor()}, {disableBox: !0}), z2: 10}),
                    u = l.getBoundingRect(), h = t.get("subtext"), c = new $k({
                        style: Os(o, {
                            text: h,
                            fill: o.getTextColor(),
                            y: u.height + t.get("itemGap"),
                            verticalAlign: "top"
                        }, {disableBox: !0}), z2: 10
                    }), p = t.get("link"), d = t.get("sublink"), f = t.get("triggerEvent", !0);
                l.silent = !p && !f, c.silent = !d && !f, p && l.on("click", function () {
                    Al(p, "_" + t.get("target"))
                }), d && c.on("click", function () {
                    Al(d, "_" + t.get("subtarget"))
                }), tP(l).eventData = tP(c).eventData = f ? {
                    componentType: "title",
                    componentIndex: t.componentIndex
                } : null, i.add(l), h && i.add(c);
                var g = i.getBoundingRect(), y = t.getBoxLayoutParams();
                y.width = g.width, y.height = g.height;
                var v = kl(y, {width: n.getWidth(), height: n.getHeight()}, t.get("padding"));
                a || (a = t.get("left") || t.get("right"), "middle" === a && (a = "center"), "right" === a ? v.x += v.width : "center" === a && (v.x += v.width / 2)), s || (s = t.get("top") || t.get("bottom"), "center" === s && (s = "middle"), "bottom" === s ? v.y += v.height : "middle" === s && (v.y += v.height / 2), s = s || "top"), i.x = v.x, i.y = v.y, i.markRedraw();
                var m = {align: a, verticalAlign: s};
                l.setStyle(m), c.setStyle(m), g = i.getBoundingRect();
                var x = v.margin, _ = t.getItemStyle(["color", "opacity"]);
                _.fill = t.get("backgroundColor");
                var b = new Uk({
                    shape: {
                        x: g.x - x[3],
                        y: g.y - x[0],
                        width: g.width + x[1] + x[3],
                        height: g.height + x[0] + x[2],
                        r: t.get("borderRadius")
                    }, style: _, subPixelOptimize: !0, silent: !0
                });
                i.add(b)
            }
        }, n.type = "title", n
    }(Tz);
    df(jM);
    var WZ = function (t, e) {
        return "all" === e ? {
            type: "all",
            title: t.getLocale(["legend", "selector", "all"])
        } : "inverse" === e ? {type: "inverse", title: t.getLocale(["legend", "selector", "inverse"])} : void 0
    }, XZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.layoutMode = {type: "box", ignoreSize: !0}, e
        }

        return e(n, t), n.prototype.init = function (t, e, n) {
            this.mergeDefaultAndTheme(t, n), t.selected = t.selected || {}, this._updateSelector(t)
        }, n.prototype.mergeOption = function (e, n) {
            t.prototype.mergeOption.call(this, e, n), this._updateSelector(e)
        }, n.prototype._updateSelector = function (t) {
            var e = t.selector, n = this.ecModel;
            e === !0 && (e = t.selector = ["all", "inverse"]), M(e) && y(e, function (t, i) {
                T(t) && (t = {type: t}), e[i] = l(t, WZ(n, t.type))
            })
        }, n.prototype.optionUpdated = function () {
            this._updateData(this.ecModel);
            var t = this._data;
            if (t[0] && "single" === this.get("selectedMode")) {
                for (var e = !1, n = 0; n < t.length; n++) {
                    var i = t[n].get("name");
                    if (this.isSelected(i)) {
                        this.select(i), e = !0;
                        break
                    }
                }
                !e && this.select(t[0].get("name"))
            }
        }, n.prototype._updateData = function (t) {
            var e = [], n = [];
            t.eachRawSeries(function (i) {
                var r = i.name;
                n.push(r);
                var o;
                if (i.legendVisualProvider) {
                    var a = i.legendVisualProvider, s = a.getAllNames();
                    t.isSeriesFiltered(i) || (n = n.concat(s)), s.length ? e = e.concat(s) : o = !0
                } else o = !0;
                o && nr(i) && e.push(i.name)
            }), this._availableNames = n;
            var i = this.get("data") || e, r = v(i, function (t) {
                return ("string" == typeof t || "number" == typeof t) && (t = {name: t}), new VO(t, this, this.ecModel)
            }, this);
            this._data = r
        }, n.prototype.getData = function () {
            return this._data
        }, n.prototype.select = function (t) {
            var e = this.option.selected, n = this.get("selectedMode");
            if ("single" === n) {
                var i = this._data;
                y(i, function (t) {
                    e[t.get("name")] = !1
                })
            }
            e[t] = !0
        }, n.prototype.unSelect = function (t) {
            "single" !== this.get("selectedMode") && (this.option.selected[t] = !1)
        }, n.prototype.toggleSelected = function (t) {
            var e = this.option.selected;
            e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t)
        }, n.prototype.allSelect = function () {
            var t = this._data, e = this.option.selected;
            y(t, function (t) {
                e[t.get("name", !0)] = !0
            })
        }, n.prototype.inverseSelect = function () {
            var t = this._data, e = this.option.selected;
            y(t, function (t) {
                var n = t.get("name", !0);
                e.hasOwnProperty(n) || (e[n] = !0), e[n] = !e[n]
            })
        }, n.prototype.isSelected = function (t) {
            var e = this.option.selected;
            return !(e.hasOwnProperty(t) && !e[t]) && p(this._availableNames, t) >= 0
        }, n.prototype.getOrient = function () {
            return "vertical" === this.get("orient") ? {index: 1, name: "vertical"} : {index: 0, name: "horizontal"}
        }, n.type = "legend.plain", n.dependencies = ["series"], n.defaultOption = {
            zlevel: 0,
            z: 4,
            show: !0,
            orient: "horizontal",
            left: "center",
            top: 0,
            align: "auto",
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            itemWidth: 25,
            itemHeight: 14,
            symbolRotate: "inherit",
            inactiveColor: "#ccc",
            inactiveBorderColor: "#ccc",
            inactiveBorderWidth: "auto",
            itemStyle: {
                color: "inherit",
                opacity: "inherit",
                decal: "inherit",
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                borderColor: "inherit",
                borderWidth: "auto",
                borderCap: "inherit",
                borderJoin: "inherit",
                borderDashOffset: "inherit",
                borderMiterLimit: "inherit"
            },
            lineStyle: {
                width: "auto",
                color: "inherit",
                inactiveColor: "#ccc",
                inactiveWidth: 2,
                opacity: "inherit",
                type: "inherit",
                cap: "inherit",
                join: "inherit",
                dashOffset: "inherit",
                miterLimit: "inherit",
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0
            },
            textStyle: {color: "#333"},
            selectedMode: !0,
            selector: !1,
            selectorLabel: {
                show: !0,
                borderRadius: 10,
                padding: [3, 5, 3, 5],
                fontSize: 12,
                fontFamily: " sans-serif",
                color: "#666",
                borderWidth: 1,
                borderColor: "#666"
            },
            emphasis: {selectorLabel: {show: !0, color: "#eee", backgroundColor: "#666"}},
            selectorPosition: "auto",
            selectorItemGap: 7,
            selectorButtonGap: 10,
            tooltip: {show: !1}
        }, n
    }(gR), YZ = S, ZZ = y, UZ = sL, jZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.newlineDisabled = !1, e
        }

        return e(n, t), n.prototype.init = function () {
            this.group.add(this._contentGroup = new UZ), this.group.add(this._selectorGroup = new UZ), this._isFirstRender = !0
        }, n.prototype.getContentGroup = function () {
            return this._contentGroup
        }, n.prototype.getSelectorGroup = function () {
            return this._selectorGroup
        }, n.prototype.render = function (t, e, n) {
            var i = this._isFirstRender;
            if (this._isFirstRender = !1, this.resetInner(), t.get("show", !0)) {
                var r = t.get("align"), o = t.get("orient");
                r && "auto" !== r || (r = "right" === t.get("left") && "vertical" === o ? "right" : "left");
                var a = t.get("selector", !0), s = t.get("selectorPosition", !0);
                !a || s && "auto" !== s || (s = "horizontal" === o ? "end" : "start"), this.renderInner(r, t, e, n, a, o, s);
                var l = t.getBoxLayoutParams(), u = {width: n.getWidth(), height: n.getHeight()}, h = t.get("padding"),
                    p = kl(l, u, h), d = this.layoutInner(t, r, p, i, a, s),
                    f = kl(c({width: d.width, height: d.height}, l), u, h);
                this.group.x = f.x - d.x, this.group.y = f.y - d.y, this.group.markRedraw(), this.group.add(this._backgroundEl = KM(d, t))
            }
        }, n.prototype.resetInner = function () {
            this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll()
        }, n.prototype.renderInner = function (t, e, n, i, r, o, a) {
            var s = this.getContentGroup(), l = Z(), u = e.get("selectedMode"), h = [];
            n.eachRawSeries(function (t) {
                !t.get("legendHoverLink") && h.push(t.id)
            }), ZZ(e.getData(), function (r, o) {
                var a = r.get("name");
                if (!this.newlineDisabled && ("" === a || "\n" === a)) {
                    var c = new UZ;
                    return c.newline = !0, void s.add(c)
                }
                var p = n.getSeriesByName(a)[0];
                if (!l.get(a)) if (p) {
                    var d = p.getData(), f = d.getVisual("legendLineStyle") || {}, g = d.getVisual("legendIcon"),
                        y = d.getVisual("style"), v = this._createItem(p, a, o, r, e, t, f, y, g, u);
                    v.on("click", YZ(QM, a, null, i, h)).on("mouseover", YZ(eI, p.name, null, i, h)).on("mouseout", YZ(nI, p.name, null, i, h)), l.set(a, !0)
                } else n.eachRawSeries(function (n) {
                    if (!l.get(a) && n.legendVisualProvider) {
                        var s = n.legendVisualProvider;
                        if (!s.containName(a)) return;
                        var c = s.indexOfName(a), p = s.getItemVisual(c, "style"), d = s.getItemVisual(c, "legendIcon"),
                            f = an(p.fill);
                        f && 0 === f[3] && (f[3] = .2, p.fill = gn(f, "rgba"));
                        var g = this._createItem(n, a, o, r, e, t, {}, p, d, u);
                        g.on("click", YZ(QM, null, a, i, h)).on("mouseover", YZ(eI, null, a, i, h)).on("mouseout", YZ(nI, null, a, i, h)), l.set(a, !0)
                    }
                }, this)
            }, this), r && this._createSelector(r, e, i, o, a)
        }, n.prototype._createSelector = function (t, e, n) {
            var i = this.getSelectorGroup();
            ZZ(t, function (t) {
                var r = t.type, o = new $k({
                    style: {x: 0, y: 0, align: "center", verticalAlign: "middle"}, onclick: function () {
                        n.dispatchAction({type: "all" === r ? "legendAllSelect" : "legendInverseSelect"})
                    }
                });
                i.add(o);
                var a = e.getModel("selectorLabel"), s = e.getModel(["emphasis", "selectorLabel"]);
                ks(o, {normal: a, emphasis: s}, {defaultText: t.title}), Sa(o)
            })
        }, n.prototype._createItem = function (t, e, n, i, r, o, a, s, l, u) {
            var h = t.visualDrawType, c = r.get("itemWidth"), p = r.get("itemHeight"), d = r.isSelected(e),
                f = i.get("symbolRotate"), g = i.get("icon");
            l = g || l || "roundRect";
            var y = r.getModel("lineStyle"), v = $M(l, i, y, a, s, h, d), m = new UZ, x = i.getModel("textStyle");
            if ("function" != typeof t.getLegendIcon || g && "inherit" !== g) {
                var _ = "inherit" === g && t.getData().getVisual("symbol") ? "inherit" === f ? t.getData().getVisual("symbolRotate") : f : 0;
                m.add(JM({
                    itemWidth: c,
                    itemHeight: p,
                    icon: l,
                    iconRotate: _,
                    itemStyle: v.itemStyle,
                    lineStyle: v.lineStyle
                }))
            } else m.add(t.getLegendIcon({
                itemWidth: c,
                itemHeight: p,
                icon: l,
                iconRotate: f,
                itemStyle: v.itemStyle,
                lineStyle: v.lineStyle
            }));
            var b = "left" === o ? c + 5 : -5, w = o, S = r.get("formatter"), M = e;
            "string" == typeof S && S ? M = S.replace("{name}", null != e ? e : "") : "function" == typeof S && (M = S(e));
            var I = i.get("inactiveColor");
            m.add(new $k({
                style: Os(x, {
                    text: M,
                    x: b,
                    y: p / 2,
                    fill: d ? x.getTextColor() : I,
                    align: w,
                    verticalAlign: "middle"
                })
            }));
            var T = new Uk({shape: m.getBoundingRect(), invisible: !0}), C = i.getModel("tooltip");
            return C.get("show") && As({
                el: T,
                componentModel: r,
                itemName: e,
                itemTooltipOption: C.option
            }), m.add(T), m.eachChild(function (t) {
                t.silent = !0
            }), T.silent = !u, this.getContentGroup().add(m), Sa(m), m.__legendDataIndex = n, m
        }, n.prototype.layoutInner = function (t, e, n, i, r, o) {
            var a = this.getContentGroup(), s = this.getSelectorGroup();
            dR(t.get("orient"), a, t.get("itemGap"), n.width, n.height);
            var l = a.getBoundingRect(), u = [-l.x, -l.y];
            if (s.markRedraw(), a.markRedraw(), r) {
                dR("horizontal", s, t.get("selectorItemGap", !0));
                var h = s.getBoundingRect(), c = [-h.x, -h.y], p = t.get("selectorButtonGap", !0),
                    d = t.getOrient().index, f = 0 === d ? "width" : "height", g = 0 === d ? "height" : "width",
                    y = 0 === d ? "y" : "x";
                "end" === o ? c[d] += l[f] + p : u[d] += h[f] + p, c[1 - d] += l[g] / 2 - h[g] / 2, s.x = c[0], s.y = c[1], a.x = u[0], a.y = u[1];
                var v = {x: 0, y: 0};
                return v[f] = l[f] + p + h[f], v[g] = Math.max(l[g], h[g]), v[y] = Math.min(0, h[y] + c[1 - d]), v
            }
            return a.x = u[0], a.y = u[1], this.group.getBoundingRect()
        }, n.prototype.remove = function () {
            this.getContentGroup().removeAll(), this._isFirstRender = !0
        }, n.type = "legend.plain", n
    }(Tz), qZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.setScrollDataIndex = function (t) {
            this.option.scrollDataIndex = t
        }, n.prototype.init = function (e, n, i) {
            var r = El(e);
            t.prototype.init.call(this, e, n, i), sI(this, e, r)
        }, n.prototype.mergeOption = function (e, n) {
            t.prototype.mergeOption.call(this, e, n), sI(this, this.option, e)
        }, n.type = "legend.scroll", n.defaultOption = Xs(XZ.defaultOption, {
            scrollDataIndex: 0,
            pageButtonItemGap: 5,
            pageButtonGap: null,
            pageButtonPosition: "end",
            pageFormatter: "{current}/{total}",
            pageIcons: {
                horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
                vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
            },
            pageIconColor: "#2f4554",
            pageIconInactiveColor: "#aaa",
            pageIconSize: 15,
            pageTextStyle: {color: "#333"},
            animationDurationUpdate: 800
        }), n
    }(XZ), KZ = sL, $Z = ["width", "height"], JZ = ["x", "y"], QZ = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.newlineDisabled = !0, e._currentIndex = 0, e
        }

        return e(n, t), n.prototype.init = function () {
            t.prototype.init.call(this), this.group.add(this._containerGroup = new KZ), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new KZ)
        }, n.prototype.resetInner = function () {
            t.prototype.resetInner.call(this), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null
        }, n.prototype.renderInner = function (e, n, i, r, o, a, s) {
            function l(t, e) {
                var i = t + "DataIndex",
                    o = Ss(n.get("pageIcons", !0)[n.getOrient().name][e], {onclick: xA(u._pageGo, u, i, n, r)}, {
                        x: -p[0] / 2,
                        y: -p[1] / 2,
                        width: p[0],
                        height: p[1]
                    });
                o.name = t, h.add(o)
            }

            var u = this;
            t.prototype.renderInner.call(this, e, n, i, r, o, a, s);
            var h = this._controllerGroup, c = n.get("pageIconSize", !0), p = M(c) ? c : [c, c];
            l("pagePrev", 0);
            var d = n.getModel("pageTextStyle");
            h.add(new $k({
                name: "pageText",
                style: {
                    text: "xx/xx",
                    fill: d.getTextColor(),
                    font: d.getFont(),
                    verticalAlign: "middle",
                    align: "center"
                },
                silent: !0
            })), l("pageNext", 1)
        }, n.prototype.layoutInner = function (t, e, n, i, r, o) {
            var a = this.getSelectorGroup(), l = t.getOrient().index, u = $Z[l], h = JZ[l], c = $Z[1 - l],
                p = JZ[1 - l];
            r && dR("horizontal", a, t.get("selectorItemGap", !0));
            var d = t.get("selectorButtonGap", !0), f = a.getBoundingRect(), g = [-f.x, -f.y], y = s(n);
            r && (y[u] = n[u] - f[u] - d);
            var v = this._layoutContentAndController(t, i, y, l, u, c, p, h);
            if (r) {
                if ("end" === o) g[l] += v[u] + d; else {
                    var m = f[u] + d;
                    g[l] -= m, v[h] -= m
                }
                v[u] += f[u] + d, g[1 - l] += v[p] + v[c] / 2 - f[c] / 2, v[c] = Math.max(v[c], f[c]), v[p] = Math.min(v[p], f[p] + g[1 - l]), a.x = g[0], a.y = g[1], a.markRedraw()
            }
            return v
        }, n.prototype._layoutContentAndController = function (t, e, n, i, r, o, a, s) {
            var l = this.getContentGroup(), u = this._containerGroup, h = this._controllerGroup;
            dR(t.get("orient"), l, t.get("itemGap"), i ? n.width : null, i ? null : n.height), dR("horizontal", h, t.get("pageButtonItemGap", !0));
            var c = l.getBoundingRect(), p = h.getBoundingRect(), d = this._showController = c[r] > n[r],
                f = [-c.x, -c.y];
            e || (f[i] = l[s]);
            var g = [0, 0], y = [-p.x, -p.y], v = B(t.get("pageButtonGap", !0), t.get("itemGap", !0));
            if (d) {
                var m = t.get("pageButtonPosition", !0);
                "end" === m ? y[i] += n[r] - p[r] : g[i] += p[r] + v
            }
            y[1 - i] += c[o] / 2 - p[o] / 2, l.setPosition(f), u.setPosition(g), h.setPosition(y);
            var x = {x: 0, y: 0};
            if (x[r] = d ? n[r] : c[r], x[o] = Math.max(c[o], p[o]), x[a] = Math.min(0, p[a] + y[1 - i]), u.__rectSize = n[r], d) {
                var _ = {x: 0, y: 0};
                _[r] = Math.max(n[r] - p[r] - v, 0), _[o] = x[o], u.setClipPath(new Uk({shape: _})), u.__rectSize = _[r]
            } else h.eachChild(function (t) {
                t.attr({invisible: !0, silent: !0})
            });
            var b = this._getPageInfo(t);
            return null != b.pageIndex && us(l, {
                x: b.contentPosition[0],
                y: b.contentPosition[1]
            }, d ? t : null), this._updatePageInfoView(t, b), x
        }, n.prototype._pageGo = function (t, e, n) {
            var i = this._getPageInfo(e)[t];
            null != i && n.dispatchAction({type: "legendScroll", scrollDataIndex: i, legendId: e.id})
        }, n.prototype._updatePageInfoView = function (t, e) {
            var n = this._controllerGroup;
            y(["pagePrev", "pageNext"], function (i) {
                var r = i + "DataIndex", o = null != e[r], a = n.childOfName(i);
                a && (a.setStyle("fill", o ? t.get("pageIconColor", !0) : t.get("pageIconInactiveColor", !0)), a.cursor = o ? "pointer" : "default")
            });
            var i = n.childOfName("pageText"), r = t.get("pageFormatter"), o = e.pageIndex, a = null != o ? o + 1 : 0,
                s = e.pageCount;
            i && r && i.setStyle("text", T(r) ? r.replace("{current}", null == a ? "" : a + "").replace("{total}", null == s ? "" : s + "") : r({
                current: a,
                total: s
            }))
        }, n.prototype._getPageInfo = function (t) {
            function e(t) {
                if (t) {
                    var e = t.getBoundingRect(), n = e[l] + t[l];
                    return {s: n, e: n + e[s], i: t.__legendDataIndex}
                }
            }

            function n(t, e) {
                return t.e >= e && t.s <= e + o
            }

            var i = t.get("scrollDataIndex", !0), r = this.getContentGroup(), o = this._containerGroup.__rectSize,
                a = t.getOrient().index, s = $Z[a], l = JZ[a], u = this._findTargetItemIndex(i), h = r.children(),
                c = h[u], p = h.length, d = p ? 1 : 0, f = {
                    contentPosition: [r.x, r.y],
                    pageCount: d,
                    pageIndex: d - 1,
                    pagePrevDataIndex: null,
                    pageNextDataIndex: null
                };
            if (!c) return f;
            var g = e(c);
            f.contentPosition[a] = -g.s;
            for (var y = u + 1, v = g, m = g, x = null; p >= y; ++y) x = e(h[y]), (!x && m.e > v.s + o || x && !n(x, v.s)) && (v = m.i > v.i ? m : x, v && (null == f.pageNextDataIndex && (f.pageNextDataIndex = v.i), ++f.pageCount)), m = x;
            for (var y = u - 1, v = g, m = g, x = null; y >= -1; --y) x = e(h[y]), x && n(m, x.s) || !(v.i < m.i) || (m = v, null == f.pagePrevDataIndex && (f.pagePrevDataIndex = v.i), ++f.pageCount, ++f.pageIndex), v = x;
            return f
        }, n.prototype._findTargetItemIndex = function (t) {
            if (!this._showController) return 0;
            var e, n, i = this.getContentGroup();
            return i.eachChild(function (i, r) {
                var o = i.__legendDataIndex;
                null == n && null != o && (n = r), o === t && (e = r)
            }), null != e ? e : n
        }, n.type = "legend.scroll", n
    }(jZ);
    df(uI);
    var tU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "tooltip", n.dependencies = ["axisPointer"], n.defaultOption = {
                zlevel: 0,
                z: 60,
                show: !0,
                showContent: !0,
                trigger: "item",
                triggerOn: "mousemove|click",
                alwaysShowContent: !1,
                displayMode: "single",
                renderMode: "auto",
                confine: null,
                showDelay: 0,
                hideDelay: 100,
                transitionDuration: .4,
                enterable: !1,
                backgroundColor: "#fff",
                shadowBlur: 10,
                shadowColor: "rgba(0, 0, 0, .2)",
                shadowOffsetX: 1,
                shadowOffsetY: 2,
                borderRadius: 4,
                borderWidth: 1,
                padding: null,
                extraCssText: "",
                axisPointer: {
                    type: "line",
                    axis: "auto",
                    animation: "auto",
                    animationDurationUpdate: 200,
                    animationEasingUpdate: "exponentialOut",
                    crossStyle: {color: "#999", width: 1, type: "dashed", textStyle: {}}
                },
                textStyle: {color: "#666", fontSize: 14}
            }, n
        }(gR), eU = cI(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]),
        nU = cI(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
        iU = pI(nU, "transition"), rU = pI(eU, "transform"),
        oU = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (oA.transform3dSupported ? "will-change:transform;" : ""),
        aU = function () {
            function t(t, e, n) {
                if (this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._firstShow = !0, this._longHide = !0, oA.wxa) return null;
                var i = document.createElement("div");
                i.domBelongToZr = !0, this.el = i;
                var r = this._zr = e.getZr(), o = this._appendToBody = n && n.appendToBody;
                _I(this._styleCoord, r, o, e.getWidth() / 2, e.getHeight() / 2), o ? document.body.appendChild(i) : t.appendChild(i), this._container = t;
                var a = this;
                i.onmouseenter = function () {
                    a._enterable && (clearTimeout(a._hideTimeout), a._show = !0), a._inContent = !0
                }, i.onmousemove = function (t) {
                    if (t = t || window.event, !a._enterable) {
                        var e = r.handler, n = r.painter.getViewportRoot();
                        Ae(n, t, !0), e.dispatch("mousemove", t)
                    }
                }, i.onmouseleave = function () {
                    a._inContent = !1, a._enterable && a._show && a.hideLater(a._hideDelay)
                }
            }

            return t.prototype.update = function (t) {
                var e = this._container, n = dI(e, "position"), i = e.style;
                "absolute" !== i.position && "absolute" !== n && (i.position = "relative");
                var r = t.get("alwaysShowContent");
                r && this._moveIfResized(), this.el.className = t.get("className") || ""
            }, t.prototype.show = function (t, e) {
                clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout);
                var n = this.el, i = n.style, r = this._styleCoord;
                n.innerHTML ? i.cssText = oU + xI(t, !this._firstShow, this._longHide) + vI(r[0], r[1], !0) + ("border-color:" + Cl(e) + ";") + (t.get("extraCssText") || "") + (";pointer-event:" + (this._enterable ? "auto" : "none")) : i.display = "none", this._show = !0, this._firstShow = !1, this._longHide = !1
            }, t.prototype.setContent = function (t, e, n, i, r) {
                if (null != t) {
                    var o = this.el;
                    if (T(r) && "item" === n.get("trigger") && !hI(n) && (t += gI(n.get("backgroundColor"), i, r)), T(t)) o.innerHTML = t; else if (t) {
                        o.innerHTML = "", M(t) || (t = [t]);
                        for (var a = 0; a < t.length; a++) P(t[a]) && t[a].parentNode !== o && o.appendChild(t[a])
                    }
                }
            }, t.prototype.setEnterable = function (t) {
                this._enterable = t
            }, t.prototype.getSize = function () {
                var t = this.el;
                return [t.clientWidth, t.clientHeight]
            }, t.prototype.moveTo = function (t, e) {
                var n = this._styleCoord;
                if (_I(n, this._zr, this._appendToBody, t, e), null != n[0] && null != n[1]) {
                    var i = this.el.style, r = vI(n[0], n[1]);
                    y(r, function (t) {
                        i[t[0]] = t[1]
                    })
                }
            }, t.prototype._moveIfResized = function () {
                var t = this._styleCoord[2], e = this._styleCoord[3];
                this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight())
            }, t.prototype.hide = function () {
                var t = this, e = this.el.style;
                e.visibility = "hidden", e.opacity = "0", oA.transform3dSupported && (e.willChange = ""), this._show = !1, this._longHideTimeout = setTimeout(function () {
                    return t._longHide = !0
                }, 500)
            }, t.prototype.hideLater = function (t) {
                !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(xA(this.hide, this), t)) : this.hide())
            }, t.prototype.isShow = function () {
                return this._show
            }, t.prototype.dispose = function () {
                this.el.parentNode.removeChild(this.el)
            }, t.prototype.getOuterSize = function () {
                var t = this.el.clientWidth, e = this.el.clientHeight, n = dI(this.el);
                return n && (t += parseInt(n.borderLeftWidth, 10) + parseInt(n.borderRightWidth, 10), e += parseInt(n.borderTopWidth, 10) + parseInt(n.borderBottomWidth, 10)), {
                    width: t,
                    height: e
                }
            }, t
        }(), sU = function () {
            function t(t) {
                this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._zr = t.getZr(), SI(this._styleCoord, this._zr, t.getWidth() / 2, t.getHeight() / 2)
            }

            return t.prototype.update = function (t) {
                var e = t.get("alwaysShowContent");
                e && this._moveIfResized()
            }, t.prototype.show = function () {
                this._hideTimeout && clearTimeout(this._hideTimeout), this.el.show(), this._show = !0
            }, t.prototype.setContent = function (t, e, n, i) {
                D(t) && Gi(""), this.el && this._zr.remove(this.el);
                var r = n.getModel("textStyle");
                this.el = new $k({
                    style: {
                        rich: e.richTextStyles,
                        text: t,
                        lineHeight: 22,
                        backgroundColor: n.get("backgroundColor"),
                        borderRadius: n.get("borderRadius"),
                        borderWidth: 1,
                        borderColor: i,
                        shadowColor: n.get("shadowColor"),
                        shadowBlur: n.get("shadowBlur"),
                        shadowOffsetX: n.get("shadowOffsetX"),
                        shadowOffsetY: n.get("shadowOffsetY"),
                        textShadowColor: r.get("textShadowColor"),
                        textShadowBlur: r.get("textShadowBlur") || 0,
                        textShadowOffsetX: r.get("textShadowOffsetX") || 0,
                        textShadowOffsetY: r.get("textShadowOffsetY") || 0,
                        fill: n.get(["textStyle", "color"]),
                        padding: gh(n, "richText"),
                        verticalAlign: "top",
                        align: "left"
                    }, z: n.get("z")
                }), this._zr.add(this.el);
                var o = this;
                this.el.on("mouseover", function () {
                    o._enterable && (clearTimeout(o._hideTimeout), o._show = !0), o._inContent = !0
                }), this.el.on("mouseout", function () {
                    o._enterable && o._show && o.hideLater(o._hideDelay), o._inContent = !1
                })
            }, t.prototype.setEnterable = function (t) {
                this._enterable = t
            }, t.prototype.getSize = function () {
                var t = this.el, e = this.el.getBoundingRect(), n = wI(t.style);
                return [e.width + n.left + n.right, e.height + n.top + n.bottom]
            }, t.prototype.moveTo = function (t, e) {
                var n = this.el;
                if (n) {
                    var i = this._styleCoord;
                    SI(i, this._zr, t, e), t = i[0], e = i[1];
                    var r = n.style, o = bI(r.borderWidth || 0), a = wI(r);
                    n.x = t + o + a.left, n.y = e + o + a.top, n.markRedraw()
                }
            }, t.prototype._moveIfResized = function () {
                var t = this._styleCoord[2], e = this._styleCoord[3];
                this.moveTo(t * this._zr.getWidth(), e * this._zr.getHeight())
            }, t.prototype.hide = function () {
                this.el && this.el.hide(), this._show = !1
            }, t.prototype.hideLater = function (t) {
                !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(xA(this.hide, this), t)) : this.hide())
            }, t.prototype.isShow = function () {
                return this._show
            }, t.prototype.getOuterSize = function () {
                var t = this.getSize();
                return {width: t[0], height: t[1]}
            }, t.prototype.dispose = function () {
                this._zr.remove(this.el)
            }, t
        }(), lU = xA, uU = y, hU = _i, cU = new Uk({shape: {x: -1, y: -1, width: 2, height: 2}}), pU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.init = function (t, e) {
                if (!oA.node) {
                    var n = t.getComponent("tooltip"), i = n.get("renderMode");
                    this._renderMode = gr(i), this._tooltipContent = "richText" === this._renderMode ? new sU(e) : new aU(e.getDom(), e, {appendToBody: n.get("appendToBody", !0)})
                }
            }, n.prototype.render = function (t, e, n) {
                if (!oA.node) {
                    this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = n, this._alwaysShowContent = t.get("alwaysShowContent");
                    var i = this._tooltipContent;
                    i.update(t), i.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow()
                }
            }, n.prototype._initGlobalListener = function () {
                var t = this._tooltipModel, e = t.get("triggerOn");
                qS("itemTooltip", this._api, lU(function (t, n, i) {
                    "none" !== e && (e.indexOf(t) >= 0 ? this._tryShow(n, i) : "leave" === t && this._hide(i))
                }, this))
            }, n.prototype._keepShow = function () {
                var t = this._tooltipModel, e = this._ecModel, n = this._api;
                if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) {
                    var i = this;
                    clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function () {
                        !n.isDisposed() && i.manuallyShowTip(t, e, n, {
                            x: i._lastX,
                            y: i._lastY,
                            dataByCoordSys: i._lastDataByCoordSys
                        })
                    })
                }
            }, n.prototype.manuallyShowTip = function (t, e, n, i) {
                if (i.from !== this.uid && !oA.node) {
                    var r = II(i, n);
                    this._ticket = "";
                    var o = i.dataByCoordSys, a = LI(i, e, n);
                    if (a) {
                        var s = a.el.getBoundingRect().clone();
                        s.applyTransform(a.el.transform), this._tryShow({
                            offsetX: s.x + s.width / 2,
                            offsetY: s.y + s.height / 2,
                            target: a.el,
                            position: i.position,
                            positionDefault: "bottom"
                        }, r)
                    } else if (i.tooltip && null != i.x && null != i.y) {
                        var l = cU;
                        l.x = i.x, l.y = i.y, l.update(), tP(l).tooltipConfig = {
                            name: null,
                            option: i.tooltip
                        }, this._tryShow({offsetX: i.x, offsetY: i.y, target: l}, r)
                    } else if (o) this._tryShow({
                        offsetX: i.x,
                        offsetY: i.y,
                        position: i.position,
                        dataByCoordSys: o,
                        tooltipOption: i.tooltipOption
                    }, r); else if (null != i.seriesIndex) {
                        if (this._manuallyAxisShowTip(t, e, n, i)) return;
                        var u = nM(i, e), h = u.point[0], c = u.point[1];
                        null != h && null != c && this._tryShow({
                            offsetX: h,
                            offsetY: c,
                            target: u.el,
                            position: i.position,
                            positionDefault: "bottom"
                        }, r)
                    } else null != i.x && null != i.y && (n.dispatchAction({
                        type: "updateAxisPointer",
                        x: i.x,
                        y: i.y
                    }), this._tryShow({
                        offsetX: i.x,
                        offsetY: i.y,
                        position: i.position,
                        target: n.getZr().findHover(i.x, i.y).target
                    }, r))
                }
            }, n.prototype.manuallyHideTip = function (t, e, n, i) {
                var r = this._tooltipContent;
                !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = this._lastDataByCoordSys = null, i.from !== this.uid && this._hide(II(i, n))
            }, n.prototype._manuallyAxisShowTip = function (t, e, n, i) {
                var r = i.seriesIndex, o = i.dataIndex, a = e.getComponent("axisPointer").coordSysAxesInfo;
                if (null != r && null != o && null != a) {
                    var s = e.getSeriesByIndex(r);
                    if (s) {
                        var l = s.getData(),
                            u = MI([l.getItemModel(o), s, (s.coordinateSystem || {}).model], this._tooltipModel);
                        if ("axis" === u.get("trigger")) return n.dispatchAction({
                            type: "updateAxisPointer",
                            seriesIndex: r,
                            dataIndex: o,
                            position: i.position
                        }), !0
                    }
                }
            }, n.prototype._tryShow = function (t, e) {
                var n = t.target, i = this._tooltipModel;
                if (i) {
                    this._lastX = t.offsetX, this._lastY = t.offsetY;
                    var r = t.dataByCoordSys;
                    if (r && r.length) this._showAxisTooltip(r, t); else if (n) {
                        this._lastDataByCoordSys = null;
                        var o, a;
                        bc(n, function (t) {
                            return null != tP(t).dataIndex ? (o = t, !0) : null != tP(t).tooltipConfig ? (a = t, !0) : void 0
                        }, !0), o ? this._showSeriesItemTooltip(t, o, e) : a ? this._showComponentItemTooltip(t, a, e) : this._hide(e)
                    } else this._lastDataByCoordSys = null, this._hide(e)
                }
            }, n.prototype._showOrMove = function (t, e) {
                var n = t.get("showDelay");
                e = xA(e, this), clearTimeout(this._showTimout), n > 0 ? this._showTimout = setTimeout(e, n) : e()
            }, n.prototype._showAxisTooltip = function (t, e) {
                var n = this._ecModel, i = this._tooltipModel, r = [e.offsetX, e.offsetY], o = MI([e.tooltipOption], i),
                    a = this._renderMode, s = [], l = rh("section", {blocks: [], noHeader: !0}), u = [], h = new Sz;
                uU(t, function (t) {
                    uU(t.dataByAxis, function (t) {
                        var e = n.getComponent(t.axisDim + "Axis", t.axisIndex), i = t.value;
                        if (e && null != i) {
                            var r = FS(i, e.axis, n, t.seriesDataIndices, t.valueLabelOpt),
                                o = rh("section", {header: r, noHeader: !W(r), sortBlocks: !0, blocks: []});
                            l.blocks.push(o), y(t.seriesDataIndices, function (l) {
                                var c = n.getSeriesByIndex(l.seriesIndex), p = l.dataIndexInside, d = c.getDataParams(p);
                                d.axisDim = t.axisDim, d.axisIndex = t.axisIndex, d.axisType = t.axisType, d.axisId = t.axisId, d.axisValue = ef(e.axis, {value: i}), d.axisValueLabel = r, d.marker = h.makeTooltipMarker("item", Cl(d.color), a);
                                var f = Hu(c.formatTooltip(p, !0, null));
                                f.markupFragment && o.blocks.push(f.markupFragment), f.markupText && u.push(f.markupText), s.push(d)
                            })
                        }
                    })
                }), l.blocks.reverse(), u.reverse();
                var c = e.position, p = o.get("order"), d = sh(l, h, a, p, n.get("useUTC"), o.get("textStyle"));
                d && u.unshift(d);
                var f = "richText" === a ? "\n\n" : "<br/>", g = u.join(f);
                this._showOrMove(o, function () {
                    this._updateContentNotChangedOnAxis(t) ? this._updatePosition(o, c, r[0], r[1], this._tooltipContent, s) : this._showTooltipContent(o, g, s, Math.random() + "", r[0], r[1], c, null, h)
                })
            }, n.prototype._showSeriesItemTooltip = function (t, e, n) {
                var i = this._ecModel, r = tP(e), o = r.seriesIndex, a = i.getSeriesByIndex(o), s = r.dataModel || a,
                    l = r.dataIndex, u = r.dataType, h = s.getData(u), c = this._renderMode, p = t.positionDefault,
                    d = MI([h.getItemModel(l), s, a && (a.coordinateSystem || {}).model], this._tooltipModel, p ? {position: p} : null),
                    f = d.get("trigger");
                if (null == f || "item" === f) {
                    var g = s.getDataParams(l, u), y = new Sz;
                    g.marker = y.makeTooltipMarker("item", Cl(g.color), c);
                    var v = Hu(s.formatTooltip(l, !1, u)), m = d.get("order"),
                        x = v.markupFragment ? sh(v.markupFragment, y, c, m, i.get("useUTC"), d.get("textStyle")) : v.markupText,
                        _ = "item_" + s.name + "_" + l;
                    this._showOrMove(d, function () {
                        this._showTooltipContent(d, x, g, _, t.offsetX, t.offsetY, t.position, t.target, y)
                    }), n({
                        type: "showTip",
                        dataIndexInside: l,
                        dataIndex: h.getRawIndex(l),
                        seriesIndex: o,
                        from: this.uid
                    })
                }
            }, n.prototype._showComponentItemTooltip = function (t, e, n) {
                var i = tP(e), r = i.tooltipConfig, o = r.option || {};
                if (T(o)) {
                    var a = o;
                    o = {content: a, formatter: a}
                }
                var l = [o], u = this._ecModel.getComponent(i.componentMainType, i.componentIndex);
                u && l.push(u), l.push({formatter: o.content});
                var h = t.positionDefault, c = MI(l, this._tooltipModel, h ? {position: h} : null), p = c.get("content"),
                    d = Math.random() + "", f = new Sz;
                this._showOrMove(c, function () {
                    var n = s(c.get("formatterParams") || {});
                    this._showTooltipContent(c, p, n, d, t.offsetX, t.offsetY, t.position, e, f)
                }), n({type: "showTip", from: this.uid})
            }, n.prototype._showTooltipContent = function (t, e, n, i, r, o, a, s, l) {
                if (this._ticket = "", t.get("showContent") && t.get("show")) {
                    var u = this._tooltipContent, h = t.get("formatter");
                    a = a || t.get("position");
                    var c = e, p = this._getNearestPoint([r, o], n, t.get("trigger"), t.get("borderColor")), d = p.color;
                    if (h && T(h)) {
                        var f = t.ecModel.get("useUTC"), g = M(n) ? n[0] : n,
                            y = g && g.axisType && g.axisType.indexOf("time") >= 0;
                        c = h, y && (c = Qs(g.axisValue, c, f)), c = wl(c, n, !0)
                    } else if (I(h)) {
                        var v = lU(function (e, i) {
                            e === this._ticket && (u.setContent(i, l, t, d, a), this._updatePosition(t, a, r, o, u, n, s))
                        }, this);
                        this._ticket = i, c = h(n, i, v)
                    }
                    u.setContent(c, l, t, d, a), u.show(t, d), this._updatePosition(t, a, r, o, u, n, s)
                }
            }, n.prototype._getNearestPoint = function (t, e, n, i) {
                return "axis" === n || M(e) ? {color: i || ("html" === this._renderMode ? "#fff" : "none")} : M(e) ? void 0 : {color: i || e.color || e.borderColor}
            }, n.prototype._updatePosition = function (t, e, n, i, r, o, a) {
                var s = this._api.getWidth(), l = this._api.getHeight();
                e = e || t.get("position");
                var u = r.getSize(), h = t.get("align"), c = t.get("verticalAlign"), p = a && a.getBoundingRect().clone();
                if (a && p.applyTransform(a.transform), I(e) && (e = e([n, i], o, r.el, p, {
                    viewSize: [s, l],
                    contentSize: u.slice()
                })), M(e)) n = hU(e[0], s), i = hU(e[1], l); else if (D(e)) {
                    var d = e;
                    d.width = u[0], d.height = u[1];
                    var f = kl(d, {width: s, height: l});
                    n = f.x, i = f.y, h = null, c = null
                } else if (T(e) && a) {
                    var g = AI(e, p, u);
                    n = g[0], i = g[1]
                } else {
                    var g = TI(n, i, r, s, l, h ? null : 20, c ? null : 20);
                    n = g[0], i = g[1]
                }
                if (h && (n -= DI(h) ? u[0] / 2 : "right" === h ? u[0] : 0), c && (i -= DI(c) ? u[1] / 2 : "bottom" === c ? u[1] : 0), hI(t)) {
                    var g = CI(n, i, r, s, l);
                    n = g[0], i = g[1]
                }
                r.moveTo(n, i)
            }, n.prototype._updateContentNotChangedOnAxis = function (t) {
                var e = this._lastDataByCoordSys, n = !!e && e.length === t.length;
                return n && uU(e, function (e, i) {
                    var r = e.dataByAxis || [], o = t[i] || {}, a = o.dataByAxis || [];
                    n = n && r.length === a.length, n && uU(r, function (t, e) {
                        var i = a[e] || {}, r = t.seriesDataIndices || [], o = i.seriesDataIndices || [];
                        n = n && t.value === i.value && t.axisType === i.axisType && t.axisId === i.axisId && r.length === o.length, n && uU(r, function (t, e) {
                            var i = o[e];
                            n = n && t.seriesIndex === i.seriesIndex && t.dataIndex === i.dataIndex
                        })
                    })
                }), this._lastDataByCoordSys = t, !!n
            }, n.prototype._hide = function (t) {
                this._lastDataByCoordSys = null, t({type: "hideTip", from: this.uid})
            }, n.prototype.dispose = function (t, e) {
                oA.node || (this._tooltipContent.dispose(), eM("itemTooltip", e))
            }, n.type = "tooltip", n
        }(Tz);
    df(kI);
    var dU = ur(), fU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.createdBySelf = !1, e
        }

        return e(n, t), n.prototype.init = function (t, e, n) {
            this.mergeDefaultAndTheme(t, n), this._mergeOption(t, n, !1, !0)
        }, n.prototype.isAnimationEnabled = function () {
            if (oA.node) return !1;
            var t = this.__hostSeries;
            return this.getShallow("animation") && t && t.isAnimationEnabled()
        }, n.prototype.mergeOption = function (t, e) {
            this._mergeOption(t, e, !1, !1)
        }, n.prototype._mergeOption = function (t, e, n, i) {
            var r = this.mainType;
            n || e.eachSeries(function (t) {
                var n = t.get(this.mainType, !0), o = dU(t)[r];
                return n && n.data ? (o ? o._mergeOption(n, e, !0) : (i && OI(n), y(n.data, function (t) {
                    t instanceof Array ? (OI(t[0]), OI(t[1])) : OI(t)
                }), o = this.createMarkerModelFromSeries(n, this, e), h(o, {
                    mainType: this.mainType,
                    seriesIndex: t.seriesIndex,
                    name: t.name,
                    createdBySelf: !0
                }), o.__hostSeries = t), void (dU(t)[r] = o)) : void (dU(t)[r] = null)
            }, this)
        }, n.prototype.formatTooltip = function (t) {
            var e = this.getData(), n = this.getRawValue(t), i = e.getName(t);
            return rh("section", {
                header: this.name,
                blocks: [rh("nameValue", {name: i, value: n, noName: !i, noValue: null == n})]
            })
        }, n.prototype.getData = function () {
            return this._data
        }, n.prototype.setData = function (t) {
            this._data = t
        }, n.getMarkerModelFromSeries = function (t, e) {
            return dU(t)[e]
        }, n.type = "marker", n.dependencies = ["series", "grid", "polar", "geo"], n
    }(gR);
    f(fU, cz.prototype);
    var gU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.createMarkerModelFromSeries = function (t, e, i) {
                return new n(t, e, i)
            }, n.type = "markPoint", n.defaultOption = {
                zlevel: 0,
                z: 5,
                symbol: "pin",
                symbolSize: 50,
                tooltip: {trigger: "item"},
                label: {show: !0, position: "inside"},
                itemStyle: {borderWidth: 2},
                emphasis: {label: {show: !0}}
            }, n
        }(fU), yU = {min: S(EI, "min"), max: S(EI, "max"), average: S(EI, "average"), median: S(EI, "median")}, vU = ur(),
        mU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.init = function () {
                this.markerGroupMap = Z()
            }, n.prototype.render = function (t, e, n) {
                var i = this, r = this.markerGroupMap;
                r.each(function (t) {
                    vU(t).keep = !1
                }), e.eachSeries(function (t) {
                    var r = fU.getMarkerModelFromSeries(t, i.type);
                    r && i.renderSeries(t, r, e, n)
                }), r.each(function (t) {
                    !vU(t).keep && i.group.remove(t.group)
                })
            }, n.prototype.markKeep = function (t) {
                vU(t).keep = !0
            }, n.prototype.blurSeries = function (t) {
                var e = this;
                y(t, function (t) {
                    var n = fU.getMarkerModelFromSeries(t, e.type);
                    if (n) {
                        var i = n.getData();
                        i.eachItemGraphicEl(function (t) {
                            t && la(t)
                        })
                    }
                })
            }, n.type = "marker", n
        }(Tz), xU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.updateTransform = function (t, e, n) {
                e.eachSeries(function (t) {
                    var e = fU.getMarkerModelFromSeries(t, "markPoint");
                    e && (WI(e.getData(), t, n), this.markerGroupMap.get(t.id).updateLayout())
                }, this)
            }, n.prototype.renderSeries = function (t, e, n, i) {
                var r = t.coordinateSystem, o = t.id, a = t.getData(), s = this.markerGroupMap,
                    l = s.get(o) || s.set(o, new CF), u = XI(r, t, e);
                e.setData(u), WI(e.getData(), t, i), u.each(function (t) {
                    var n = u.getItemModel(t), i = n.getShallow("symbol"), r = n.getShallow("symbolSize"),
                        o = n.getShallow("symbolRotate");
                    if (I(i) || I(r) || I(o)) {
                        var s = e.getRawValue(t), l = e.getDataParams(t);
                        I(i) && (i = i(s, l)), I(r) && (r = r(s, l)), I(o) && (o = o(s, l))
                    }
                    var h = n.getModel("itemStyle").getItemStyle(), c = qh(a, "color");
                    h.fill || (h.fill = c), u.setItemVisual(t, {symbol: i, symbolSize: r, symbolRotate: o, style: h})
                }), l.updateData(u), this.group.add(l.group), u.eachItemGraphicEl(function (t) {
                    t.traverse(function (t) {
                        tP(t).dataModel = e
                    })
                }), this.markKeep(l), l.group.silent = e.get("silent") || t.get("silent")
            }, n.type = "markPoint", n
        }(mU);
    df(YI);
    var _U = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.createMarkerModelFromSeries = function (t, e, i) {
            return new n(t, e, i)
        }, n.type = "markLine", n.defaultOption = {
            zlevel: 0,
            z: 5,
            symbol: ["circle", "arrow"],
            symbolSize: [8, 16],
            symbolOffset: 0,
            precision: 2,
            tooltip: {trigger: "item"},
            label: {show: !0, position: "end", distance: 5},
            lineStyle: {type: "dashed"},
            emphasis: {label: {show: !0}, lineStyle: {width: 3}},
            animationEasing: "linear"
        }, n
    }(fU), bU = ur(), wU = function (t, e, n, i) {
        var r, o = t.getData();
        if (M(i)) r = i; else {
            var a = i.type;
            if ("min" === a || "max" === a || "average" === a || "median" === a || null != i.xAxis || null != i.yAxis) {
                var u = void 0, c = void 0;
                if (null != i.yAxis || null != i.xAxis) u = e.getAxis(null != i.yAxis ? "y" : "x"), c = N(i.yAxis, i.xAxis); else {
                    var p = BI(i, o, e, t);
                    u = p.valueAxis;
                    var d = fd(o, p.valueDataDim);
                    c = HI(o, d, a)
                }
                var f = "x" === u.dim ? 0 : 1, g = 1 - f, y = s(i), v = {coord: []};
                y.type = null, y.coord = [], y.coord[g] = -1 / 0, v.coord[g] = 1 / 0;
                var m = n.get("precision");
                m >= 0 && "number" == typeof c && (c = +c.toFixed(Math.min(m, 20))), y.coord[f] = v.coord[f] = c, r = [y, v, {
                    type: a,
                    valueIndex: i.valueIndex,
                    value: c
                }]
            } else r = []
        }
        var x = [NI(t, r[0]), NI(t, r[1]), h({}, r[2])];
        return x[2].type = x[2].type || null, l(x[2], x[0]), l(x[2], x[1]), x
    }, SU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.updateTransform = function (t, e, n) {
            e.eachSeries(function (t) {
                var e = fU.getMarkerModelFromSeries(t, "markLine");
                if (e) {
                    var i = e.getData(), r = bU(e).from, o = bU(e).to;
                    r.each(function (e) {
                        qI(r, e, !0, t, n), qI(o, e, !1, t, n)
                    }), i.each(function (t) {
                        i.setItemLayout(t, [r.getItemLayout(t), o.getItemLayout(t)])
                    }), this.markerGroupMap.get(t.id).updateLayout()
                }
            }, this)
        }, n.prototype.renderSeries = function (t, e, n, i) {
            function r(e, n, r) {
                var o = e.getItemModel(n);
                qI(e, n, r, t, i);
                var a = o.getModel("itemStyle").getItemStyle();
                null == a.fill && (a.fill = qh(s, "color")), e.setItemVisual(n, {
                    symbolKeepAspect: o.get("symbolKeepAspect"),
                    symbolOffset: B(o.get("symbolOffset"), v[r ? 0 : 1]),
                    symbolRotate: B(o.get("symbolRotate", !0), y[r ? 0 : 1]),
                    symbolSize: B(o.get("symbolSize"), g[r ? 0 : 1]),
                    symbol: B(o.get("symbol", !0), f[r ? 0 : 1]),
                    style: a
                })
            }

            var o = t.coordinateSystem, a = t.id, s = t.getData(), l = this.markerGroupMap,
                u = l.get(a) || l.set(a, new cW);
            this.group.add(u.group);
            var h = KI(o, t, e), c = h.from, p = h.to, d = h.line;
            bU(e).from = c, bU(e).to = p, e.setData(d);
            var f = e.get("symbol"), g = e.get("symbolSize"), y = e.get("symbolRotate"), v = e.get("symbolOffset");
            M(f) || (f = [f, f]), M(g) || (g = [g, g]), M(y) || (y = [y, y]), M(v) || (v = [v, v]), h.from.each(function (t) {
                r(c, t, !0), r(p, t, !1)
            }), d.each(function (t) {
                var e = d.getItemModel(t).getModel("lineStyle").getLineStyle();
                d.setItemLayout(t, [c.getItemLayout(t), p.getItemLayout(t)]), null == e.stroke && (e.stroke = c.getItemVisual(t, "style").fill), d.setItemVisual(t, {
                    fromSymbolKeepAspect: c.getItemVisual(t, "symbolKeepAspect"),
                    fromSymbolOffset: c.getItemVisual(t, "symbolOffset"),
                    fromSymbolRotate: c.getItemVisual(t, "symbolRotate"),
                    fromSymbolSize: c.getItemVisual(t, "symbolSize"),
                    fromSymbol: c.getItemVisual(t, "symbol"),
                    toSymbolKeepAspect: p.getItemVisual(t, "symbolKeepAspect"),
                    toSymbolOffset: p.getItemVisual(t, "symbolOffset"),
                    toSymbolRotate: p.getItemVisual(t, "symbolRotate"),
                    toSymbolSize: p.getItemVisual(t, "symbolSize"),
                    toSymbol: p.getItemVisual(t, "symbol"),
                    style: e
                })
            }), u.updateData(d), h.line.eachItemGraphicEl(function (t) {
                t.traverse(function (t) {
                    tP(t).dataModel = e
                })
            }), this.markKeep(u), u.group.silent = e.get("silent") || t.get("silent")
        }, n.type = "markLine", n
    }(mU);
    df($I);
    var MU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.createMarkerModelFromSeries = function (t, e, i) {
            return new n(t, e, i)
        }, n.type = "markArea", n.defaultOption = {
            zlevel: 0,
            z: 1,
            tooltip: {trigger: "item"},
            animation: !1,
            label: {show: !0, position: "top"},
            itemStyle: {borderWidth: 0},
            emphasis: {label: {show: !0, position: "top"}}
        }, n
    }(fU), IU = ur(), TU = function (t, e, n, i) {
        var r = NI(t, i[0]), o = NI(t, i[1]), a = r.coord, s = o.coord;
        a[0] = N(a[0], -1 / 0), a[1] = N(a[1], -1 / 0), s[0] = N(s[0], 1 / 0), s[1] = N(s[1], 1 / 0);
        var l = u([{}, r, o]);
        return l.coord = [r.coord, o.coord], l.x0 = r.x, l.y0 = r.y, l.x1 = o.x, l.y1 = o.y, l
    }, CU = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]], AU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.updateTransform = function (t, e, n) {
            e.eachSeries(function (t) {
                var e = fU.getMarkerModelFromSeries(t, "markArea");
                if (e) {
                    var i = e.getData();
                    i.each(function (e) {
                        var r = v(CU, function (r) {
                            return eT(i, e, r, t, n)
                        });
                        i.setItemLayout(e, r);
                        var o = i.getItemGraphicEl(e);
                        o.setShape("points", r)
                    })
                }
            }, this)
        }, n.prototype.renderSeries = function (t, e, n, i) {
            var r = t.coordinateSystem, o = t.id, a = t.getData(), s = this.markerGroupMap,
                l = s.get(o) || s.set(o, {group: new sL});
            this.group.add(l.group), this.markKeep(l);
            var u = nT(r, t, e);
            e.setData(u), u.each(function (e) {
                var n = v(CU, function (n) {
                        return eT(u, e, n, t, i)
                    }), o = r.getAxis("x").scale, s = r.getAxis("y").scale, l = o.getExtent(), h = s.getExtent(),
                    c = [o.parse(u.get("x0", e)), o.parse(u.get("x1", e))],
                    p = [s.parse(u.get("y0", e)), s.parse(u.get("y1", e))];
                wi(c), wi(p);
                var d = !(l[0] > c[1] || l[1] < c[0] || h[0] > p[1] || h[1] < p[0]), f = !d;
                u.setItemLayout(e, {points: n, allClipped: f});
                var g = u.getItemModel(e).getModel("itemStyle").getItemStyle(), y = qh(a, "color");
                g.fill || (g.fill = y, "string" == typeof g.fill && (g.fill = fn(g.fill, .4))), g.stroke || (g.stroke = y), u.setItemVisual(e, "style", g)
            }), u.diff(IU(l).data).add(function (t) {
                var e = u.getItemLayout(t);
                if (!e.allClipped) {
                    var n = new KP({shape: {points: e.points}});
                    u.setItemGraphicEl(t, n), l.group.add(n)
                }
            }).update(function (t, n) {
                var i = IU(l).data.getItemGraphicEl(n), r = u.getItemLayout(t);
                r.allClipped ? i && l.group.remove(i) : (i ? us(i, {shape: {points: r.points}}, e, t) : i = new KP({shape: {points: r.points}}), u.setItemGraphicEl(t, i), l.group.add(i))
            }).remove(function (t) {
                var e = IU(l).data.getItemGraphicEl(t);
                l.group.remove(e)
            }).execute(), u.eachItemGraphicEl(function (t, n) {
                var i = u.getItemModel(n), r = u.getItemVisual(n, "style");
                t.useStyle(u.getItemVisual(n, "style")), ks(t, Ps(i), {
                    labelFetcher: e,
                    labelDataIndex: n,
                    defaultText: u.getName(n) || "",
                    inheritColor: "string" == typeof r.fill ? fn(r.fill, 1) : "#000"
                }), Ia(t, i), Sa(t), tP(t).dataModel = e
            }), IU(l).data = u, l.group.silent = e.get("silent") || t.get("silent")
        }, n.type = "markArea", n
    }(mU);
    df(iT);
    var DU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.layoutMode = "box", e
        }

        return e(n, t), n.prototype.init = function (t, e, n) {
            this.mergeDefaultAndTheme(t, n), this._initData()
        }, n.prototype.mergeOption = function () {
            t.prototype.mergeOption.apply(this, arguments), this._initData()
        }, n.prototype.setCurrentIndex = function (t) {
            null == t && (t = this.option.currentIndex);
            var e = this._data.count();
            this.option.loop ? t = (t % e + e) % e : (t >= e && (t = e - 1), 0 > t && (t = 0)), this.option.currentIndex = t
        }, n.prototype.getCurrentIndex = function () {
            return this.option.currentIndex
        }, n.prototype.isIndexMax = function () {
            return this.getCurrentIndex() >= this._data.count() - 1
        }, n.prototype.setPlayState = function (t) {
            this.option.autoPlay = !!t
        }, n.prototype.getPlayState = function () {
            return !!this.option.autoPlay
        }, n.prototype._initData = function () {
            var t, e = this.option, n = e.data || [], i = e.axisType, r = this._names = [];
            "category" === i ? (t = [], y(n, function (e, n) {
                var i, o = er(Xi(e), "");
                D(e) ? (i = s(e), i.value = n) : i = n, t.push(i), r.push(o)
            })) : t = n;
            var o = {category: "ordinal", time: "time", value: "number"}[i] || "number",
                a = this._data = new fV([{name: "value", type: o}], this);
            a.initData(t, r)
        }, n.prototype.getData = function () {
            return this._data
        }, n.prototype.getCategories = function () {
            return "category" === this.get("axisType") ? this._names.slice() : void 0
        }, n.type = "timeline", n.defaultOption = {
            zlevel: 0,
            z: 4,
            show: !0,
            axisType: "time",
            realtime: !0,
            left: "20%",
            top: null,
            right: "20%",
            bottom: 0,
            width: null,
            height: 40,
            padding: 5,
            controlPosition: "left",
            autoPlay: !1,
            rewind: !1,
            loop: !0,
            playInterval: 2e3,
            currentIndex: 0,
            itemStyle: {},
            label: {color: "#000"},
            data: []
        }, n
    }(gR), LU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "timeline.slider", n.defaultOption = Xs(DU.defaultOption, {
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            orient: "horizontal",
            inverse: !1,
            tooltip: {trigger: "item"},
            symbol: "circle",
            symbolSize: 12,
            lineStyle: {show: !0, width: 2, color: "#DAE1F5"},
            label: {position: "auto", show: !0, interval: "auto", rotate: 0, color: "#A4B1D7"},
            itemStyle: {color: "#A4B1D7", borderWidth: 1},
            checkpointStyle: {
                symbol: "circle",
                symbolSize: 15,
                color: "#316bf3",
                borderColor: "#fff",
                borderWidth: 2,
                shadowBlur: 2,
                shadowOffsetX: 1,
                shadowOffsetY: 1,
                shadowColor: "rgba(0, 0, 0, 0.3)",
                animation: !0,
                animationDuration: 300,
                animationEasing: "quinticInOut"
            },
            controlStyle: {
                show: !0,
                showPlayBtn: !0,
                showPrevBtn: !0,
                showNextBtn: !0,
                itemSize: 24,
                itemGap: 12,
                position: "left",
                playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",
                stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",
                nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",
                prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",
                prevBtnSize: 18,
                nextBtnSize: 18,
                color: "#A4B1D7",
                borderColor: "#A4B1D7",
                borderWidth: 1
            },
            emphasis: {
                label: {show: !0, color: "#6f778d"},
                itemStyle: {color: "#316BF3"},
                controlStyle: {color: "#316BF3", borderColor: "#316BF3", borderWidth: 2}
            },
            progress: {lineStyle: {color: "#316BF3"}, itemStyle: {color: "#316BF3"}, label: {color: "#6f778d"}},
            data: []
        }), n
    }(DU);
    f(LU, cz.prototype);
    var kU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "timeline", n
    }(Tz), PU = function (t) {
        function n(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.type = r || "value", o
        }

        return e(n, t), n.prototype.getLabelModel = function () {
            return this.model.getModel("label")
        }, n.prototype.isHorizontal = function () {
            return "horizontal" === this.model.get("orient")
        }, n
    }(tF), OU = Math.PI, RU = ur(), zU = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function (t, e) {
            this.api = e
        }, n.prototype.render = function (t, e, n) {
            if (this.model = t, this.api = n, this.ecModel = e, this.group.removeAll(), t.get("show", !0)) {
                var i = this._layout(t, n), r = this._createGroup("_mainGroup"), o = this._createGroup("_labelGroup"),
                    a = this._axis = this._createAxis(i, t);
                t.formatTooltip = function (t) {
                    var e = a.scale.getLabel({value: t});
                    return rh("nameValue", {noName: !0, value: e})
                }, y(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function (e) {
                    this["_render" + e](i, r, a, t)
                }, this), this._renderAxisLabel(i, o, a, t), this._position(i, t)
            }
            this._doPlayStop(), this._updateTicksStatus()
        }, n.prototype.remove = function () {
            this._clearTimer(), this.group.removeAll()
        }, n.prototype.dispose = function () {
            this._clearTimer()
        }, n.prototype._layout = function (t, e) {
            var n, i = t.get(["label", "position"]), r = t.get("orient"), o = oT(t, e);
            n = null == i || "auto" === i ? "horizontal" === r ? o.y + o.height / 2 < e.getHeight() / 2 ? "-" : "+" : o.x + o.width / 2 < e.getWidth() / 2 ? "+" : "-" : T(i) ? {
                horizontal: {
                    top: "-",
                    bottom: "+"
                }, vertical: {left: "-", right: "+"}
            }[r][i] : i;
            var a = {horizontal: "center", vertical: n >= 0 || "+" === n ? "left" : "right"},
                s = {horizontal: n >= 0 || "+" === n ? "top" : "bottom", vertical: "middle"},
                l = {horizontal: 0, vertical: OU / 2}, u = "vertical" === r ? o.height : o.width,
                h = t.getModel("controlStyle"), c = h.get("show", !0), p = c ? h.get("itemSize") : 0,
                d = c ? h.get("itemGap") : 0, f = p + d, g = t.get(["label", "rotate"]) || 0;
            g = g * OU / 180;
            var y, v, m, x = h.get("position", !0), _ = c && h.get("showPlayBtn", !0),
                b = c && h.get("showPrevBtn", !0), w = c && h.get("showNextBtn", !0), S = 0, M = u;
            "left" === x || "bottom" === x ? (_ && (y = [0, 0], S += f), b && (v = [S, 0], S += f), w && (m = [M - p, 0], M -= f)) : (_ && (y = [M - p, 0], M -= f), b && (v = [0, 0], S += f), w && (m = [M - p, 0], M -= f));
            var I = [S, M];
            return t.get("inverse") && I.reverse(), {
                viewRect: o,
                mainLength: u,
                orient: r,
                rotation: l[r],
                labelRotation: g,
                labelPosOpt: n,
                labelAlign: t.get(["label", "align"]) || a[r],
                labelBaseline: t.get(["label", "verticalAlign"]) || t.get(["label", "baseline"]) || s[r],
                playPosition: y,
                prevBtnPosition: v,
                nextBtnPosition: m,
                axisExtent: I,
                controlSize: p,
                controlGap: d
            }
        }, n.prototype._position = function (t) {
            function e(t) {
                t.originX = h[0][0] - t.x, t.originY = h[1][0] - t.y
            }

            function n(t) {
                return [[t.x, t.x + t.width], [t.y, t.y + t.height]]
            }

            function i(t, e, n, i, r) {
                t[i] += n[i][r] - e[i][r]
            }

            var r = this._mainGroup, o = this._labelGroup, a = t.viewRect;
            if ("vertical" === t.orient) {
                var s = Gn(), l = a.x, u = a.y + a.height;
                Yn(s, s, [-l, -u]), Zn(s, s, -OU / 2), Yn(s, s, [l, u]), a = a.clone(), a.applyTransform(s)
            }
            var h = n(a), c = n(r.getBoundingRect()), p = n(o.getBoundingRect()), d = [r.x, r.y], f = [o.x, o.y];
            f[0] = d[0] = h[0][0];
            var g = t.labelPosOpt;
            if (null == g || T(g)) {
                var y = "+" === g ? 0 : 1;
                i(d, c, h, 1, y), i(f, p, h, 1, 1 - y)
            } else {
                var y = g >= 0 ? 0 : 1;
                i(d, c, h, 1, y), f[1] = d[1] + g
            }
            r.setPosition(d), o.setPosition(f), r.rotation = o.rotation = t.rotation, e(r), e(o)
        }, n.prototype._createAxis = function (t, e) {
            var n = e.getData(), i = e.get("axisType"), r = rT(e, i);
            r.getTicks = function () {
                return n.mapArray(["value"], function (t) {
                    return {value: t}
                })
            };
            var o = n.getDataExtent("value");
            r.setExtent(o[0], o[1]), r.niceTicks();
            var a = new PU("value", r, t.axisExtent, i);
            return a.model = e, a
        }, n.prototype._createGroup = function (t) {
            var e = this[t] = new sL;
            return this.group.add(e), e
        }, n.prototype._renderAxisLine = function (t, e, n, i) {
            var r = n.getExtent();
            if (i.get(["lineStyle", "show"])) {
                var o = new eO({
                    shape: {x1: r[0], y1: 0, x2: r[1], y2: 0},
                    style: h({lineCap: "round"}, i.getModel("lineStyle").getLineStyle()),
                    silent: !0,
                    z2: 1
                });
                e.add(o);
                var a = this._progressLine = new eO({
                    shape: {
                        x1: r[0],
                        x2: this._currentPointer ? this._currentPointer.x : r[0],
                        y1: 0,
                        y2: 0
                    },
                    style: c({
                        lineCap: "round",
                        lineWidth: o.style.lineWidth
                    }, i.getModel(["progress", "lineStyle"]).getLineStyle()),
                    silent: !0,
                    z2: 1
                });
                e.add(a)
            }
        }, n.prototype._renderAxisTick = function (t, e, n, i) {
            var r = this, o = i.getData(), a = n.scale.getTicks();
            this._tickSymbols = [], y(a, function (t) {
                var a = n.dataToCoord(t.value), s = o.getItemModel(t.value), l = s.getModel("itemStyle"),
                    u = s.getModel(["emphasis", "itemStyle"]), h = s.getModel(["progress", "itemStyle"]),
                    c = {x: a, y: 0, onclick: xA(r._changeTimeline, r, t.value)}, p = sT(s, l, e, c);
                p.ensureState("emphasis").style = u.getItemStyle(), p.ensureState("progress").style = h.getItemStyle(), Sa(p);
                var d = tP(p);
                s.get("tooltip") ? (d.dataIndex = t.value, d.dataModel = i) : d.dataIndex = d.dataModel = null, r._tickSymbols.push(p)
            })
        }, n.prototype._renderAxisLabel = function (t, e, n, i) {
            var r = this, o = n.getLabelModel();
            if (o.get("show")) {
                var a = i.getData(), s = n.getViewLabels();
                this._tickLabels = [], y(s, function (i) {
                    var o = i.tickValue, s = a.getItemModel(o), l = s.getModel("label"),
                        u = s.getModel(["emphasis", "label"]), h = s.getModel(["progress", "label"]),
                        c = n.dataToCoord(i.tickValue), p = new $k({
                            x: c,
                            y: 0,
                            rotation: t.labelRotation - t.rotation,
                            onclick: xA(r._changeTimeline, r, o),
                            silent: !1,
                            style: Os(l, {text: i.formattedLabel, align: t.labelAlign, verticalAlign: t.labelBaseline})
                        });
                    p.ensureState("emphasis").style = Os(u), p.ensureState("progress").style = Os(h), e.add(p), Sa(p), RU(p).dataIndex = o, r._tickLabels.push(p)
                })
            }
        }, n.prototype._renderControl = function (t, e, n, i) {
            function r(t, n, r, u) {
                if (t) {
                    var h = ri(B(i.get(["controlStyle", n + "BtnSize"]), o), o), c = [0, -h / 2, h, h],
                        p = aT(i, n + "Icon", c, {
                            x: t[0],
                            y: t[1],
                            originX: o / 2,
                            originY: 0,
                            rotation: u ? -a : 0,
                            rectHover: !0,
                            style: s,
                            onclick: r
                        });
                    p.ensureState("emphasis").style = l, e.add(p), Sa(p)
                }
            }

            var o = t.controlSize, a = t.rotation, s = i.getModel("controlStyle").getItemStyle(),
                l = i.getModel(["emphasis", "controlStyle"]).getItemStyle(), u = i.getPlayState(),
                h = i.get("inverse", !0);
            r(t.nextBtnPosition, "next", xA(this._changeTimeline, this, h ? "-" : "+")), r(t.prevBtnPosition, "prev", xA(this._changeTimeline, this, h ? "+" : "-")), r(t.playPosition, u ? "stop" : "play", xA(this._handlePlayClick, this, !u), !0)
        }, n.prototype._renderCurrentPointer = function (t, e, n, i) {
            var r = i.getData(), o = i.getCurrentIndex(), a = r.getItemModel(o).getModel("checkpointStyle"), s = this,
                l = {
                    onCreate: function (t) {
                        t.draggable = !0, t.drift = xA(s._handlePointerDrag, s), t.ondragend = xA(s._handlePointerDragend, s), lT(t, s._progressLine, o, n, i, !0)
                    }, onUpdate: function (t) {
                        lT(t, s._progressLine, o, n, i)
                    }
                };
            this._currentPointer = sT(a, a, this._mainGroup, {}, this._currentPointer, l)
        }, n.prototype._handlePlayClick = function (t) {
            this._clearTimer(), this.api.dispatchAction({type: "timelinePlayChange", playState: t, from: this.uid})
        }, n.prototype._handlePointerDrag = function (t, e, n) {
            this._clearTimer(), this._pointerChangeTimeline([n.offsetX, n.offsetY])
        }, n.prototype._handlePointerDragend = function (t) {
            this._pointerChangeTimeline([t.offsetX, t.offsetY], !0)
        }, n.prototype._pointerChangeTimeline = function (t, e) {
            var n = this._toAxisCoord(t)[0], i = this._axis, r = wi(i.getExtent().slice());
            n > r[1] && (n = r[1]), n < r[0] && (n = r[0]), this._currentPointer.x = n, this._currentPointer.markRedraw(), this._progressLine.shape.x2 = n, this._progressLine.dirty();
            var o = this._findNearestTick(n), a = this.model;
            (e || o !== a.getCurrentIndex() && a.get("realtime")) && this._changeTimeline(o)
        }, n.prototype._doPlayStop = function () {
            var t = this;
            this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(function () {
                var e = t.model;
                t._changeTimeline(e.getCurrentIndex() + (e.get("rewind", !0) ? -1 : 1))
            }, this.model.get("playInterval")))
        }, n.prototype._toAxisCoord = function (t) {
            var e = this._mainGroup.getLocalTransform();
            return ys(t, e, !0)
        }, n.prototype._findNearestTick = function (t) {
            var e, n = this.model.getData(), i = 1 / 0, r = this._axis;
            return n.each(["value"], function (n, o) {
                var a = r.dataToCoord(n), s = Math.abs(a - t);
                i > s && (i = s, e = o)
            }), e
        }, n.prototype._clearTimer = function () {
            this._timer && (clearTimeout(this._timer), this._timer = null)
        }, n.prototype._changeTimeline = function (t) {
            var e = this.model.getCurrentIndex();
            "+" === t ? t = e + 1 : "-" === t && (t = e - 1), this.api.dispatchAction({
                type: "timelineChange",
                currentIndex: t,
                from: this.uid
            })
        }, n.prototype._updateTicksStatus = function () {
            var t = this.model.getCurrentIndex(), e = this._tickSymbols, n = this._tickLabels;
            if (e) for (var i = 0; i < e.length; i++) e && e[i] && e[i].toggleState("progress", t > i);
            if (n) for (var i = 0; i < n.length; i++) n && n[i] && n[i].toggleState("progress", RU(n[i]).dataIndex <= t)
        }, n.type = "timeline.slider", n
    }(kU);
    df(fT);
    var EU = ["x", "y", "radius", "angle", "single"], NU = ["cartesian2d", "polar", "singleAxis"], BU = function () {
            function t() {
                this.indexList = [], this.indexMap = []
            }

            return t.prototype.add = function (t) {
                this.indexMap[t] || (this.indexList.push(t), this.indexMap[t] = !0)
            }, t
        }(), VU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._autoThrottle = !0, e._noTarget = !0, e._rangePropMode = ["percent", "percent"], e
            }

            return e(n, t), n.prototype.init = function (t, e, n) {
                var i = xT(t);
                this.settledOption = i, this.mergeDefaultAndTheme(t, n), this._doInit(i)
            }, n.prototype.mergeOption = function (t) {
                var e = xT(t);
                l(this.option, t, !0), l(this.settledOption, e, !0), this._doInit(e)
            }, n.prototype._doInit = function (t) {
                var e = this.option;
                this._setDefaultThrottle(t), this._updateRangeUse(t);
                var n = this.settledOption;
                y([["start", "startValue"], ["end", "endValue"]], function (t, i) {
                    "value" === this._rangePropMode[i] && (e[t[0]] = n[t[0]] = null)
                }, this), this._resetTarget()
            }, n.prototype._resetTarget = function () {
                var t = this.get("orient", !0), e = this._targetAxisInfoMap = Z(), n = this._fillSpecifiedTargetAxis(e);
                n ? this._orient = t || this._makeAutoOrientByTargetAxis() : (this._orient = t || "horizontal", this._fillAutoTargetAxisByOrient(e, this._orient)), this._noTarget = !0, e.each(function (t) {
                    t.indexList.length && (this._noTarget = !1)
                }, this)
            }, n.prototype._fillSpecifiedTargetAxis = function (t) {
                var e = !1;
                return y(EU, function (n) {
                    var i = this.getReferringComponents(yT(n), SL);
                    if (i.specified) {
                        e = !0;
                        var r = new BU;
                        y(i.models, function (t) {
                            r.add(t.componentIndex)
                        }), t.set(n, r)
                    }
                }, this), e
            }, n.prototype._fillAutoTargetAxisByOrient = function (t, e) {
                function n(e, n) {
                    var i = e[0];
                    if (i) {
                        var o = new BU;
                        if (o.add(i.componentIndex), t.set(n, o), r = !1, "x" === n || "y" === n) {
                            var a = i.getReferringComponents("grid", wL).models[0];
                            a && y(e, function (t) {
                                i.componentIndex !== t.componentIndex && a === t.getReferringComponents("grid", wL).models[0] && o.add(t.componentIndex)
                            })
                        }
                    }
                }

                var i = this.ecModel, r = !0;
                if (r) {
                    var o = "vertical" === e ? "y" : "x", a = i.findComponents({mainType: o + "Axis"});
                    n(a, o)
                }
                if (r) {
                    var a = i.findComponents({
                        mainType: "singleAxis", filter: function (t) {
                            return t.get("orient", !0) === e
                        }
                    });
                    n(a, "single")
                }
                r && y(EU, function (e) {
                    if (r) {
                        var n = i.findComponents({
                            mainType: yT(e), filter: function (t) {
                                return "category" === t.get("type", !0)
                            }
                        });
                        if (n[0]) {
                            var o = new BU;
                            o.add(n[0].componentIndex), t.set(e, o), r = !1
                        }
                    }
                }, this)
            }, n.prototype._makeAutoOrientByTargetAxis = function () {
                var t;
                return this.eachTargetAxis(function (e) {
                    !t && (t = e)
                }, this), "y" === t ? "vertical" : "horizontal"
            }, n.prototype._setDefaultThrottle = function (t) {
                if (t.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) {
                    var e = this.ecModel.option;
                    this.option.throttle = e.animation && e.animationDurationUpdate > 0 ? 100 : 20
                }
            }, n.prototype._updateRangeUse = function (t) {
                var e = this._rangePropMode, n = this.get("rangeMode");
                y([["start", "startValue"], ["end", "endValue"]], function (i, r) {
                    var o = null != t[i[0]], a = null != t[i[1]];
                    o && !a ? e[r] = "percent" : !o && a ? e[r] = "value" : n ? e[r] = n[r] : o && (e[r] = "percent")
                })
            }, n.prototype.noTarget = function () {
                return this._noTarget
            }, n.prototype.getFirstTargetAxisModel = function () {
                var t;
                return this.eachTargetAxis(function (e, n) {
                    null == t && (t = this.ecModel.getComponent(yT(e), n))
                }, this), t
            }, n.prototype.eachTargetAxis = function (t, e) {
                this._targetAxisInfoMap.each(function (n, i) {
                    y(n.indexList, function (n) {
                        t.call(e, i, n)
                    })
                })
            }, n.prototype.getAxisProxy = function (t, e) {
                var n = this.getAxisModel(t, e);
                return n ? n.__dzAxisProxy : void 0
            }, n.prototype.getAxisModel = function (t, e) {
                var n = this._targetAxisInfoMap.get(t);
                return n && n.indexMap[e] ? this.ecModel.getComponent(yT(t), e) : void 0
            }, n.prototype.setRawRange = function (t) {
                var e = this.option, n = this.settledOption;
                y([["start", "startValue"], ["end", "endValue"]], function (i) {
                    (null != t[i[0]] || null != t[i[1]]) && (e[i[0]] = n[i[0]] = t[i[0]], e[i[1]] = n[i[1]] = t[i[1]])
                }, this), this._updateRangeUse(t)
            }, n.prototype.setCalculatedRange = function (t) {
                var e = this.option;
                y(["start", "startValue", "end", "endValue"], function (n) {
                    e[n] = t[n]
                })
            }, n.prototype.getPercentRange = function () {
                var t = this.findRepresentativeAxisProxy();
                return t ? t.getDataPercentWindow() : void 0
            }, n.prototype.getValueRange = function (t, e) {
                if (null != t || null != e) return this.getAxisProxy(t, e).getDataValueWindow();
                var n = this.findRepresentativeAxisProxy();
                return n ? n.getDataValueWindow() : void 0
            }, n.prototype.findRepresentativeAxisProxy = function (t) {
                if (t) return t.__dzAxisProxy;
                for (var e, n = this._targetAxisInfoMap.keys(), i = 0; i < n.length; i++) for (var r = n[i], o = this._targetAxisInfoMap.get(r), a = 0; a < o.indexList.length; a++) {
                    var s = this.getAxisProxy(r, o.indexList[a]);
                    if (s.hostedBy(this)) return s;
                    e || (e = s)
                }
                return e
            }, n.prototype.getRangePropMode = function () {
                return this._rangePropMode.slice()
            }, n.prototype.getOrient = function () {
                return this._orient
            }, n.type = "dataZoom", n.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"], n.defaultOption = {
                zlevel: 0,
                z: 4,
                filterMode: "filter",
                start: 0,
                end: 100
            }, n
        }(gR), FU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "dataZoom.inside", n.defaultOption = Xs(VU.defaultOption, {
                disabled: !1,
                zoomLock: !1,
                zoomOnMouseWheel: !0,
                moveOnMouseMove: !0,
                moveOnMouseWheel: !1,
                preventDefaultMouseMove: !0
            }), n
        }(VU), GU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.render = function (t, e, n) {
                this.dataZoomModel = t, this.ecModel = e, this.api = n
            }, n.type = "dataZoom", n
        }(Tz), HU = ur(), WU = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = "dataZoom.inside", e
            }

            return e(n, t), n.prototype.render = function (e, n, i) {
                return t.prototype.render.apply(this, arguments), e.noTarget() ? void this._clear() : (this.range = e.getPercentRange(), void _T(i, e, {
                    pan: xA(XU.pan, this),
                    zoom: xA(XU.zoom, this),
                    scrollMove: xA(XU.scrollMove, this)
                }))
            }, n.prototype.dispose = function () {
                this._clear(), t.prototype.dispose.apply(this, arguments)
            }, n.prototype._clear = function () {
                bT(this.api, this.dataZoomModel), this.range = null
            }, n.type = "dataZoom.inside", n
        }(GU), XU = {
            zoom: function (t, e, n, i) {
                var r = this.range, o = r.slice(), a = t.axisModels[0];
                if (a) {
                    var s = YU[e](null, [i.originX, i.originY], a, n, t),
                        l = (s.signal > 0 ? s.pixelStart + s.pixelLength - s.pixel : s.pixel - s.pixelStart) / s.pixelLength * (o[1] - o[0]) + o[0],
                        u = Math.max(1 / i.scale, 0);
                    o[0] = (o[0] - l) * u + l, o[1] = (o[1] - l) * u + l;
                    var h = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
                    return qx(0, o, [0, 100], 0, h.minSpan, h.maxSpan), this.range = o, r[0] !== o[0] || r[1] !== o[1] ? o : void 0
                }
            }, pan: AT(function (t, e, n, i, r, o) {
                var a = YU[i]([o.oldX, o.oldY], [o.newX, o.newY], e, r, n);
                return a.signal * (t[1] - t[0]) * a.pixel / a.pixelLength
            }), scrollMove: AT(function (t, e, n, i, r, o) {
                var a = YU[i]([0, 0], [o.scrollDelta, o.scrollDelta], e, r, n);
                return a.signal * (t[1] - t[0]) * o.scrollDelta
            })
        }, YU = {
            grid: function (t, e, n, i, r) {
                var o = n.axis, a = {}, s = r.model.coordinateSystem.getRect();
                return t = t || [0, 0], "x" === o.dim ? (a.pixel = e[0] - t[0], a.pixelLength = s.width, a.pixelStart = s.x, a.signal = o.inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a.pixelLength = s.height, a.pixelStart = s.y, a.signal = o.inverse ? -1 : 1), a
            }, polar: function (t, e, n, i, r) {
                var o = n.axis, a = {}, s = r.model.coordinateSystem, l = s.getRadiusAxis().getExtent(),
                    u = s.getAngleAxis().getExtent();
                return t = t ? s.pointToCoord(t) : [0, 0], e = s.pointToCoord(e), "radiusAxis" === n.mainType ? (a.pixel = e[0] - t[0], a.pixelLength = l[1] - l[0], a.pixelStart = l[0], a.signal = o.inverse ? 1 : -1) : (a.pixel = e[1] - t[1], a.pixelLength = u[1] - u[0], a.pixelStart = u[0], a.signal = o.inverse ? -1 : 1), a
            }, singleAxis: function (t, e, n, i, r) {
                var o = n.axis, a = r.model.coordinateSystem.getRect(), s = {};
                return t = t || [0, 0], "horizontal" === o.orient ? (s.pixel = e[0] - t[0], s.pixelLength = a.width, s.pixelStart = a.x, s.signal = o.inverse ? 1 : -1) : (s.pixel = e[1] - t[1], s.pixelLength = a.height, s.pixelStart = a.y, s.signal = o.inverse ? -1 : 1), s
            }
        }, ZU = y, UU = wi, jU = function () {
            function t(t, e, n, i) {
                this._dimName = t, this._axisIndex = e, this.ecModel = i, this._dataZoomModel = n
            }

            return t.prototype.hostedBy = function (t) {
                return this._dataZoomModel === t
            }, t.prototype.getDataValueWindow = function () {
                return this._valueWindow.slice()
            }, t.prototype.getDataPercentWindow = function () {
                return this._percentWindow.slice()
            }, t.prototype.getTargetSeriesModels = function () {
                var t = [];
                return this.ecModel.eachSeries(function (e) {
                    if (gT(e)) {
                        var n = yT(this._dimName), i = e.getReferringComponents(n, wL).models[0];
                        i && this._axisIndex === i.componentIndex && t.push(e)
                    }
                }, this), t
            }, t.prototype.getAxisModel = function () {
                return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex)
            }, t.prototype.getMinMaxSpan = function () {
                return s(this._minMaxSpan)
            }, t.prototype.calculateDataWindow = function (t) {
                function e(t, e, n, i, r) {
                    var a = r ? "Span" : "ValueSpan";
                    qx(0, t, n, "all", h["min" + a], h["max" + a]);
                    for (var s = 0; 2 > s; s++) e[s] = xi(t[s], n, i, !0), r && (e[s] = o.parse(e[s]))
                }

                var n, i = this._dataExtent, r = this.getAxisModel(), o = r.axis.scale,
                    a = this._dataZoomModel.getRangePropMode(), s = [0, 100], l = [], u = [];
                ZU(["start", "end"], function (e, r) {
                    var h = t[e], c = t[e + "Value"];
                    "percent" === a[r] ? (null == h && (h = s[r]), c = o.parse(xi(h, s, i))) : (n = !0, c = null == c ? i[r] : o.parse(c), h = xi(c, i, s)), u[r] = c, l[r] = h
                }), UU(u), UU(l);
                var h = this._minMaxSpan;
                return n ? e(u, l, i, s, !1) : e(l, u, s, i, !0), {valueWindow: u, percentWindow: l}
            }, t.prototype.reset = function (t) {
                if (t === this._dataZoomModel) {
                    var e = this.getTargetSeriesModels();
                    this._dataExtent = DT(this, this._dimName, e), this._updateMinMaxSpan();
                    var n = this.calculateDataWindow(t.settledOption);
                    this._valueWindow = n.valueWindow, this._percentWindow = n.percentWindow, this._setAxisModel()
                }
            }, t.prototype.filterData = function (t) {
                function e(t) {
                    return t >= o[0] && t <= o[1]
                }

                if (t === this._dataZoomModel) {
                    var n = this._dimName, i = this.getTargetSeriesModels(), r = t.get("filterMode"), o = this._valueWindow;
                    "none" !== r && ZU(i, function (t) {
                        var i = t.getData(), a = i.mapDimensionsAll(n);
                        a.length && ("weakFilter" === r ? i.filterSelf(function (t) {
                            for (var e, n, r, s = 0; s < a.length; s++) {
                                var l = i.get(a[s], t), u = !isNaN(l), h = l < o[0], c = l > o[1];
                                if (u && !h && !c) return !0;
                                u && (r = !0), h && (e = !0), c && (n = !0)
                            }
                            return r && e && n
                        }) : ZU(a, function (n) {
                            if ("empty" === r) t.setData(i = i.map(n, function (t) {
                                return e(t) ? t : 0 / 0
                            })); else {
                                var a = {};
                                a[n] = o, i.selectRange(a)
                            }
                        }), ZU(a, function (t) {
                            i.setApproximateExtent(o, t)
                        }))
                    })
                }
            }, t.prototype._updateMinMaxSpan = function () {
                var t = this._minMaxSpan = {}, e = this._dataZoomModel, n = this._dataExtent;
                ZU(["min", "max"], function (i) {
                    var r = e.get(i + "Span"), o = e.get(i + "ValueSpan");
                    null != o && (o = this.getAxisModel().axis.scale.parse(o)), null != o ? r = xi(n[0] + o, n, [0, 100], !0) : null != r && (o = xi(r, [0, 100], n, !0) - n[0]), t[i + "Span"] = r, t[i + "ValueSpan"] = o
                }, this)
            }, t.prototype._setAxisModel = function () {
                var t = this.getAxisModel(), e = this._percentWindow, n = this._valueWindow;
                if (e) {
                    var i = Ii(n, [0, 500]);
                    i = Math.min(i, 20);
                    var r = t.axis.scale.rawExtentInfo;
                    0 !== e[0] && r.setDeterminedMinMax("min", +n[0].toFixed(i)), 100 !== e[1] && r.setDeterminedMinMax("max", +n[1].toFixed(i)), r.freeze()
                }
            }, t
        }(), qU = {
            getTargetSeries: function (t) {
                function e(e) {
                    t.eachComponent("dataZoom", function (n) {
                        n.eachTargetAxis(function (i, r) {
                            var o = t.getComponent(yT(i), r);
                            e(i, r, o, n)
                        })
                    })
                }

                e(function (t, e, n) {
                    n.__dzAxisProxy = null
                });
                var n = [];
                e(function (e, i, r, o) {
                    r.__dzAxisProxy || (r.__dzAxisProxy = new jU(e, i, o, t), n.push(r.__dzAxisProxy))
                });
                var i = Z();
                return y(n, function (t) {
                    y(t.getTargetSeriesModels(), function (t) {
                        i.set(t.uid, t)
                    })
                }), i
            }, overallReset: function (t, e) {
                t.eachComponent("dataZoom", function (t) {
                    t.eachTargetAxis(function (e, n) {
                        t.getAxisProxy(e, n).reset(t)
                    }), t.eachTargetAxis(function (n, i) {
                        t.getAxisProxy(n, i).filterData(t, e)
                    })
                }), t.eachComponent("dataZoom", function (t) {
                    var e = t.findRepresentativeAxisProxy();
                    if (e) {
                        var n = e.getDataPercentWindow(), i = e.getDataValueWindow();
                        t.setCalculatedRange({start: n[0], end: n[1], startValue: i[0], endValue: i[1]})
                    }
                })
            }
        }, KU = !1, $U = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.type = "dataZoom.slider", n.layoutMode = "box", n.defaultOption = Xs(VU.defaultOption, {
                show: !0,
                right: "ph",
                top: "ph",
                width: "ph",
                height: "ph",
                left: null,
                bottom: null,
                borderColor: "#d2dbee",
                borderRadius: 3,
                backgroundColor: "rgba(47,69,84,0)",
                dataBackground: {lineStyle: {color: "#d2dbee", width: .5}, areaStyle: {color: "#d2dbee", opacity: .2}},
                selectedDataBackground: {
                    lineStyle: {color: "#8fb0f7", width: .5},
                    areaStyle: {color: "#8fb0f7", opacity: .2}
                },
                fillerColor: "rgba(135,175,274,0.2)",
                handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",
                handleSize: "100%",
                handleStyle: {color: "#fff", borderColor: "#ACB8D1"},
                moveHandleSize: 7,
                moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",
                moveHandleStyle: {color: "#D2DBEE", opacity: .7},
                showDetail: !0,
                showDataShadow: "auto",
                realtime: !0,
                zoomLock: !1,
                textStyle: {color: "#6E7079"},
                brushSelect: !0,
                brushStyle: {color: "rgba(135,175,274,0.15)"},
                emphasis: {handleStyle: {borderColor: "#8FB0F7"}, moveHandleStyle: {color: "#8FB0F7"}}
            }), n
        }(VU), JU = Uk, QU = 7, tj = 1, ej = 30, nj = 7, ij = "horizontal", rj = "vertical", oj = 5,
        aj = ["line", "bar", "candlestick", "scatter"], sj = {easing: "cubicOut", duration: 100}, lj = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._displayables = {}, e
            }

            return e(n, t), n.prototype.init = function (t, e) {
                this.api = e, this._onBrush = xA(this._onBrush, this), this._onBrushEnd = xA(this._onBrushEnd, this)
            }, n.prototype.render = function (e, n, i, r) {
                return t.prototype.render.apply(this, arguments), Oh(this, "_dispatchZoomAction", e.get("throttle"), "fixRate"), this._orient = e.getOrient(), e.get("show") === !1 ? void this.group.removeAll() : e.noTarget() ? (this._clear(), void this.group.removeAll()) : (r && "dataZoom" === r.type && r.from === this.uid || this._buildView(), void this._updateView())
            }, n.prototype.dispose = function () {
                this._clear(), t.prototype.dispose.apply(this, arguments)
            }, n.prototype._clear = function () {
                Rh(this, "_dispatchZoomAction");
                var t = this.api.getZr();
                t.off("mousemove", this._onBrush), t.off("mouseup", this._onBrushEnd)
            }, n.prototype._buildView = function () {
                var t = this.group;
                t.removeAll(), this._brushing = !1, this._displayables.brushRect = null, this._resetLocation(), this._resetInterval();
                var e = this._displayables.sliderGroup = new sL;
                this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(e), this._positionGroup()
            }, n.prototype._resetLocation = function () {
                var t = this.dataZoomModel, e = this.api, n = t.get("brushSelect"), i = n ? nj : 0,
                    r = this._findCoordRect(), o = {width: e.getWidth(), height: e.getHeight()}, a = this._orient === ij ? {
                        right: o.width - r.x - r.width,
                        top: o.height - ej - QU - i,
                        width: r.width,
                        height: ej
                    } : {right: QU, top: r.y, width: ej, height: r.height}, s = El(t.option);
                y(["right", "top", "width", "height"], function (t) {
                    "ph" === s[t] && (s[t] = a[t])
                });
                var l = kl(s, o);
                this._location = {
                    x: l.x,
                    y: l.y
                }, this._size = [l.width, l.height], this._orient === rj && this._size.reverse()
            }, n.prototype._positionGroup = function () {
                var t = this.group, e = this._location, n = this._orient, i = this.dataZoomModel.getFirstTargetAxisModel(),
                    r = i && i.get("inverse"), o = this._displayables.sliderGroup,
                    a = (this._dataShadowInfo || {}).otherAxisInverse;
                o.attr(n !== ij || r ? n === ij && r ? {
                    scaleY: a ? 1 : -1,
                    scaleX: -1
                } : n !== rj || r ? {scaleY: a ? -1 : 1, scaleX: -1, rotation: Math.PI / 2} : {
                    scaleY: a ? -1 : 1,
                    scaleX: 1,
                    rotation: Math.PI / 2
                } : {scaleY: a ? 1 : -1, scaleX: 1});
                var s = t.getBoundingRect([o]);
                t.x = e.x - s.x, t.y = e.y - s.y, t.markRedraw()
            }, n.prototype._getViewExtent = function () {
                return [0, this._size[0]]
            }, n.prototype._renderBackground = function () {
                var t = this.dataZoomModel, e = this._size, n = this._displayables.sliderGroup, i = t.get("brushSelect");
                n.add(new JU({
                    silent: !0,
                    shape: {x: 0, y: 0, width: e[0], height: e[1]},
                    style: {fill: t.get("backgroundColor")},
                    z2: -40
                }));
                var r = new JU({
                    shape: {x: 0, y: 0, width: e[0], height: e[1]},
                    style: {fill: "transparent"},
                    z2: 0,
                    onclick: xA(this._onClickPanel, this)
                }), o = this.api.getZr();
                i ? (r.on("mousedown", this._onBrushStart, this), r.cursor = "crosshair", o.on("mousemove", this._onBrush), o.on("mouseup", this._onBrushEnd)) : (o.off("mousemove", this._onBrush), o.off("mouseup", this._onBrushEnd)), n.add(r)
            }, n.prototype._renderDataShadow = function () {
                function t(t) {
                    var e = y.getModel(t ? "selectedDataBackground" : "dataBackground"), n = new sL, i = new KP({
                        shape: {points: c},
                        segmentIgnoreThreshold: 1,
                        style: e.getModel("areaStyle").getAreaStyle(),
                        silent: !0,
                        z2: -20
                    }), r = new JP({
                        shape: {points: p},
                        segmentIgnoreThreshold: 1,
                        style: e.getModel("lineStyle").getLineStyle(),
                        silent: !0,
                        z2: -19
                    });
                    return n.add(i), n.add(r), n
                }

                var e = this._dataShadowInfo = this._prepareDataShadowInfo();
                if (this._displayables.dataShadowSegs = [], e) {
                    var n = this._size, i = e.series, r = i.getRawData(),
                        o = i.getShadowDim ? i.getShadowDim() : e.otherDim;
                    if (null != o) {
                        var a = r.getDataExtent(o), s = .3 * (a[1] - a[0]);
                        a = [a[0] - s, a[1] + s];
                        var l, u = [0, n[1]], h = [0, n[0]], c = [[n[0], 0], [0, 0]], p = [], d = h[1] / (r.count() - 1),
                            f = 0, g = Math.round(r.count() / n[0]);
                        r.each([o], function (t, e) {
                            if (g > 0 && e % g) return void (f += d);
                            var n = null == t || isNaN(t) || "" === t, i = n ? 0 : xi(t, a, u, !0);
                            n && !l && e ? (c.push([c[c.length - 1][0], 0]), p.push([p[p.length - 1][0], 0])) : !n && l && (c.push([f, 0]), p.push([f, 0])), c.push([f, i]), p.push([f, i]), f += d, l = n
                        });
                        for (var y = this.dataZoomModel, v = 0; 3 > v; v++) {
                            var m = t(1 === v);
                            this._displayables.sliderGroup.add(m), this._displayables.dataShadowSegs.push(m)
                        }
                    }
                }
            }, n.prototype._prepareDataShadowInfo = function () {
                var t = this.dataZoomModel, e = t.get("showDataShadow");
                if (e !== !1) {
                    var n, i = this.ecModel;
                    return t.eachTargetAxis(function (r, o) {
                        var a = t.getAxisProxy(r, o).getTargetSeriesModels();
                        y(a, function (t) {
                            if (!(n || e !== !0 && p(aj, t.get("type")) < 0)) {
                                var a, s = i.getComponent(yT(r), o).axis, l = OT(r), u = t.coordinateSystem;
                                null != l && u.getOtherAxis && (a = u.getOtherAxis(s).inverse), l = t.getData().mapDimension(l), n = {
                                    thisAxis: s,
                                    series: t,
                                    thisDim: r,
                                    otherDim: l,
                                    otherAxisInverse: a
                                }
                            }
                        }, this)
                    }, this), n
                }
            }, n.prototype._renderHandle = function () {
                var t = this.group, e = this._displayables, n = e.handles = [null, null], i = e.handleLabels = [null, null],
                    r = this._displayables.sliderGroup, o = this._size, a = this.dataZoomModel, s = this.api,
                    l = a.get("borderRadius") || 0, u = a.get("brushSelect"), h = e.filler = new JU({
                        silent: u,
                        style: {fill: a.get("fillerColor")},
                        textConfig: {position: "inside"}
                    });
                r.add(h), r.add(new JU({
                    silent: !0,
                    subPixelOptimize: !0,
                    shape: {x: 0, y: 0, width: o[0], height: o[1], r: l},
                    style: {
                        stroke: a.get("dataBackgroundColor") || a.get("borderColor"),
                        lineWidth: tj,
                        fill: "rgba(0,0,0,0)"
                    }
                })), y([0, 1], function (e) {
                    var o = a.get("handleIcon");
                    !AE[o] && o.indexOf("path://") < 0 && o.indexOf("image://") < 0 && (o = "path://" + o);
                    var s = Sc(o, -1, 0, 2, 2, null, !0);
                    s.attr({
                        cursor: RT(this._orient),
                        draggable: !0,
                        drift: xA(this._onDragMove, this, e),
                        ondragend: xA(this._onDragEnd, this),
                        onmouseover: xA(this._showDataInfo, this, !0),
                        onmouseout: xA(this._showDataInfo, this, !1),
                        z2: 5
                    });
                    var l = s.getBoundingRect(), u = a.get("handleSize");
                    this._handleHeight = _i(u, this._size[1]), this._handleWidth = l.width / l.height * this._handleHeight, s.setStyle(a.getModel("handleStyle").getItemStyle()), s.style.strokeNoScale = !0, s.rectHover = !0, s.ensureState("emphasis").style = a.getModel(["emphasis", "handleStyle"]).getItemStyle(), Sa(s);
                    var h = a.get("handleColor");
                    null != h && (s.style.fill = h), r.add(n[e] = s);
                    var c = a.getModel("textStyle");
                    t.add(i[e] = new $k({
                        silent: !0,
                        invisible: !0,
                        style: Os(c, {
                            x: 0,
                            y: 0,
                            text: "",
                            verticalAlign: "middle",
                            align: "center",
                            fill: c.getTextColor(),
                            font: c.getFont()
                        }),
                        z2: 10
                    }))
                }, this);
                var c = h;
                if (u) {
                    var p = _i(a.get("moveHandleSize"), o[1]), d = e.moveHandle = new Uk({
                        style: a.getModel("moveHandleStyle").getItemStyle(),
                        silent: !0,
                        shape: {r: [0, 0, 2, 2], y: o[1] - .5, height: p}
                    }), f = .8 * p, g = e.moveHandleIcon = Sc(a.get("moveHandleIcon"), -f / 2, -f / 2, f, f, "#fff", !0);
                    g.silent = !0, g.y = o[1] + p / 2 - .5, d.ensureState("emphasis").style = a.getModel(["emphasis", "moveHandleStyle"]).getItemStyle();
                    var v = Math.min(o[1] / 2, Math.max(p, 10));
                    c = e.moveZone = new Uk({
                        invisible: !0,
                        shape: {y: o[1] - v, height: p + v}
                    }), c.on("mouseover", function () {
                        s.enterEmphasis(d)
                    }).on("mouseout", function () {
                        s.leaveEmphasis(d)
                    }), r.add(d), r.add(g), r.add(c)
                }
                c.attr({
                    draggable: !0,
                    cursor: RT(this._orient),
                    drift: xA(this._onDragMove, this, "all"),
                    ondragstart: xA(this._showDataInfo, this, !0),
                    ondragend: xA(this._onDragEnd, this),
                    onmouseover: xA(this._showDataInfo, this, !0),
                    onmouseout: xA(this._showDataInfo, this, !1)
                })
            }, n.prototype._resetInterval = function () {
                var t = this._range = this.dataZoomModel.getPercentRange(), e = this._getViewExtent();
                this._handleEnds = [xi(t[0], [0, 100], e, !0), xi(t[1], [0, 100], e, !0)]
            }, n.prototype._updateInterval = function (t, e) {
                var n = this.dataZoomModel, i = this._handleEnds, r = this._getViewExtent(),
                    o = n.findRepresentativeAxisProxy().getMinMaxSpan(), a = [0, 100];
                qx(e, i, r, n.get("zoomLock") ? "all" : t, null != o.minSpan ? xi(o.minSpan, a, r, !0) : null, null != o.maxSpan ? xi(o.maxSpan, a, r, !0) : null);
                var s = this._range, l = this._range = wi([xi(i[0], r, a, !0), xi(i[1], r, a, !0)]);
                return !s || s[0] !== l[0] || s[1] !== l[1]
            }, n.prototype._updateView = function (t) {
                var e = this._displayables, n = this._handleEnds, i = wi(n.slice()), r = this._size;
                y([0, 1], function (t) {
                    var i = e.handles[t], o = this._handleHeight;
                    i.attr({scaleX: o / 2, scaleY: o / 2, x: n[t] + (t ? -1 : 1), y: r[1] / 2 - o / 2})
                }, this), e.filler.setShape({x: i[0], y: 0, width: i[1] - i[0], height: r[1]});
                var o = {x: i[0], width: i[1] - i[0]};
                e.moveHandle && (e.moveHandle.setShape(o), e.moveZone.setShape(o), e.moveZone.getBoundingRect(), e.moveHandleIcon && e.moveHandleIcon.attr("x", o.x + o.width / 2));
                for (var a = e.dataShadowSegs, s = [0, i[0], i[1], r[0]], l = 0; l < a.length; l++) {
                    var u = a[l], h = u.getClipPath();
                    h || (h = new Uk, u.setClipPath(h)), h.setShape({x: s[l], y: 0, width: s[l + 1] - s[l], height: r[1]})
                }
                this._updateDataInfo(t)
            }, n.prototype._updateDataInfo = function (t) {
                function e(t) {
                    var e = gs(i.handles[t].parent, this.group), n = vs(0 === t ? "right" : "left", e),
                        s = this._handleWidth / 2 + oj, l = ys([c[t] + (0 === t ? -s : s), this._size[1] / 2], e);
                    r[t].setStyle({
                        x: l[0],
                        y: l[1],
                        verticalAlign: o === ij ? "middle" : n,
                        align: o === ij ? n : "center",
                        text: a[t]
                    })
                }

                var n = this.dataZoomModel, i = this._displayables, r = i.handleLabels, o = this._orient, a = ["", ""];
                if (n.get("showDetail")) {
                    var s = n.findRepresentativeAxisProxy();
                    if (s) {
                        var l = s.getAxisModel().axis, u = this._range,
                            h = t ? s.calculateDataWindow({start: u[0], end: u[1]}).valueWindow : s.getDataValueWindow();
                        a = [this._formatLabel(h[0], l), this._formatLabel(h[1], l)]
                    }
                }
                var c = wi(this._handleEnds.slice());
                e.call(this, 0), e.call(this, 1)
            }, n.prototype._formatLabel = function (t, e) {
                var n = this.dataZoomModel, i = n.get("labelFormatter"), r = n.get("labelPrecision");
                (null == r || "auto" === r) && (r = e.getPixelPrecision());
                var o = null == t || isNaN(t) ? "" : "category" === e.type || "time" === e.type ? e.scale.getLabel({value: Math.round(t)}) : t.toFixed(Math.min(r, 20));
                return I(i) ? i(t, o) : T(i) ? i.replace("{value}", o) : o
            }, n.prototype._showDataInfo = function (t) {
                t = this._dragging || t;
                var e = this._displayables, n = e.handleLabels;
                n[0].attr("invisible", !t), n[1].attr("invisible", !t), e.moveHandle && this.api[t ? "enterEmphasis" : "leaveEmphasis"](e.moveHandle, 1)
            }, n.prototype._onDragMove = function (t, e, n, i) {
                this._dragging = !0, NA(i.event);
                var r = this._displayables.sliderGroup.getLocalTransform(), o = ys([e, n], r, !0),
                    a = this._updateInterval(t, o[0]), s = this.dataZoomModel.get("realtime");
                this._updateView(!s), a && s && this._dispatchZoomAction(!0)
            }, n.prototype._onDragEnd = function () {
                this._dragging = !1, this._showDataInfo(!1);
                var t = this.dataZoomModel.get("realtime");
                !t && this._dispatchZoomAction(!1)
            }, n.prototype._onClickPanel = function (t) {
                var e = this._size, n = this._displayables.sliderGroup.transformCoordToLocal(t.offsetX, t.offsetY);
                if (!(n[0] < 0 || n[0] > e[0] || n[1] < 0 || n[1] > e[1])) {
                    var i = this._handleEnds, r = (i[0] + i[1]) / 2, o = this._updateInterval("all", n[0] - r);
                    this._updateView(), o && this._dispatchZoomAction(!1)
                }
            }, n.prototype._onBrushStart = function (t) {
                var e = t.offsetX, n = t.offsetY;
                this._brushStart = new HD(e, n), this._brushing = !0, this._brushStartTime = +new Date
            }, n.prototype._onBrushEnd = function () {
                if (this._brushing) {
                    var t = this._displayables.brushRect;
                    if (this._brushing = !1, t) {
                        t.attr("ignore", !0);
                        var e = t.shape, n = +new Date;
                        if (!(n - this._brushStartTime < 200 && Math.abs(e.width) < 5)) {
                            var i = this._getViewExtent(), r = [0, 100];
                            this._range = wi([xi(e.x, i, r, !0), xi(e.x + e.width, i, r, !0)]), this._handleEnds = [e.x, e.x + e.width], this._updateView(), this._dispatchZoomAction(!1)
                        }
                    }
                }
            }, n.prototype._onBrush = function (t) {
                this._brushing && (NA(t.event), this._updateBrushRect(t.offsetX, t.offsetY))
            }, n.prototype._updateBrushRect = function (t, e) {
                var n = this._displayables, i = this.dataZoomModel, r = n.brushRect;
                r || (r = n.brushRect = new JU({
                    silent: !0,
                    style: i.getModel("brushStyle").getItemStyle()
                }), n.sliderGroup.add(r)), r.attr("ignore", !1);
                var o = this._brushStart, a = this._displayables.sliderGroup, s = a.transformCoordToLocal(t, e),
                    l = a.transformCoordToLocal(o.x, o.y), u = this._size;
                s[0] = Math.max(Math.min(u[0], s[0]), 0), r.setShape({x: l[0], y: 0, width: s[0] - l[0], height: u[1]})
            }, n.prototype._dispatchZoomAction = function (t) {
                var e = this._range;
                this.api.dispatchAction({
                    type: "dataZoom",
                    from: this.uid,
                    dataZoomId: this.dataZoomModel.id,
                    animation: t ? sj : null,
                    start: e[0],
                    end: e[1]
                })
            }, n.prototype._findCoordRect = function () {
                var t, e = mT(this.dataZoomModel).infoList;
                if (!t && e.length) {
                    var n = e[0].model.coordinateSystem;
                    t = n.getRect && n.getRect()
                }
                if (!t) {
                    var i = this.api.getWidth(), r = this.api.getHeight();
                    t = {x: .2 * i, y: .2 * r, width: .6 * i, height: .6 * r}
                }
                return t
            }, n.type = "dataZoom.slider", n
        }(GU);
    df(ET);
    var uj = ["rect", "polygon", "keep", "clear"], hj = y, cj = {
        lineX: YT(0), lineY: YT(1), rect: {
            point: function (t, e, n) {
                return t && n.boundingRect.contain(t[0], t[1])
            }, rect: function (t, e, n) {
                return t && n.boundingRect.intersect(t)
            }
        }, polygon: {
            point: function (t, e, n) {
                return t && n.boundingRect.contain(t[0], t[1]) && mp(n.range, t[0], t[1])
            }, rect: function (t, e, n) {
                var i = n.range;
                if (!t || i.length <= 1) return !1;
                var r = t.x, o = t.y, a = t.width, s = t.height, l = i[0];
                return mp(i, r, o) || mp(i, r + a, o) || mp(i, r, o + s) || mp(i, r + a, o + s) || $D.create(t).contain(l[0], l[1]) || Ms(r, o, r + a, o, i) || Ms(r, o, r, o + s, i) || Ms(r + a, o, r + a, o + s, i) || Ms(r, o + s, r + a, o + s, i) ? !0 : void 0
            }
        }
    }, pj = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"], dj = function () {
        function t(t, e, n) {
            var i = this;
            this._targetInfoList = [];
            var r = jT(e, t);
            y(fj, function (t, e) {
                (!n || !n.include || p(n.include, e) >= 0) && t(r, i._targetInfoList)
            })
        }

        return t.prototype.setOutputRanges = function (t, e) {
            return this.matchOutputRanges(t, e, function (t, e, n) {
                if ((t.coordRanges || (t.coordRanges = [])).push(e), !t.coordRange) {
                    t.coordRange = e;
                    var i = vj[t.brushType](0, n, e);
                    t.__rangeOffset = {offset: mj[t.brushType](i.values, t.range, [1, 1]), xyMinMax: i.xyMinMax}
                }
            }), t
        }, t.prototype.matchOutputRanges = function (t, e, n) {
            y(t, function (t) {
                var i = this.findTargetInfo(t, e);
                i && i !== !0 && y(i.coordSyses, function (i) {
                    var r = vj[t.brushType](1, i, t.range, !0);
                    n(t, r.values, i, e)
                })
            }, this)
        }, t.prototype.setInputRanges = function (t, e) {
            y(t, function (t) {
                var n = this.findTargetInfo(t, e);
                if (t.range = t.range || [], n && n !== !0) {
                    t.panelId = n.panelId;
                    var i = vj[t.brushType](0, n.coordSys, t.coordRange), r = t.__rangeOffset;
                    t.range = r ? mj[t.brushType](i.values, r.offset, $T(i.xyMinMax, r.xyMinMax)) : i.values
                }
            }, this)
        }, t.prototype.makePanelOpts = function (t, e) {
            return v(this._targetInfoList, function (n) {
                var i = n.getPanelRect();
                return {
                    panelId: n.panelId,
                    defaultBrushType: e ? e(n) : null,
                    clipPath: E_(i),
                    isTargetByCursor: B_(i, t, n.coordSysModel),
                    getLinearBrushOtherExtent: N_(i)
                }
            })
        }, t.prototype.controlSeries = function (t, e, n) {
            var i = this.findTargetInfo(t, n);
            return i === !0 || i && p(i.coordSyses, e.coordinateSystem) >= 0
        }, t.prototype.findTargetInfo = function (t, e) {
            for (var n = this._targetInfoList, i = jT(e, t), r = 0; r < n.length; r++) {
                var o = n[r], a = t.panelId;
                if (a) {
                    if (o.panelId === a) return o
                } else for (var s = 0; s < gj.length; s++) if (gj[s](i, o)) return o
            }
            return !0
        }, t
    }(), fj = {
        grid: function (t, e) {
            var n = t.xAxisModels, i = t.yAxisModels, r = t.gridModels, o = Z(), a = {}, s = {};
            (n || i || r) && (y(n, function (t) {
                var e = t.axis.grid.model;
                o.set(e.id, e), a[e.id] = !0
            }), y(i, function (t) {
                var e = t.axis.grid.model;
                o.set(e.id, e), s[e.id] = !0
            }), y(r, function (t) {
                o.set(t.id, t), a[t.id] = !0, s[t.id] = !0
            }), o.each(function (t) {
                var r = t.coordinateSystem, o = [];
                y(r.getCartesians(), function (t) {
                    (p(n, t.getAxis("x").model) >= 0 || p(i, t.getAxis("y").model) >= 0) && o.push(t)
                }), e.push({
                    panelId: "grid--" + t.id,
                    gridModel: t,
                    coordSysModel: t,
                    coordSys: o[0],
                    coordSyses: o,
                    getPanelRect: yj.grid,
                    xAxisDeclared: a[t.id],
                    yAxisDeclared: s[t.id]
                })
            }))
        }, geo: function (t, e) {
            y(t.geoModels, function (t) {
                var n = t.coordinateSystem;
                e.push({
                    panelId: "geo--" + t.id,
                    geoModel: t,
                    coordSysModel: t,
                    coordSys: n,
                    coordSyses: [n],
                    getPanelRect: yj.geo
                })
            })
        }
    }, gj = [function (t, e) {
        var n = t.xAxisModel, i = t.yAxisModel, r = t.gridModel;
        return !r && n && (r = n.axis.grid.model), !r && i && (r = i.axis.grid.model), r && r === e.gridModel
    }, function (t, e) {
        var n = t.geoModel;
        return n && n === e.geoModel
    }], yj = {
        grid: function () {
            return this.coordSys.master.getRect().clone()
        }, geo: function () {
            var t = this.coordSys, e = t.getBoundingRect().clone();
            return e.applyTransform(gs(t)), e
        }
    }, vj = {
        lineX: S(qT, 0), lineY: S(qT, 1), rect: function (t, e, n, i) {
            var r = t ? e.pointToData([n[0][0], n[1][0]], i) : e.dataToPoint([n[0][0], n[1][0]], i),
                o = t ? e.pointToData([n[0][1], n[1][1]], i) : e.dataToPoint([n[0][1], n[1][1]], i),
                a = [UT([r[0], o[0]]), UT([r[1], o[1]])];
            return {values: a, xyMinMax: a}
        }, polygon: function (t, e, n, i) {
            var r = [[1 / 0, -1 / 0], [1 / 0, -1 / 0]], o = v(n, function (n) {
                var o = t ? e.pointToData(n, i) : e.dataToPoint(n, i);
                return r[0][0] = Math.min(r[0][0], o[0]), r[1][0] = Math.min(r[1][0], o[1]), r[0][1] = Math.max(r[0][1], o[0]), r[1][1] = Math.max(r[1][1], o[1]), o
            });
            return {values: o, xyMinMax: r}
        }
    }, mj = {
        lineX: S(KT, 0), lineY: S(KT, 1), rect: function (t, e, n) {
            return [[t[0][0] - n[0] * e[0][0], t[0][1] - n[0] * e[0][1]], [t[1][0] - n[1] * e[1][0], t[1][1] - n[1] * e[1][1]]]
        }, polygon: function (t, e, n) {
            return v(t, function (t, i) {
                return [t[0] - n[0] * e[i][0], t[1] - n[1] * e[i][1]]
            })
        }
    }, xj = ["inBrush", "outOfBrush"], _j = "__ecBrushSelect", bj = "__ecInBrushSelectEvent", wj = {
        rect: function (t) {
            return oC(t.range)
        }, polygon: function (t) {
            for (var e, n = t.range, i = 0, r = n.length; r > i; i++) {
                e = e || [[1 / 0, -1 / 0], [1 / 0, -1 / 0]];
                var o = n[i];
                o[0] < e[0][0] && (e[0][0] = o[0]), o[0] > e[0][1] && (e[0][1] = o[0]), o[1] < e[1][0] && (e[1][0] = o[1]), o[1] > e[1][1] && (e[1][1] = o[1])
            }
            return e && oC(e)
        }
    }, Sj = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function (t, e) {
            this.ecModel = t, this.api = e, this.model, (this._brushController = new PX(e.getZr())).on("brush", xA(this._onBrush, this)).mount()
        }, n.prototype.render = function (t, e, n, i) {
            this.model = t, this._updateController(t, e, n, i)
        }, n.prototype.updateTransform = function (t, e, n, i) {
            QT(e), this._updateController(t, e, n, i)
        }, n.prototype.updateVisual = function (t, e, n, i) {
            this.updateTransform(t, e, n, i)
        }, n.prototype.updateView = function (t, e, n, i) {
            this._updateController(t, e, n, i)
        }, n.prototype._updateController = function (t, e, n, i) {
            (!i || i.$from !== t.id) && this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())
        }, n.prototype.dispose = function () {
            this._brushController.dispose()
        }, n.prototype._onBrush = function (t) {
            var e = this.model.id, n = this.model.brushTargetManager.setOutputRanges(t.areas, this.ecModel);
            (!t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                type: "brush",
                brushId: e,
                areas: s(n),
                $from: e
            }), t.isEnd && this.api.dispatchAction({type: "brushEnd", brushId: e, areas: s(n), $from: e})
        }, n.type = "brush", n
    }(Tz), Mj = "#ddd", Ij = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.areas = [], e.brushOption = {}, e
        }

        return e(n, t), n.prototype.optionUpdated = function (t, e) {
            var n = this.option;
            !e && GT(n, t, ["inBrush", "outOfBrush"]);
            var i = n.inBrush = n.inBrush || {};
            n.outOfBrush = n.outOfBrush || {color: Mj}, i.hasOwnProperty("liftZ") || (i.liftZ = 5)
        }, n.prototype.setAreas = function (t) {
            t && (this.areas = v(t, function (t) {
                return aC(this.option, t)
            }, this))
        }, n.prototype.setBrushOption = function (t) {
            this.brushOption = aC(this.option, t), this.brushType = this.brushOption.brushType
        }, n.type = "brush", n.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"], n.defaultOption = {
            seriesIndex: "all",
            brushType: "rect",
            brushMode: "single",
            transformable: !0,
            brushStyle: {borderWidth: 1, color: "rgba(210,219,238,0.3)", borderColor: "#D2DBEE"},
            throttleType: "fixRate",
            throttleDelay: 0,
            removeOnClick: !0,
            z: 1e4
        }, n
    }(gR), Tj = function () {
        function t() {
        }

        return t
    }(), Cj = {}, Aj = ["rect", "polygon", "lineX", "lineY", "keep", "clear"], Dj = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.render = function (t, e) {
            var n, i, r;
            e.eachComponent({mainType: "brush"}, function (t) {
                n = t.brushType, i = t.brushOption.brushMode || "single", r = r || !!t.areas.length
            }), this._brushType = n, this._brushMode = i, y(t.get("type", !0), function (e) {
                t.setIconStatus(e, ("keep" === e ? "multiple" === i : "clear" === e ? r : e === n) ? "emphasis" : "normal")
            })
        }, n.prototype.updateView = function (t, e, n) {
            this.render(t, e, n)
        }, n.prototype.getIcons = function () {
            var t = this.model, e = t.get("icon", !0), n = {};
            return y(t.get("type", !0), function (t) {
                e[t] && (n[t] = e[t])
            }), n
        }, n.prototype.onclick = function (t, e, n) {
            var i = this._brushType, r = this._brushMode;
            "clear" === n ? (e.dispatchAction({type: "axisAreaSelect", intervals: []}), e.dispatchAction({
                type: "brush",
                command: "clear",
                areas: []
            })) : e.dispatchAction({
                type: "takeGlobalCursor",
                key: "brush",
                brushOption: {
                    brushType: "keep" === n ? i : i === n ? !1 : n,
                    brushMode: "keep" === n ? "multiple" === r ? "single" : "multiple" : r
                }
            })
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0, type: Aj.slice(), icon: {
                    rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",
                    polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",
                    lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",
                    lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",
                    keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",
                    clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"
                }, title: t.getLocale(["toolbox", "brush", "title"])
            };
            return e
        }, n
    }(Tj);
    df(uC);
    var Lj = {
            get: function (t, e, n) {
                var i = s((kj[t] || {})[e]);
                return n && M(i) ? i[i.length - 1] : i
            }
        }, kj = {
            color: {active: ["#006edd", "#e0ffff"], inactive: ["rgba(0,0,0,0)"]},
            colorHue: {active: [0, 360], inactive: [0, 0]},
            colorSaturation: {active: [.3, 1], inactive: [0, 0]},
            colorLightness: {active: [.9, .5], inactive: [0, 0]},
            colorAlpha: {active: [.3, 1], inactive: [0, 0]},
            opacity: {active: [.3, 1], inactive: [0, 0]},
            symbol: {active: ["circle", "roundRect", "diamond"], inactive: ["none"]},
            symbolSize: {active: [10, 50], inactive: [0, 0]}
        }, Pj = EH.mapVisual, Oj = EH.eachVisual, Rj = M, zj = y, Ej = wi, Nj = xi, Bj = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.stateList = ["inRange", "outOfRange"], e.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"], e.layoutMode = {
                    type: "box",
                    ignoreSize: !0
                }, e.dataBound = [-1 / 0, 1 / 0], e.targetVisuals = {}, e.controllerVisuals = {}, e
            }

            return e(n, t), n.prototype.init = function (t, e, n) {
                this.mergeDefaultAndTheme(t, n)
            }, n.prototype.optionUpdated = function (t, e) {
                var n = this.option;
                oA.canvasSupported || (n.realtime = !1), !e && GT(n, t, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption()
            }, n.prototype.resetVisual = function (t) {
                var e = this.stateList;
                t = xA(t, this), this.controllerVisuals = FT(this.option.controller, e, t), this.targetVisuals = FT(this.option.target, e, t)
            }, n.prototype.getItemSymbol = function () {
                return null
            }, n.prototype.getTargetSeriesIndices = function () {
                var t = this.option.seriesIndex, e = [];
                return null == t || "all" === t ? this.ecModel.eachSeries(function (t, n) {
                    e.push(n)
                }) : e = Hi(t), e
            }, n.prototype.eachTargetSeries = function (t, e) {
                y(this.getTargetSeriesIndices(), function (n) {
                    var i = this.ecModel.getSeriesByIndex(n);
                    i && t.call(e, i)
                }, this)
            }, n.prototype.isTargetSeries = function (t) {
                var e = !1;
                return this.eachTargetSeries(function (n) {
                    n === t && (e = !0)
                }), e
            }, n.prototype.formatValueText = function (t, e, n) {
                function i(t) {
                    return t === s[0] ? "min" : t === s[1] ? "max" : (+t).toFixed(Math.min(a, 20))
                }

                var r, o = this.option, a = o.precision, s = this.dataBound, l = o.formatter;
                n = n || ["<", ">"], M(t) && (t = t.slice(), r = !0);
                var u = e ? t : r ? [i(t[0]), i(t[1])] : i(t);
                return T(l) ? l.replace("{value}", r ? u[0] : u).replace("{value2}", r ? u[1] : u) : I(l) ? r ? l(t[0], t[1]) : l(t) : r ? t[0] === s[0] ? n[0] + " " + u[1] : t[1] === s[1] ? n[1] + " " + u[0] : u[0] + " - " + u[1] : u
            }, n.prototype.resetExtent = function () {
                var t = this.option, e = Ej([t.min, t.max]);
                this._dataExtent = e
            }, n.prototype.getDataDimension = function (t) {
                var e = this.option.dimension, n = t.dimensions;
                if (null != e || n.length) {
                    if (null != e) return t.getDimension(e);
                    for (var i = t.dimensions, r = i.length - 1; r >= 0; r--) {
                        var o = i[r], a = t.getDimensionInfo(o);
                        if (!a.isCalculationCoord) return o
                    }
                }
            }, n.prototype.getExtent = function () {
                return this._dataExtent.slice()
            }, n.prototype.completeVisualOption = function () {
                function t(t) {
                    Rj(r.color) && !t.inRange && (t.inRange = {color: r.color.slice().reverse()}), t.inRange = t.inRange || {color: i.get("gradientColor")}
                }

                function e(t, e, n) {
                    var i = t[e], r = t[n];
                    i && !r && (r = t[n] = {}, zj(i, function (t, e) {
                        if (EH.isValidType(e)) {
                            var n = Lj.get(e, "inactive", h);
                            null != n && (r[e] = n, "color" !== e || r.hasOwnProperty("opacity") || r.hasOwnProperty("colorAlpha") || (r.opacity = [0, 0]))
                        }
                    }))
                }

                function n(t) {
                    var e = (t.inRange || {}).symbol || (t.outOfRange || {}).symbol,
                        n = (t.inRange || {}).symbolSize || (t.outOfRange || {}).symbolSize, i = this.get("inactiveColor"),
                        r = this.getItemSymbol(), o = r || "roundRect";
                    zj(this.stateList, function (r) {
                        var a = this.itemSize, l = t[r];
                        l || (l = t[r] = {color: h ? i : [i]}), null == l.symbol && (l.symbol = e && s(e) || (h ? o : [o])), null == l.symbolSize && (l.symbolSize = n && s(n) || (h ? a[0] : [a[0], a[0]])), l.symbol = Pj(l.symbol, function (t) {
                            return "none" === t ? o : t
                        });
                        var u = l.symbolSize;
                        if (null != u) {
                            var c = -1 / 0;
                            Oj(u, function (t) {
                                t > c && (c = t)
                            }), l.symbolSize = Pj(u, function (t) {
                                return Nj(t, [0, c], [0, a[0]], !0)
                            })
                        }
                    }, this)
                }

                var i = this.ecModel, r = this.option, o = {inRange: r.inRange, outOfRange: r.outOfRange},
                    a = r.target || (r.target = {}), u = r.controller || (r.controller = {});
                l(a, o), l(u, o);
                var h = this.isCategory();
                t.call(this, a), t.call(this, u), e.call(this, a, "inRange", "outOfRange"), n.call(this, u)
            }, n.prototype.resetItemSize = function () {
                this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]
            }, n.prototype.isCategory = function () {
                return !!this.option.categories
            }, n.prototype.setSelected = function () {
            }, n.prototype.getSelected = function () {
                return null
            }, n.prototype.getValueState = function () {
                return null
            }, n.prototype.getVisualMeta = function () {
                return null
            }, n.type = "visualMap", n.dependencies = ["series"], n.defaultOption = {
                show: !0,
                zlevel: 0,
                z: 4,
                seriesIndex: "all",
                min: 0,
                max: 200,
                left: 0,
                right: null,
                top: null,
                bottom: 0,
                itemWidth: null,
                itemHeight: null,
                inverse: !1,
                orient: "vertical",
                backgroundColor: "rgba(0,0,0,0)",
                borderColor: "#ccc",
                contentColor: "#5793f3",
                inactiveColor: "#aaa",
                borderWidth: 0,
                padding: 5,
                textGap: 10,
                precision: 0,
                textStyle: {color: "#333"}
            }, n
        }(gR), Vj = [20, 140], Fj = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.optionUpdated = function () {
                t.prototype.optionUpdated.apply(this, arguments), this.resetExtent(), this.resetVisual(function (t) {
                    t.mappingMethod = "linear", t.dataExtent = this.getExtent()
                }), this._resetRange()
            }, n.prototype.resetItemSize = function () {
                t.prototype.resetItemSize.apply(this, arguments);
                var e = this.itemSize;
                (null == e[0] || isNaN(e[0])) && (e[0] = Vj[0]), (null == e[1] || isNaN(e[1])) && (e[1] = Vj[1])
            }, n.prototype._resetRange = function () {
                var t = this.getExtent(), e = this.option.range;
                !e || e.auto ? (t.auto = 1, this.option.range = t) : M(e) && (e[0] > e[1] && e.reverse(), e[0] = Math.max(e[0], t[0]), e[1] = Math.min(e[1], t[1]))
            }, n.prototype.completeVisualOption = function () {
                t.prototype.completeVisualOption.apply(this, arguments), y(this.stateList, function (t) {
                    var e = this.option.controller[t].symbolSize;
                    e && e[0] !== e[1] && (e[0] = e[1] / 3)
                }, this)
            }, n.prototype.setSelected = function (t) {
                this.option.range = t.slice(), this._resetRange()
            }, n.prototype.getSelected = function () {
                var t = this.getExtent(), e = wi((this.get("range") || []).slice());
                return e[0] > t[1] && (e[0] = t[1]), e[1] > t[1] && (e[1] = t[1]), e[0] < t[0] && (e[0] = t[0]), e[1] < t[0] && (e[1] = t[0]), e
            }, n.prototype.getValueState = function (t) {
                var e = this.option.range, n = this.getExtent();
                return (e[0] <= n[0] || e[0] <= t) && (e[1] >= n[1] || t <= e[1]) ? "inRange" : "outOfRange"
            }, n.prototype.findTargetDataIndices = function (t) {
                var e = [];
                return this.eachTargetSeries(function (n) {
                    var i = [], r = n.getData();
                    r.each(this.getDataDimension(r), function (e, n) {
                        t[0] <= e && e <= t[1] && i.push(n)
                    }, this), e.push({seriesId: n.id, dataIndex: i})
                }, this), e
            }, n.prototype.getVisualMeta = function (t) {
                function e(e, n) {
                    r.push({value: e, color: t(e, n)})
                }

                for (var n = hC(this, "outOfRange", this.getExtent()), i = hC(this, "inRange", this.option.range.slice()), r = [], o = 0, a = 0, s = i.length, l = n.length; l > a && (!i.length || n[a] <= i[0]); a++) n[a] < i[o] && e(n[a], "outOfRange");
                for (var u = 1; s > o; o++, u = 0) u && r.length && e(i[o], "outOfRange"), e(i[o], "inRange");
                for (var u = 1; l > a; a++) (!i.length || i[i.length - 1] < n[a]) && (u && (r.length && e(r[r.length - 1].value, "outOfRange"), u = 0), e(n[a], "outOfRange"));
                var h = r.length;
                return {stops: r, outerColors: [h ? r[0].color : "transparent", h ? r[h - 1].color : "transparent"]}
            }, n.type = "visualMap.continuous", n.defaultOption = Xs(Bj.defaultOption, {
                align: "auto",
                calculable: !1,
                hoverLink: !0,
                realtime: !0,
                handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",
                handleSize: "120%",
                handleStyle: {borderColor: "#fff", borderWidth: 1},
                indicatorIcon: "circle",
                indicatorSize: "50%",
                indicatorStyle: {
                    borderColor: "#fff",
                    borderWidth: 2,
                    shadowBlur: 2,
                    shadowOffsetX: 1,
                    shadowOffsetY: 1,
                    shadowColor: "rgba(0,0,0,0.2)"
                }
            }), n
        }(Bj), Gj = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e.autoPositionValues = {left: 1, right: 1, top: 1, bottom: 1}, e
            }

            return e(n, t), n.prototype.init = function (t, e) {
                this.ecModel = t, this.api = e
            }, n.prototype.render = function (t, e, n, i) {
                return this.visualMapModel = t, t.get("show") === !1 ? void this.group.removeAll() : void this.doRender(t, e, n, i)
            }, n.prototype.renderBackground = function (t) {
                var e = this.visualMapModel, n = oR(e.get("padding") || 0), i = t.getBoundingRect();
                t.add(new Uk({
                    z2: -1,
                    silent: !0,
                    shape: {x: i.x - n[3], y: i.y - n[0], width: i.width + n[3] + n[1], height: i.height + n[0] + n[2]},
                    style: {fill: e.get("backgroundColor"), stroke: e.get("borderColor"), lineWidth: e.get("borderWidth")}
                }))
            }, n.prototype.getControllerVisual = function (t, e, n) {
                function i(t) {
                    return s[t]
                }

                function r(t, e) {
                    s[t] = e
                }

                n = n || {};
                var o = n.forceState, a = this.visualMapModel, s = {};
                if ("color" === e) {
                    var l = a.get("contentColor");
                    s.color = l
                }
                var u = a.controllerVisuals[o || a.getValueState(t)], h = EH.prepareVisualTypes(u);
                return y(h, function (o) {
                    var a = u[o];
                    n.convertOpacityToAlpha && "opacity" === o && (o = "colorAlpha", a = u.__alphaForOpacity), EH.dependsOn(o, e) && a && a.applyVisual(t, i, r)
                }), s[e]
            }, n.prototype.positionGroup = function (t) {
                var e = this.visualMapModel, n = this.api;
                Pl(t, e.getBoxLayoutParams(), {width: n.getWidth(), height: n.getHeight()})
            }, n.prototype.doRender = function () {
            }, n.type = "visualMap", n
        }(Tz), Hj = [["left", "right", "width"], ["top", "bottom", "height"]], Wj = xi, Xj = y, Yj = Math.min,
        Zj = Math.max, Uj = 12, jj = 6, qj = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._shapes = {}, e._dataInterval = [], e._handleEnds = [], e._hoverLinkDataIndices = [], e
            }

            return e(n, t), n.prototype.doRender = function (t, e, n, i) {
                this._api = n, i && "selectDataRange" === i.type && i.from === this.uid || this._buildView()
            }, n.prototype._buildView = function () {
                this.group.removeAll();
                var t = this.visualMapModel, e = this.group;
                this._orient = t.get("orient"), this._useHandle = t.get("calculable"), this._resetInterval(), this._renderBar(e);
                var n = t.get("text");
                this._renderEndsText(e, n, 0), this._renderEndsText(e, n, 1), this._updateView(!0), this.renderBackground(e), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(e)
            }, n.prototype._renderEndsText = function (t, e, n) {
                if (e) {
                    var i = e[1 - n];
                    i = null != i ? i + "" : "";
                    var r = this.visualMapModel, o = r.get("textGap"), a = r.itemSize, s = this._shapes.mainGroup,
                        l = this._applyTransform([a[0] / 2, 0 === n ? -o : a[1] + o], s),
                        u = this._applyTransform(0 === n ? "bottom" : "top", s), h = this._orient,
                        c = this.visualMapModel.textStyleModel;
                    this.group.add(new $k({
                        style: {
                            x: l[0],
                            y: l[1],
                            verticalAlign: "horizontal" === h ? "middle" : u,
                            align: "horizontal" === h ? u : "center",
                            text: i,
                            font: c.getFont(),
                            fill: c.getTextColor()
                        }
                    }))
                }
            }, n.prototype._renderBar = function (t) {
                var e = this.visualMapModel, n = this._shapes, i = e.itemSize, r = this._orient, o = this._useHandle,
                    a = cC(e, this.api, i), s = n.mainGroup = this._createBarGroup(a), l = new sL;
                s.add(l), l.add(n.outOfRange = dC()), l.add(n.inRange = dC(null, o ? yC(this._orient) : null, xA(this._dragHandle, this, "all", !1), xA(this._dragHandle, this, "all", !0))), l.setClipPath(new Uk({
                    shape: {
                        x: 0,
                        y: 0,
                        width: i[0],
                        height: i[1],
                        r: 3
                    }
                }));
                var u = e.textStyleModel.getTextRect("国"), h = Zj(u.width, u.height);
                o && (n.handleThumbs = [], n.handleLabels = [], n.handleLabelPoints = [], this._createHandle(e, s, 0, i, h, r), this._createHandle(e, s, 1, i, h, r)), this._createIndicator(e, s, i, h, r), t.add(s)
            }, n.prototype._createHandle = function (t, e, n, i) {
                var r = xA(this._dragHandle, this, n, !1), o = xA(this._dragHandle, this, n, !0),
                    a = ri(t.get("handleSize"), i[0]), s = Sc(t.get("handleIcon"), -a / 2, -a / 2, a, a, null, !0),
                    l = yC(this._orient);
                s.attr({
                    cursor: l, draggable: !0, drift: r, ondragend: o, onmousemove: function (t) {
                        NA(t.event)
                    }
                }), s.x = i[0] / 2, s.useStyle(t.getModel("handleStyle").getItemStyle()), s.setStyle({
                    strokeNoScale: !0,
                    strokeFirst: !0
                }), s.style.lineWidth *= 2, s.ensureState("emphasis").style = t.getModel(["emphasis", "handleStyle"]).getItemStyle(), Ta(s, !0), e.add(s);
                var u = this.visualMapModel.textStyleModel, h = new $k({
                    cursor: l, draggable: !0, drift: r, onmousemove: function (t) {
                        NA(t.event)
                    }, ondragend: o, style: {x: 0, y: 0, text: "", font: u.getFont(), fill: u.getTextColor()}
                });
                h.ensureState("blur").style = {opacity: .1}, h.stateTransition = {duration: 200}, this.group.add(h);
                var c = [a, 0], p = this._shapes;
                p.handleThumbs[n] = s, p.handleLabelPoints[n] = c, p.handleLabels[n] = h
            }, n.prototype._createIndicator = function (t, e, n, i, r) {
                var o = ri(t.get("indicatorSize"), n[0]), a = Sc(t.get("indicatorIcon"), -o / 2, -o / 2, o, o, null, !0);
                a.attr({cursor: "move", invisible: !0, silent: !0, x: n[0] / 2});
                var s = t.getModel("indicatorStyle").getItemStyle();
                if (a instanceof Wk) {
                    var l = a.style;
                    a.useStyle(h({image: l.image, x: l.x, y: l.y, width: l.width, height: l.height}, s))
                } else a.useStyle(s);
                e.add(a);
                var u = this.visualMapModel.textStyleModel, c = new $k({
                    silent: !0,
                    invisible: !0,
                    style: {x: 0, y: 0, text: "", font: u.getFont(), fill: u.getTextColor()}
                });
                this.group.add(c);
                var p = [("horizontal" === r ? i / 2 : jj) + n[0] / 2, 0], d = this._shapes;
                d.indicator = a, d.indicatorLabel = c, d.indicatorLabelPoint = p, this._firstShowIndicator = !0
            }, n.prototype._dragHandle = function (t, e, n, i) {
                if (this._useHandle) {
                    if (this._dragging = !e, !e) {
                        var r = this._applyTransform([n, i], this._shapes.mainGroup, !0);
                        this._updateInterval(t, r[1]), this._hideIndicator(), this._updateView()
                    }
                    e === !this.visualMapModel.get("realtime") && this.api.dispatchAction({
                        type: "selectDataRange",
                        from: this.uid,
                        visualMapId: this.visualMapModel.id,
                        selected: this._dataInterval.slice()
                    }), e ? !this._hovering && this._clearHoverLinkToSeries() : gC(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[t], !1)
                }
            }, n.prototype._resetInterval = function () {
                var t = this.visualMapModel, e = this._dataInterval = t.getSelected(), n = t.getExtent(),
                    i = [0, t.itemSize[1]];
                this._handleEnds = [Wj(e[0], n, i, !0), Wj(e[1], n, i, !0)]
            }, n.prototype._updateInterval = function (t, e) {
                e = e || 0;
                var n = this.visualMapModel, i = this._handleEnds, r = [0, n.itemSize[1]];
                qx(e, i, r, t, 0);
                var o = n.getExtent();
                this._dataInterval = [Wj(i[0], r, o, !0), Wj(i[1], r, o, !0)]
            }, n.prototype._updateView = function (t) {
                var e = this.visualMapModel, n = e.getExtent(), i = this._shapes, r = [0, e.itemSize[1]],
                    o = t ? r : this._handleEnds, a = this._createBarVisual(this._dataInterval, n, o, "inRange"),
                    s = this._createBarVisual(n, n, r, "outOfRange");
                i.inRange.setStyle({fill: a.barColor}).setShape("points", a.barPoints), i.outOfRange.setStyle({fill: s.barColor}).setShape("points", s.barPoints), this._updateHandle(o, a)
            }, n.prototype._createBarVisual = function (t, e, n, i) {
                var r = {forceState: i, convertOpacityToAlpha: !0}, o = this._makeColorGradient(t, r),
                    a = [this.getControllerVisual(t[0], "symbolSize", r), this.getControllerVisual(t[1], "symbolSize", r)],
                    s = this._createBarPoints(n, a);
                return {barColor: new uO(0, 0, 0, 1, o), barPoints: s, handlesColor: [o[0].color, o[o.length - 1].color]}
            }, n.prototype._makeColorGradient = function (t, e) {
                var n = 100, i = [], r = (t[1] - t[0]) / n;
                i.push({color: this.getControllerVisual(t[0], "color", e), offset: 0});
                for (var o = 1; n > o; o++) {
                    var a = t[0] + r * o;
                    if (a > t[1]) break;
                    i.push({color: this.getControllerVisual(a, "color", e), offset: o / n})
                }
                return i.push({color: this.getControllerVisual(t[1], "color", e), offset: 1}), i
            }, n.prototype._createBarPoints = function (t, e) {
                var n = this.visualMapModel.itemSize;
                return [[n[0] - e[0], t[0]], [n[0], t[0]], [n[0], t[1]], [n[0] - e[1], t[1]]]
            }, n.prototype._createBarGroup = function (t) {
                var e = this._orient, n = this.visualMapModel.get("inverse");
                return new sL("horizontal" !== e || n ? "horizontal" === e && n ? {
                    scaleX: "bottom" === t ? -1 : 1,
                    rotation: -Math.PI / 2
                } : "vertical" !== e || n ? {scaleX: "left" === t ? 1 : -1} : {
                    scaleX: "left" === t ? 1 : -1,
                    scaleY: -1
                } : {scaleX: "bottom" === t ? 1 : -1, rotation: Math.PI / 2})
            }, n.prototype._updateHandle = function (t, e) {
                if (this._useHandle) {
                    var n = this._shapes, i = this.visualMapModel, r = n.handleThumbs, o = n.handleLabels, a = i.itemSize,
                        s = i.getExtent();
                    Xj([0, 1], function (l) {
                        var u = r[l];
                        u.setStyle("fill", e.handlesColor[l]), u.y = t[l];
                        var h = Wj(t[l], [0, a[1]], s, !0), c = this.getControllerVisual(h, "symbolSize");
                        u.scaleX = u.scaleY = c / a[0], u.x = a[0] - c / 2;
                        var p = ys(n.handleLabelPoints[l], gs(u, this.group));
                        o[l].setStyle({
                            x: p[0],
                            y: p[1],
                            text: i.formatValueText(this._dataInterval[l]),
                            verticalAlign: "middle",
                            align: "vertical" === this._orient ? this._applyTransform("left", n.mainGroup) : "center"
                        })
                    }, this)
                }
            }, n.prototype._showIndicator = function (t, e, n) {
                var i = this.visualMapModel, r = i.getExtent(), o = i.itemSize, a = [0, o[1]], s = this._shapes,
                    l = s.indicator;
                if (l) {
                    l.attr("invisible", !1);
                    var u = {convertOpacityToAlpha: !0}, h = this.getControllerVisual(t, "color", u),
                        c = this.getControllerVisual(t, "symbolSize"), p = Wj(t, r, a, !0), d = o[0] - c / 2,
                        f = {x: l.x, y: l.y};
                    l.y = p, l.x = d;
                    var g = ys(s.indicatorLabelPoint, gs(l, this.group)), y = s.indicatorLabel;
                    y.attr("invisible", !1);
                    var v = this._applyTransform("left", s.mainGroup), m = this._orient, x = "horizontal" === m;
                    y.setStyle({
                        text: (n ? n : "") + i.formatValueText(e),
                        verticalAlign: x ? v : "middle",
                        align: x ? "center" : v
                    });
                    var _ = {x: d, y: p, style: {fill: h}}, b = {style: {x: g[0], y: g[1]}};
                    if (i.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {
                        var w = {duration: 100, easing: "cubicInOut", additive: !0};
                        l.x = f.x, l.y = f.y, l.animateTo(_, w), y.animateTo(b, w)
                    } else l.attr(_), y.attr(b);
                    this._firstShowIndicator = !1;
                    var S = this._shapes.handleLabels;
                    if (S) for (var M = 0; M < S.length; M++) this._api.enterBlur(S[M])
                }
            }, n.prototype._enableHoverLinkToSeries = function () {
                var t = this;
                this._shapes.mainGroup.on("mousemove", function (e) {
                    if (t._hovering = !0, !t._dragging) {
                        var n = t.visualMapModel.itemSize,
                            i = t._applyTransform([e.offsetX, e.offsetY], t._shapes.mainGroup, !0, !0);
                        i[1] = Yj(Zj(0, i[1]), n[1]), t._doHoverLinkToSeries(i[1], 0 <= i[0] && i[0] <= n[0])
                    }
                }).on("mouseout", function () {
                    t._hovering = !1, !t._dragging && t._clearHoverLinkToSeries()
                })
            }, n.prototype._enableHoverLinkFromSeries = function () {
                var t = this.api.getZr();
                this.visualMapModel.option.hoverLink ? (t.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), t.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries()
            }, n.prototype._doHoverLinkToSeries = function (t, e) {
                var n = this.visualMapModel, i = n.itemSize;
                if (n.option.hoverLink) {
                    var r = [0, i[1]], o = n.getExtent();
                    t = Yj(Zj(r[0], t), r[1]);
                    var a = fC(n, o, r), s = [t - a, t + a], l = Wj(t, r, o, !0),
                        u = [Wj(s[0], r, o, !0), Wj(s[1], r, o, !0)];
                    s[0] < r[0] && (u[0] = -1 / 0), s[1] > r[1] && (u[1] = 1 / 0), e && (u[0] === -1 / 0 ? this._showIndicator(l, u[1], "< ", a) : 1 / 0 === u[1] ? this._showIndicator(l, u[0], "> ", a) : this._showIndicator(l, l, "≈ ", a));
                    var h = this._hoverLinkDataIndices, c = [];
                    (e || gC(n)) && (c = this._hoverLinkDataIndices = n.findTargetDataIndices(u));
                    var p = sr(h, c);
                    this._dispatchHighDown("downplay", pC(p[0], n)), this._dispatchHighDown("highlight", pC(p[1], n))
                }
            }, n.prototype._hoverLinkFromSeriesMouseOver = function (t) {
                var e = t.target, n = this.visualMapModel;
                if (e && null != tP(e).dataIndex) {
                    var i = tP(e), r = this.ecModel.getSeriesByIndex(i.seriesIndex);
                    if (n.isTargetSeries(r)) {
                        var o = r.getData(i.dataType), a = o.get(n.getDataDimension(o), i.dataIndex);
                        isNaN(a) || this._showIndicator(a, a)
                    }
                }
            }, n.prototype._hideIndicator = function () {
                var t = this._shapes;
                t.indicator && t.indicator.attr("invisible", !0), t.indicatorLabel && t.indicatorLabel.attr("invisible", !0);
                var e = this._shapes.handleLabels;
                if (e) for (var n = 0; n < e.length; n++) this._api.leaveBlur(e[n])
            }, n.prototype._clearHoverLinkToSeries = function () {
                this._hideIndicator();
                var t = this._hoverLinkDataIndices;
                this._dispatchHighDown("downplay", pC(t, this.visualMapModel)), t.length = 0
            }, n.prototype._clearHoverLinkFromSeries = function () {
                this._hideIndicator();
                var t = this.api.getZr();
                t.off("mouseover", this._hoverLinkFromSeriesMouseOver), t.off("mouseout", this._hideIndicator)
            }, n.prototype._applyTransform = function (t, e, n, i) {
                var r = gs(e, i ? null : this.group);
                return M(t) ? ys(t, r, n) : vs(t, r, n)
            }, n.prototype._dispatchHighDown = function (t, e) {
                e && e.length && this.api.dispatchAction({type: t, batch: e})
            }, n.prototype.dispose = function () {
                this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries()
            }, n.prototype.remove = function () {
                this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries()
            }, n.type = "visualMap.continuous", n
        }(Gj), Kj = {type: "selectDataRange", event: "dataRangeSelected", update: "update"}, $j = function (t, e) {
            e.eachComponent({mainType: "visualMap", query: t}, function (e) {
                e.setSelected(t.selected)
            })
        }, Jj = [{
            createOnAllSeries: !0, reset: function (t, e) {
                var n = [];
                return e.eachComponent("visualMap", function (e) {
                    var i = t.pipelineContext;
                    !e.isTargetSeries(t) || i && i.large || n.push(WT(e.stateList, e.targetVisuals, xA(e.getValueState, e), e.getDataDimension(t.getData())))
                }), n
            }
        }, {
            createOnAllSeries: !0, reset: function (t, e) {
                var n = t.getData(), i = [];
                e.eachComponent("visualMap", function (e) {
                    if (e.isTargetSeries(t)) {
                        var r = e.getVisualMeta(xA(vC, null, t, e)) || {stops: [], outerColors: []},
                            o = e.getDataDimension(n), a = n.getDimensionInfo(o);
                        null != a && (r.dimension = a.index, i.push(r))
                    }
                }), t.getData().setVisual("visualMeta", i)
            }
        }], Qj = y, tq = !1, eq = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e._pieceList = [], e
            }

            return e(n, t), n.prototype.optionUpdated = function (e, n) {
                t.prototype.optionUpdated.apply(this, arguments), this.resetExtent();
                var i = this._mode = this._determineMode();
                this._pieceList = [], nq[this._mode].call(this, this._pieceList), this._resetSelected(e, n);
                var r = this.option.categories;
                this.resetVisual(function (t, e) {
                    "categories" === i ? (t.mappingMethod = "category", t.categories = s(r)) : (t.dataExtent = this.getExtent(), t.mappingMethod = "piecewise", t.pieceList = v(this._pieceList, function (t) {
                        return t = s(t), "inRange" !== e && (t.visual = null), t
                    }))
                })
            }, n.prototype.completeVisualOption = function () {
                function e(t, e, n) {
                    return t && t[e] && t[e].hasOwnProperty(n)
                }

                var n = this.option, i = {}, r = EH.listVisualTypes(), o = this.isCategory();
                y(n.pieces, function (t) {
                    y(r, function (e) {
                        t.hasOwnProperty(e) && (i[e] = 1)
                    })
                }), y(i, function (t, i) {
                    var r = !1;
                    y(this.stateList, function (t) {
                        r = r || e(n, t, i) || e(n.target, t, i)
                    }, this), !r && y(this.stateList, function (t) {
                        (n[t] || (n[t] = {}))[i] = Lj.get(i, "inRange" === t ? "active" : "inactive", o)
                    })
                }, this), t.prototype.completeVisualOption.apply(this, arguments)
            }, n.prototype._resetSelected = function (t, e) {
                var n = this.option, i = this._pieceList, r = (e ? n : t).selected || {};
                if (n.selected = r, y(i, function (t) {
                    var e = this.getSelectedMapKey(t);
                    r.hasOwnProperty(e) || (r[e] = !0)
                }, this), "single" === n.selectedMode) {
                    var o = !1;
                    y(i, function (t) {
                        var e = this.getSelectedMapKey(t);
                        r[e] && (o ? r[e] = !1 : o = !0)
                    }, this)
                }
            }, n.prototype.getItemSymbol = function () {
                return this.get("itemSymbol")
            }, n.prototype.getSelectedMapKey = function (t) {
                return "categories" === this._mode ? t.value + "" : t.index + ""
            }, n.prototype.getPieceList = function () {
                return this._pieceList
            }, n.prototype._determineMode = function () {
                var t = this.option;
                return t.pieces && t.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"
            }, n.prototype.setSelected = function (t) {
                this.option.selected = s(t)
            }, n.prototype.getValueState = function (t) {
                var e = EH.findPieceIndex(t, this._pieceList);
                return null != e && this.option.selected[this.getSelectedMapKey(this._pieceList[e])] ? "inRange" : "outOfRange"
            }, n.prototype.findTargetDataIndices = function (t) {
                var e = [], n = this._pieceList;
                return this.eachTargetSeries(function (i) {
                    var r = [], o = i.getData();
                    o.each(this.getDataDimension(o), function (e, i) {
                        var o = EH.findPieceIndex(e, n);
                        o === t && r.push(i)
                    }, this), e.push({seriesId: i.id, dataIndex: r})
                }, this), e
            }, n.prototype.getRepresentValue = function (t) {
                var e;
                if (this.isCategory()) e = t.value; else if (null != t.value) e = t.value; else {
                    var n = t.interval || [];
                    e = n[0] === -1 / 0 && 1 / 0 === n[1] ? 0 : (n[0] + n[1]) / 2
                }
                return e
            }, n.prototype.getVisualMeta = function (t) {
                function e(e, o) {
                    var a = r.getRepresentValue({interval: e});
                    o || (o = r.getValueState(a));
                    var s = t(a, o);
                    e[0] === -1 / 0 ? i[0] = s : 1 / 0 === e[1] ? i[1] = s : n.push({value: e[0], color: s}, {
                        value: e[1],
                        color: s
                    })
                }

                if (!this.isCategory()) {
                    var n = [], i = ["", ""], r = this, o = this._pieceList.slice();
                    if (o.length) {
                        var a = o[0].interval[0];
                        a !== -1 / 0 && o.unshift({interval: [-1 / 0, a]}), a = o[o.length - 1].interval[1], 1 / 0 !== a && o.push({interval: [a, 1 / 0]})
                    } else o.push({interval: [-1 / 0, 1 / 0]});
                    var s = -1 / 0;
                    return y(o, function (t) {
                        var n = t.interval;
                        n && (n[0] > s && e([s, n[0]], "outOfRange"), e(n.slice()), s = n[1])
                    }, this), {stops: n, outerColors: i}
                }
            }, n.type = "visualMap.piecewise", n.defaultOption = Xs(Bj.defaultOption, {
                selected: null,
                minOpen: !1,
                maxOpen: !1,
                align: "auto",
                itemWidth: 20,
                itemHeight: 14,
                itemSymbol: "roundRect",
                pieces: null,
                categories: null,
                splitNumber: 5,
                selectedMode: "multiple",
                itemGap: 10,
                hoverLink: !0
            }), n
        }(Bj), nq = {
            splitNumber: function (t) {
                var e = this.option, n = Math.min(e.precision, 20), i = this.getExtent(), r = e.splitNumber;
                r = Math.max(parseInt(r, 10), 1), e.splitNumber = r;
                for (var o = (i[1] - i[0]) / r; +o.toFixed(n) !== o && 5 > n;) n++;
                e.precision = n, o = +o.toFixed(n), e.minOpen && t.push({interval: [-1 / 0, i[0]], close: [0, 0]});
                for (var a = 0, s = i[0]; r > a; s += o, a++) {
                    var l = a === r - 1 ? i[1] : s + o;
                    t.push({interval: [s, l], close: [1, 1]})
                }
                e.maxOpen && t.push({interval: [i[1], 1 / 0], close: [0, 0]}), zi(t), y(t, function (t, e) {
                    t.index = e, t.text = this.formatValueText(t.interval)
                }, this)
            }, categories: function (t) {
                var e = this.option;
                y(e.categories, function (e) {
                    t.push({text: this.formatValueText(e, !0), value: e})
                }, this), wC(e, t)
            }, pieces: function (t) {
                var e = this.option;
                y(e.pieces, function (e, n) {
                    D(e) || (e = {value: e});
                    var i = {text: "", index: n};
                    if (null != e.label && (i.text = e.label), e.hasOwnProperty("value")) {
                        var r = i.value = e.value;
                        i.interval = [r, r], i.close = [1, 1]
                    } else {
                        for (var o = i.interval = [], a = i.close = [0, 0], s = [1, 0, 1], l = [-1 / 0, 1 / 0], u = [], h = 0; 2 > h; h++) {
                            for (var c = [["gte", "gt", "min"], ["lte", "lt", "max"]][h], p = 0; 3 > p && null == o[h]; p++) o[h] = e[c[p]], a[h] = s[p], u[h] = 2 === p;
                            null == o[h] && (o[h] = l[h])
                        }
                        u[0] && 1 / 0 === o[1] && (a[0] = 0), u[1] && o[0] === -1 / 0 && (a[1] = 0), o[0] === o[1] && a[0] && a[1] && (i.value = o[0])
                    }
                    i.visual = EH.retrieveVisuals(e), t.push(i)
                }, this), wC(e, t), zi(t), y(t, function (t) {
                    var e = t.close, n = [["<", "≤"][e[1]], [">", "≥"][e[0]]];
                    t.text = t.text || this.formatValueText(null != t.value ? t.value : t.interval, !1, n)
                }, this)
            }
        }, iq = function (t) {
            function n() {
                var e = null !== t && t.apply(this, arguments) || this;
                return e.type = n.type, e
            }

            return e(n, t), n.prototype.doRender = function () {
                var t = this.group;
                t.removeAll();
                var e = this.visualMapModel, n = e.get("textGap"), i = e.textStyleModel, r = i.getFont(),
                    o = i.getTextColor(), a = this._getItemAlign(), s = e.itemSize, l = this._getViewData(), u = l.endsText,
                    h = N(e.get("showLabel", !0), !u);
                u && this._renderEndsText(t, u[0], s, h, a), y(l.viewPieceList, function (i) {
                    var l = i.piece, u = new sL;
                    u.onclick = xA(this._onItemClick, this, l), this._enableHoverLink(u, i.indexInModelPieceList);
                    var c = e.getRepresentValue(l);
                    if (this._createItemSymbol(u, c, [0, 0, s[0], s[1]]), h) {
                        var p = this.visualMapModel.getValueState(c);
                        u.add(new $k({
                            style: {
                                x: "right" === a ? -n : s[0] + n,
                                y: s[1] / 2,
                                text: l.text,
                                verticalAlign: "middle",
                                align: a,
                                font: r,
                                fill: o,
                                opacity: "outOfRange" === p ? .5 : 1
                            }
                        }))
                    }
                    t.add(u)
                }, this), u && this._renderEndsText(t, u[1], s, h, a), dR(e.get("orient"), t, e.get("itemGap")), this.renderBackground(t), this.positionGroup(t)
            }, n.prototype._enableHoverLink = function (t, e) {
                var n = this;
                t.on("mouseover", function () {
                    return i("highlight")
                }).on("mouseout", function () {
                    return i("downplay")
                });
                var i = function (t) {
                    var i = n.visualMapModel;
                    i.option.hoverLink && n.api.dispatchAction({type: t, batch: pC(i.findTargetDataIndices(e), i)})
                }
            }, n.prototype._getItemAlign = function () {
                var t = this.visualMapModel, e = t.option;
                if ("vertical" === e.orient) return cC(t, this.api, t.itemSize);
                var n = e.align;
                return n && "auto" !== n || (n = "left"), n
            }, n.prototype._renderEndsText = function (t, e, n, i, r) {
                if (e) {
                    var o = new sL, a = this.visualMapModel.textStyleModel;
                    o.add(new $k({
                        style: {
                            x: i ? "right" === r ? n[0] : 0 : n[0] / 2,
                            y: n[1] / 2,
                            verticalAlign: "middle",
                            align: i ? r : "center",
                            text: e,
                            font: a.getFont(),
                            fill: a.getTextColor()
                        }
                    })), t.add(o)
                }
            }, n.prototype._getViewData = function () {
                var t = this.visualMapModel, e = v(t.getPieceList(), function (t, e) {
                    return {piece: t, indexInModelPieceList: e}
                }), n = t.get("text"), i = t.get("orient"), r = t.get("inverse");
                return ("horizontal" === i ? r : !r) ? e.reverse() : n && (n = n.slice().reverse()), {
                    viewPieceList: e,
                    endsText: n
                }
            }, n.prototype._createItemSymbol = function (t, e, n) {
                t.add(Sc(this.getControllerVisual(e, "symbol"), n[0], n[1], n[2], n[3], this.getControllerVisual(e, "color")))
            }, n.prototype._onItemClick = function (t) {
                var e = this.visualMapModel, n = e.option, i = s(n.selected), r = e.getSelectedMapKey(t);
                "single" === n.selectedMode ? (i[r] = !0, y(i, function (t, e) {
                    i[e] = e === r
                })) : i[r] = !i[r], this.api.dispatchAction({
                    type: "selectDataRange",
                    from: this.uid,
                    visualMapId: this.visualMapModel.id,
                    selected: i
                })
            }, n.type = "visualMap.piecewise", n
        }(Gj);
    df(MC);
    var rq = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "dataZoom.select", n
    }(VU), oq = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.type = "dataZoom.select", n
    }(GU), aq = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.optionUpdated = function () {
            t.prototype.optionUpdated.apply(this, arguments);
            var e = this.ecModel;
            y(this.option.feature, function (t, n) {
                var i = lC(n);
                i && (i.getDefaultOption && (i.defaultOption = i.getDefaultOption(e)), l(t, i.defaultOption))
            })
        }, n.type = "toolbox", n.layoutMode = {type: "box", ignoreSize: !0}, n.defaultOption = {
            show: !0,
            z: 6,
            zlevel: 0,
            orient: "horizontal",
            left: "right",
            top: "top",
            backgroundColor: "transparent",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemSize: 15,
            itemGap: 8,
            showTitle: !0,
            iconStyle: {borderColor: "#666", color: "none"},
            emphasis: {iconStyle: {borderColor: "#3E98C5"}},
            tooltip: {show: !1, position: "bottom"}
        }, n
    }(gR), sq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.render = function (t, e, n, i) {
            function r(r, a) {
                var s, c = h[r], p = h[a], d = l[c], f = new VO(d, t, t.ecModel);
                if (i && null != i.newTitle && i.featureName === c && (d.title = i.newTitle), c && !p) {
                    if (TC(c)) s = {onclick: f.option.onclick, featureName: c}; else {
                        var g = lC(c);
                        if (!g) return;
                        s = new g
                    }
                    u[c] = s
                } else if (s = u[p], !s) return;
                s.uid = Gs("toolbox-feature"), s.model = f, s.ecModel = e, s.api = n;
                var y = s instanceof Tj;
                return !c && p ? void (y && s.dispose && s.dispose(e, n)) : !f.get("show") || y && s.unusable ? void (y && s.remove && s.remove(e, n)) : (o(f, s, c), f.setIconStatus = function (t, e) {
                    var n = this.option, i = this.iconPaths;
                    n.iconStatus = n.iconStatus || {}, n.iconStatus[t] = e, i[t] && ("emphasis" === e ? aa : sa)(i[t])
                }, void (s instanceof Tj && s.render && s.render(f, e, n, i)))
            }

            function o(i, r, o) {
                var l, u, h = i.getModel("iconStyle"), c = i.getModel(["emphasis", "iconStyle"]),
                    p = r instanceof Tj && r.getIcons ? r.getIcons() : i.get("icon"), d = i.get("title") || {};
                "string" == typeof p ? (l = {}, l[o] = p) : l = p, "string" == typeof d ? (u = {}, u[o] = d) : u = d;
                var f = i.iconPaths = {};
                y(l, function (o, l) {
                    var p = Ss(o, {}, {x: -s / 2, y: -s / 2, width: s, height: s});
                    p.setStyle(h.getItemStyle());
                    var d = p.ensureState("emphasis");
                    d.style = c.getItemStyle();
                    var g = new $k({
                        style: {
                            text: u[l],
                            align: c.get("textAlign"),
                            borderRadius: c.get("textBorderRadius"),
                            padding: c.get("textPadding"),
                            fill: null
                        }, ignore: !0
                    });
                    p.setTextContent(g), As({
                        el: p,
                        componentModel: t,
                        itemName: l,
                        formatterParamsExtra: {title: u[l]}
                    }), p.__title = u[l], p.on("mouseover", function () {
                        var e = c.getItemStyle(),
                            n = "vertical" === t.get("orient") ? null == t.get("right") ? "right" : "left" : null == t.get("bottom") ? "bottom" : "top";
                        g.setStyle({
                            fill: c.get("textFill") || e.fill || e.stroke || "#000",
                            backgroundColor: c.get("textBackgroundColor")
                        }), p.setTextConfig({position: c.get("textPosition") || n}), g.ignore = !t.get("showTitle"), aa(this)
                    }).on("mouseout", function () {
                        "emphasis" !== i.get(["iconStatus", l]) && sa(this), g.hide()
                    }), ("emphasis" === i.get(["iconStatus", l]) ? aa : sa)(p), a.add(p), p.on("click", xA(r.onclick, r, e, n, l)), f[l] = p
                })
            }

            var a = this.group;
            if (a.removeAll(), t.get("show")) {
                var s = +t.get("itemSize"), l = t.get("feature") || {}, u = this._features || (this._features = {}),
                    h = [];
                y(l, function (t, e) {
                    h.push(e)
                }), new tV(this._featureNames || [], h).add(r).update(r).remove(S(r, null)).execute(), this._featureNames = h, qM(a, t, n), a.add(KM(a.getBoundingRect(), t)), a.eachChild(function (t) {
                    var e = t.__title, i = t.ensureState("emphasis"), r = i.textConfig || (i.textConfig = {}),
                        o = t.getTextContent(), l = o && o.states.emphasis;
                    if (l && !I(l) && e) {
                        var u = l.style || (l.style = {}), h = ti(e, $k.makeFont(u)), c = t.x + a.x, p = t.y + a.y + s,
                            d = !1;
                        p + h.height > n.getHeight() && (r.position = "top", d = !0);
                        var f = d ? -5 - h.height : s + 8;
                        c + h.width / 2 > n.getWidth() ? (r.position = ["100%", f], u.align = "right") : c - h.width / 2 < 0 && (r.position = [0, f], u.align = "left")
                    }
                })
            }
        }, n.prototype.updateView = function (t, e, n, i) {
            y(this._features, function (t) {
                t instanceof Tj && t.updateView && t.updateView(t.model, e, n, i)
            })
        }, n.prototype.remove = function (t, e) {
            y(this._features, function (n) {
                n instanceof Tj && n.remove && n.remove(t, e)
            }), this.group.removeAll()
        }, n.prototype.dispose = function (t, e) {
            y(this._features, function (n) {
                n instanceof Tj && n.dispose && n.dispose(t, e)
            })
        }, n.type = "toolbox", n
    }(Tz), lq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.onclick = function (t, e) {
            var n = this.model, i = n.get("name") || t.get("title.0.text") || "echartsAll",
                r = "svg" === e.getZr().painter.getType(), o = r ? "svg" : n.get("type", !0) || "png",
                a = e.getConnectedDataURL({
                    type: o,
                    backgroundColor: n.get("backgroundColor", !0) || t.get("backgroundColor") || "#fff",
                    connectedBackgroundColor: n.get("connectedBackgroundColor"),
                    excludeComponents: n.get("excludeComponents"),
                    pixelRatio: n.get("pixelRatio")
                });
            if ("function" != typeof MouseEvent || !oA.browser.newEdge && (oA.browser.ie || oA.browser.edge)) if (window.navigator.msSaveOrOpenBlob || r) {
                var s = a.split(","), l = s[0].indexOf("base64") > -1, u = r ? decodeURIComponent(s[1]) : s[1];
                l && (u = window.atob(u));
                var h = i + "." + o;
                if (window.navigator.msSaveOrOpenBlob) {
                    for (var c = u.length, p = new Uint8Array(c); c--;) p[c] = u.charCodeAt(c);
                    var d = new Blob([p]);
                    window.navigator.msSaveOrOpenBlob(d, h)
                } else {
                    var f = document.createElement("iframe");
                    document.body.appendChild(f);
                    var g = f.contentWindow, y = g.document;
                    y.open("image/svg+xml", "replace"), y.write(u), y.close(), g.focus(), y.execCommand("SaveAs", !0, h), document.body.removeChild(f)
                }
            } else {
                var v = n.get("lang"),
                    m = '<body style="margin:0;"><img src="' + a + '" style="max-width:100%;" title="' + (v && v[0] || "") + '" /></body>',
                    x = window.open();
                x.document.write(m), x.document.title = i
            } else {
                var _ = document.createElement("a");
                _.download = i + "." + o, _.target = "_blank", _.href = a;
                var b = new MouseEvent("click", {view: document.defaultView, bubbles: !0, cancelable: !1});
                _.dispatchEvent(b)
            }
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0,
                icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",
                title: t.getLocale(["toolbox", "saveAsImage", "title"]),
                type: "png",
                connectedBackgroundColor: "#fff",
                name: "",
                excludeComponents: ["toolbox"],
                lang: t.getLocale(["toolbox", "saveAsImage", "lang"])
            };
            return e
        }, n
    }(Tj);
    lq.prototype.unusable = !oA.canvasSupported;
    var uq = "__ec_magicType_stack__", hq = [["line", "bar"], ["stack"]], cq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.getIcons = function () {
            var t = this.model, e = t.get("icon"), n = {};
            return y(t.get("type"), function (t) {
                e[t] && (n[t] = e[t])
            }), n
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0,
                type: [],
                icon: {
                    line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",
                    bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",
                    stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"
                },
                title: t.getLocale(["toolbox", "magicType", "title"]),
                option: {},
                seriesIndex: {}
            };
            return e
        }, n.prototype.onclick = function (t, e, n) {
            var i = this.model, r = i.get(["seriesIndex", n]);
            if (pq[n]) {
                var o = {series: []}, a = function (t) {
                    var e = t.subType, r = t.id, a = pq[n](e, r, t, i);
                    a && (c(a, t.option), o.series.push(a));
                    var s = t.coordinateSystem;
                    if (s && "cartesian2d" === s.type && ("line" === n || "bar" === n)) {
                        var l = s.getAxesByScale("ordinal")[0];
                        if (l) {
                            var u = l.dim, h = u + "Axis", p = t.getReferringComponents(h, wL).models[0],
                                d = p.componentIndex;
                            o[h] = o[h] || [];
                            for (var f = 0; d >= f; f++) o[h][d] = o[h][d] || {};
                            o[h][d].boundaryGap = "bar" === n
                        }
                    }
                };
                y(hq, function (t) {
                    p(t, n) >= 0 && y(t, function (t) {
                        i.setIconStatus(t, "normal")
                    })
                }), i.setIconStatus(n, "emphasis"), t.eachComponent({
                    mainType: "series",
                    query: null == r ? null : {seriesIndex: r}
                }, a);
                var s, u = n;
                "stack" === n && (s = l({
                    stack: i.option.title.tiled,
                    tiled: i.option.title.stack
                }, i.option.title), "emphasis" !== i.get(["iconStatus", n]) && (u = "tiled")), e.dispatchAction({
                    type: "changeMagicType",
                    currentType: u,
                    newOption: o,
                    newTitle: s,
                    featureName: "magicType"
                })
            }
        }, n
    }(Tj), pq = {
        line: function (t, e, n, i) {
            return "bar" === t ? l({
                id: e,
                type: "line",
                data: n.get("data"),
                stack: n.get("stack"),
                markPoint: n.get("markPoint"),
                markLine: n.get("markLine")
            }, i.get(["option", "line"]) || {}, !0) : void 0
        }, bar: function (t, e, n, i) {
            return "line" === t ? l({
                id: e,
                type: "bar",
                data: n.get("data"),
                stack: n.get("stack"),
                markPoint: n.get("markPoint"),
                markLine: n.get("markLine")
            }, i.get(["option", "bar"]) || {}, !0) : void 0
        }, stack: function (t, e, n, i) {
            var r = n.get("stack") === uq;
            return "line" === t || "bar" === t ? (i.setIconStatus("stack", r ? "normal" : "emphasis"), l({
                id: e,
                stack: r ? "" : uq
            }, i.get(["option", "stack"]) || {}, !0)) : void 0
        }
    };
    Xp({type: "changeMagicType", event: "magicTypeChanged", update: "prepareAndUpdate"}, function (t, e) {
        e.mergeOption(t.newOption)
    });
    var dq = new Array(60).join("-"), fq = "    ", gq = new RegExp("[" + fq + "]+", "g"), yq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.onclick = function (t, e) {
            function n() {
                i.removeChild(o), x._dom = null
            }

            var i = e.getDom(), r = this.model;
            this._dom && i.removeChild(this._dom);
            var o = document.createElement("div");
            o.style.cssText = "position:absolute;left:5px;top:5px;bottom:5px;right:5px;", o.style.backgroundColor = r.get("backgroundColor") || "#fff";
            var a = document.createElement("h4"), s = r.get("lang") || [];
            a.innerHTML = s[0] || r.get("title"), a.style.cssText = "margin: 10px 20px;", a.style.color = r.get("textColor");
            var l = document.createElement("div"), u = document.createElement("textarea");
            l.style.cssText = "display:block;width:100%;overflow:auto;";
            var h = r.get("optionToContent"), c = r.get("contentToOption"), p = LC(t);
            if ("function" == typeof h) {
                var d = h(e.getOption());
                "string" == typeof d ? l.innerHTML = d : P(d) && l.appendChild(d)
            } else l.appendChild(u), u.readOnly = r.get("readOnly"), u.style.cssText = "width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;", u.style.color = r.get("textColor"), u.style.borderColor = r.get("textareaBorderColor"), u.style.backgroundColor = r.get("textareaColor"), u.value = p.value;
            var f = p.meta, g = document.createElement("div");
            g.style.cssText = "position:absolute;bottom:0;left:0;right:0;";
            var y = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",
                v = document.createElement("div"), m = document.createElement("div");
            y += ";background-color:" + r.get("buttonColor"), y += ";color:" + r.get("buttonTextColor");
            var x = this;
            Le(v, "click", n), Le(m, "click", function () {
                if (null == c && null != h || null != c && null == h) return void n();
                var t;
                try {
                    t = "function" == typeof c ? c(l, e.getOption()) : zC(u.value, f)
                } catch (i) {
                    throw n(), new Error("Data view format error " + i)
                }
                t && e.dispatchAction({type: "changeDataView", newOption: t}), n()
            }), v.innerHTML = s[1], m.innerHTML = s[2], m.style.cssText = y, v.style.cssText = y, !r.get("readOnly") && g.appendChild(m), g.appendChild(v), o.appendChild(a), o.appendChild(l), o.appendChild(g), l.style.height = i.clientHeight - 80 + "px", i.appendChild(o), this._dom = o
        }, n.prototype.remove = function (t, e) {
            this._dom && e.getDom().removeChild(this._dom)
        }, n.prototype.dispose = function (t, e) {
            this.remove(t, e)
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0,
                readOnly: !1,
                optionToContent: null,
                contentToOption: null,
                icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",
                title: t.getLocale(["toolbox", "dataView", "title"]),
                lang: t.getLocale(["toolbox", "dataView", "lang"]),
                backgroundColor: "#fff",
                textColor: "#000",
                textareaColor: "#fff",
                textareaBorderColor: "#333",
                buttonColor: "#c23531",
                buttonTextColor: "#fff"
            };
            return e
        }, n
    }(Tj);
    Xp({type: "changeDataView", event: "dataViewChanged", update: "prepareAndUpdate"}, function (t, e) {
        var n = [];
        y(t.newOption.series, function (t) {
            var i = e.getSeriesByName(t.name)[0];
            if (i) {
                var r = i.get("data");
                n.push({name: t.name, data: EC(t.data, r)})
            } else n.push(h({type: "scatter"}, t))
        }), e.mergeOption(c({series: n}, t.newOption))
    });
    var vq = y, mq = ur(), xq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.onclick = function (t, e) {
            VC(t), e.dispatchAction({type: "restore", from: this.uid})
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0,
                icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",
                title: t.getLocale(["toolbox", "restore", "title"])
            };
            return e
        }, n
    }(Tj);
    Xp({type: "restore", event: "restore", update: "prepareAndUpdate"}, function (t, e) {
        e.resetOption("recreate")
    });
    var _q = y, bq = rr("toolbox-dataZoom_"), wq = function (t) {
        function n() {
            return null !== t && t.apply(this, arguments) || this
        }

        return e(n, t), n.prototype.render = function (t, e, n, i) {
            this._brushController || (this._brushController = new PX(n.getZr()), this._brushController.on("brush", xA(this._onBrush, this)).mount()), XC(t, e, this, i, n), WC(t, e)
        }, n.prototype.onclick = function (t, e, n) {
            Sq[n].call(this)
        }, n.prototype.remove = function () {
            this._brushController && this._brushController.unmount()
        }, n.prototype.dispose = function () {
            this._brushController && this._brushController.dispose()
        }, n.prototype._onBrush = function (t) {
            function e(t, e, i) {
                var a = e.getAxis(t), s = a.model, l = n(t, s, o), u = l.findRepresentativeAxisProxy(s).getMinMaxSpan();
                (null != u.minValueSpan || null != u.maxValueSpan) && (i = qx(0, i.slice(), a.scale.getExtent(), 0, u.minValueSpan, u.maxValueSpan)), l && (r[l.id] = {
                    dataZoomId: l.id,
                    startValue: i[0],
                    endValue: i[1]
                })
            }

            function n(t, e, n) {
                var i;
                return n.eachComponent({mainType: "dataZoom", subType: "select"}, function (n) {
                    var r = n.getAxisModel(t, e.componentIndex);
                    r && (i = n)
                }), i
            }

            var i = t.areas;
            if (t.isEnd && i.length) {
                var r = {}, o = this.ecModel;
                this._brushController.updateCovers([]);
                var a = new dj(HC(this.model), o, {include: ["grid"]});
                a.matchOutputRanges(i, o, function (t, n, i) {
                    if ("cartesian2d" === i.type) {
                        var r = t.brushType;
                        "rect" === r ? (e("x", i, n[0]), e("y", i, n[1])) : e({lineX: "x", lineY: "y"}[r], i, n)
                    }
                }), NC(o, r), this._dispatchZoomAction(r)
            }
        }, n.prototype._dispatchZoomAction = function (t) {
            var e = [];
            _q(t, function (t) {
                e.push(s(t))
            }), e.length && this.api.dispatchAction({type: "dataZoom", from: this.uid, batch: e})
        }, n.getDefaultOption = function (t) {
            var e = {
                show: !0,
                filterMode: "filter",
                icon: {
                    zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",
                    back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"
                },
                title: t.getLocale(["toolbox", "dataZoom", "title"]),
                brushStyle: {borderWidth: 0, color: "rgba(210,219,238,0.2)"}
            };
            return e
        }, n
    }(Tj), Sq = {
        zoom: function () {
            var t = !this._isZoomActive;
            this.api.dispatchAction({type: "takeGlobalCursor", key: "dataZoomSelect", dataZoomSelectActive: t})
        }, back: function () {
            this._dispatchZoomAction(BC(this.ecModel))
        }
    };
    Zl("dataZoom", function (t) {
        function e(t, e, n) {
            var i = t.componentIndex,
                a = {type: "select", $fromToolbox: !0, filterMode: r.get("filterMode", !0) || "filter", id: bq + e + i};
            a[n] = i, o.push(a)
        }

        var n = t.getComponent("toolbox", 0), i = ["feature", "dataZoom"];
        if (n && null != n.get(i)) {
            var r = n.getModel(i), o = [], a = HC(r), s = hr(t, a);
            return _q(s.xAxisModels, function (t) {
                return e(t, "xAxis", "xAxisIndex")
            }), _q(s.yAxisModels, function (t) {
                return e(t, "yAxis", "yAxisIndex")
            }), o
        }
    }), df(YC);
    var Mq = ur(), Iq = {path: null, compoundPath: null, group: sL, image: Wk, text: $k}, Tq = function (t) {
        var e = t.graphic;
        M(e) ? t.graphic = e[0] && e[0].elements ? [t.graphic[0]] : [{elements: e}] : e && !e.elements && (t.graphic = [{elements: [e]}])
    }, Cq = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e.preventAutoZ = !0, e
        }

        return e(n, t), n.prototype.mergeOption = function (e, n) {
            var i = this.option.elements;
            this.option.elements = null, t.prototype.mergeOption.call(this, e, n), this.option.elements = i
        }, n.prototype.optionUpdated = function (t, e) {
            var n = this.option, i = (e ? n : t).elements, r = n.elements = e ? [] : n.elements, o = [];
            this._flatten(i, o, null);
            var a = Zi(r, o, "normalMerge"), s = this._elOptionsToUpdate = [];
            y(a, function (t, e) {
                var n = t.newOption;
                n && (s.push(n), KC(t, n), $C(r, e, n), JC(r[e], n))
            }, this);
            for (var l = r.length - 1; l >= 0; l--) null == r[l] ? r.splice(l, 1) : delete r[l].$action
        }, n.prototype._flatten = function (t, e, n) {
            y(t, function (t) {
                if (t) {
                    n && (t.parentOption = n), e.push(t);
                    var i = t.children;
                    "group" === t.type && i && this._flatten(i, e, t), delete t.children
                }
            }, this)
        }, n.prototype.useElOptionsToUpdate = function () {
            var t = this._elOptionsToUpdate;
            return this._elOptionsToUpdate = null, t
        }, n.type = "graphic", n.defaultOption = {elements: []}, n
    }(gR), Aq = function (t) {
        function n() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.type = n.type, e
        }

        return e(n, t), n.prototype.init = function () {
            this._elMap = Z()
        }, n.prototype.render = function (t, e, n) {
            t !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = t, this._updateElements(t), this._relocate(t, n)
        }, n.prototype._updateElements = function (t) {
            var e = t.useElOptionsToUpdate();
            if (e) {
                var n = this._elMap, i = this.group;
                y(e, function (e) {
                    var r = er(e.id, null), o = null != r ? n.get(r) : null, a = er(e.parentId, null),
                        s = null != a ? n.get(a) : i, l = e.type, u = e.style;
                    "text" === l && u && e.hv && e.hv[1] && (u.textVerticalAlign = u.textBaseline = u.verticalAlign = u.align = null);
                    var h = e.textContent, c = e.textConfig;
                    if (u && uw(u, l, !!c, !!h)) {
                        var p = hw(u, l, !0);
                        !c && p.textConfig && (c = e.textConfig = p.textConfig), !h && p.textContent && (h = p.textContent)
                    }
                    var d = jC(e), f = e.$action || "merge";
                    "merge" === f ? o ? o.attr(d) : ZC(r, s, d, n) : "replace" === f ? (UC(o, n), ZC(r, s, d, n)) : "remove" === f && UC(o, n);
                    var g = n.get(r);
                    if (g && h) if ("merge" === f) {
                        var y = g.getTextContent();
                        y ? y.attr(h) : g.setTextContent(new $k(h))
                    } else "replace" === f && g.setTextContent(new $k(h));
                    if (g) {
                        var v = Mq(g);
                        v.__ecGraphicWidthOption = e.width, v.__ecGraphicHeightOption = e.height, QC(g, t, e), As({
                            el: g,
                            componentModel: t,
                            itemName: g.name,
                            itemTooltipOption: e.tooltip
                        })
                    }
                })
            }
        }, n.prototype._relocate = function (t, e) {
            for (var n = t.option.elements, i = this.group, r = this._elMap, o = e.getWidth(), a = e.getHeight(), s = 0; s < n.length; s++) {
                var l = n[s], u = er(l.id, null), h = null != u ? r.get(u) : null;
                if (h && h.isGroup) {
                    var c = h.parent, p = c === i, d = Mq(h), f = Mq(c);
                    d.__ecGraphicWidth = _i(d.__ecGraphicWidthOption, p ? o : f.__ecGraphicWidth) || 0, d.__ecGraphicHeight = _i(d.__ecGraphicHeightOption, p ? a : f.__ecGraphicHeight) || 0
                }
            }
            for (var s = n.length - 1; s >= 0; s--) {
                var l = n[s], u = er(l.id, null), h = null != u ? r.get(u) : null;
                if (h) {
                    var c = h.parent, f = Mq(c),
                        g = c === i ? {width: o, height: a} : {width: f.__ecGraphicWidth, height: f.__ecGraphicHeight};
                    Pl(h, l, g, null, {hv: l.hv, boundingMode: l.bounding})
                }
            }
        }, n.prototype._clear = function () {
            var t = this._elMap;
            t.each(function (e) {
                UC(e, t)
            }), this._elMap = Z()
        }, n.prototype.dispose = function () {
            this._clear()
        }, n.type = "graphic", n
    }(Tz);
    df(tA), t.version = SN, t.dependencies = MN, t.PRIORITY = GN, t.init = Op, t.connect = Rp, t.disConnect = zp, t.disconnect = EB, t.dispose = Ep, t.getInstanceByDom = Np, t.getInstanceById = Bp, t.registerTheme = Vp, t.registerPreprocessor = Fp, t.registerProcessor = Gp, t.registerPostInit = Hp, t.registerPostUpdate = Wp, t.registerAction = Xp, t.registerCoordinateSystem = Yp, t.getCoordinateSystemDimensions = Zp, t.registerLayout = Up, t.registerVisual = jp, t.registerLoading = Kp, t.setCanvasCreator = $p, t.registerMap = Jp, t.getMap = Qp, t.registerTransform = BB, t.dataTool = QB, t.registerLocale = Ys, t.zrender = dL, t.matrix = RD, t.vector = CA, t.zrUtil = wA, t.color = hD, t.helper = XV, t.number = UV, t.time = jV, t.graphic = qV, t.format = KV, t.util = $V, t.ComponentModel = gR, t.ComponentView = Tz, t.SeriesModel = Iz, t.ChartView = Dz, t.extendComponentModel = Lf, t.extendComponentView = kf, t.extendSeriesModel = Pf, t.extendChartView = Of, t.throttle = Ph, t.use = df, t.parseGeoJSON = Sp, t.parseGeoJson = Sp, t.env = oA, t.List = fV, t.Model = VO, t.Axis = tF, t.innerDrawElementOnCanvas = Zc
});