function getDefaultExportFromCjs(x) {
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
var plotlyBasic_min = { exports: {} };
var hasRequiredPlotlyBasic_min;
function requirePlotlyBasic_min() {
  if (hasRequiredPlotlyBasic_min) return plotlyBasic_min.exports;
  hasRequiredPlotlyBasic_min = 1;
  (function(module, exports) {
    /*! For license information please see plotly-basic.min.js.LICENSE.txt */
    !function(e, t) {
      module.exports = t();
    }(self, function() {
      return function() {
        var e = { 6713: function(e2, t2, r2) {
          var n = r2(4809), a = { "X,X div": 'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;', "X input,X button": 'font-family:"Open Sans",verdana,arial,sans-serif;', "X input:focus,X button:focus": "outline:none;", "X a": "text-decoration:none;", "X a:hover": "text-decoration:none;", "X .crisp": "shape-rendering:crispEdges;", "X .user-select-none": "-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;", "X svg": "overflow:hidden;", "X svg a": "fill:#447adb;", "X svg a:hover": "fill:#3c6dc5;", "X .main-svg": "position:absolute;top:0;left:0;pointer-events:none;", "X .main-svg .draglayer": "pointer-events:all;", "X .cursor-default": "cursor:default;", "X .cursor-pointer": "cursor:pointer;", "X .cursor-crosshair": "cursor:crosshair;", "X .cursor-move": "cursor:move;", "X .cursor-col-resize": "cursor:col-resize;", "X .cursor-row-resize": "cursor:row-resize;", "X .cursor-ns-resize": "cursor:ns-resize;", "X .cursor-ew-resize": "cursor:ew-resize;", "X .cursor-sw-resize": "cursor:sw-resize;", "X .cursor-s-resize": "cursor:s-resize;", "X .cursor-se-resize": "cursor:se-resize;", "X .cursor-w-resize": "cursor:w-resize;", "X .cursor-e-resize": "cursor:e-resize;", "X .cursor-nw-resize": "cursor:nw-resize;", "X .cursor-n-resize": "cursor:n-resize;", "X .cursor-ne-resize": "cursor:ne-resize;", "X .cursor-grab": "cursor:-webkit-grab;cursor:grab;", "X .modebar": "position:absolute;top:2px;right:2px;", "X .ease-bg": "-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;", "X .modebar--hover>:not(.watermark)": "opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;", "X:hover .modebar--hover .modebar-group": "opacity:1;", "X .modebar-group": "float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;", "X .modebar-btn": "position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;", "X .modebar-btn svg": "position:relative;top:2px;", "X .modebar.vertical": "display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;", "X .modebar.vertical svg": "top:-1px;", "X .modebar.vertical .modebar-group": "display:block;float:none;padding-left:0px;padding-bottom:8px;", "X .modebar.vertical .modebar-group .modebar-btn": "display:block;text-align:center;", "X [data-title]:before,X [data-title]:after": "position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;", "X [data-title]:hover:before,X [data-title]:hover:after": "display:block;opacity:1;", "X [data-title]:before": 'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;', "X [data-title]:after": "content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;", "X .vertical [data-title]:before,X .vertical [data-title]:after": "top:0%;right:200%;", "X .vertical [data-title]:before": "border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;", Y: 'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;', "Y p": "margin:0;", "Y .notifier-note": "min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;", "Y .notifier-close": "color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;", "Y .notifier-close:hover": "color:#444;text-decoration:none;cursor:pointer;" };
          for (var i in a) {
            var o = i.replace(/^,/, " ,").replace(/X/g, ".js-plotly-plot .plotly").replace(/Y/g, ".plotly-notifier");
            n.addStyleRule(o, a[i]);
          }
        }, 4187: function(e2, t2, r2) {
          e2.exports = r2(7908);
        }, 273: function(e2, t2, r2) {
          e2.exports = r2(8218);
        }, 8847: function(e2, t2, r2) {
          e2.exports = r2(7317);
        }, 7549: function(e2, t2, r2) {
          e2.exports = r2(7430);
        }, 6200: function(e2, t2, r2) {
          e2.exports = r2(2849);
        }, 3430: function(e2, t2, r2) {
          e2.exports = r2(453);
        }, 5611: function(e2, t2, r2) {
          var n = r2(7549);
          n.register([r2(273), r2(8170), r2(4187), r2(6200), r2(3430), r2(590), r2(8847)]), e2.exports = n;
        }, 8170: function(e2, t2, r2) {
          e2.exports = r2(9913);
        }, 590: function(e2, t2, r2) {
          e2.exports = r2(9855);
        }, 1645: function(e2) {
          e2.exports = [{ path: "", backoff: 0 }, { path: "M-2.4,-3V3L0.6,0Z", backoff: 0.6 }, { path: "M-3.7,-2.5V2.5L1.3,0Z", backoff: 1.3 }, { path: "M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z", backoff: 1.55 }, { path: "M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z", backoff: 1.6 }, { path: "M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z", backoff: 2 }, { path: "M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z", backoff: 0, noRotate: true }, { path: "M2,2V-2H-2V2Z", backoff: 0, noRotate: true }];
        }, 222: function(e2, t2, r2) {
          var n = r2(1645), a = r2(337), i = r2(4826), o = r2(8032).templatedArray;
          r2(5081), e2.exports = o("annotation", { visible: { valType: "boolean", dflt: true, editType: "calc+arraydraw" }, text: { valType: "string", editType: "calc+arraydraw" }, textangle: { valType: "angle", dflt: 0, editType: "calc+arraydraw" }, font: a({ editType: "calc+arraydraw", colorEditType: "arraydraw" }), width: { valType: "number", min: 1, dflt: null, editType: "calc+arraydraw" }, height: { valType: "number", min: 1, dflt: null, editType: "calc+arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw" }, align: { valType: "enumerated", values: ["left", "center", "right"], dflt: "center", editType: "arraydraw" }, valign: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "middle", editType: "arraydraw" }, bgcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw" }, bordercolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw" }, borderpad: { valType: "number", min: 0, dflt: 1, editType: "calc+arraydraw" }, borderwidth: { valType: "number", min: 0, dflt: 1, editType: "calc+arraydraw" }, showarrow: { valType: "boolean", dflt: true, editType: "calc+arraydraw" }, arrowcolor: { valType: "color", editType: "arraydraw" }, arrowhead: { valType: "integer", min: 0, max: n.length, dflt: 1, editType: "arraydraw" }, startarrowhead: { valType: "integer", min: 0, max: n.length, dflt: 1, editType: "arraydraw" }, arrowside: { valType: "flaglist", flags: ["end", "start"], extras: ["none"], dflt: "end", editType: "arraydraw" }, arrowsize: { valType: "number", min: 0.3, dflt: 1, editType: "calc+arraydraw" }, startarrowsize: { valType: "number", min: 0.3, dflt: 1, editType: "calc+arraydraw" }, arrowwidth: { valType: "number", min: 0.1, editType: "calc+arraydraw" }, standoff: { valType: "number", min: 0, dflt: 0, editType: "calc+arraydraw" }, startstandoff: { valType: "number", min: 0, dflt: 0, editType: "calc+arraydraw" }, ax: { valType: "any", editType: "calc+arraydraw" }, ay: { valType: "any", editType: "calc+arraydraw" }, axref: { valType: "enumerated", dflt: "pixel", values: ["pixel", i.idRegex.x.toString()], editType: "calc" }, ayref: { valType: "enumerated", dflt: "pixel", values: ["pixel", i.idRegex.y.toString()], editType: "calc" }, xref: { valType: "enumerated", values: ["paper", i.idRegex.x.toString()], editType: "calc" }, x: { valType: "any", editType: "calc+arraydraw" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "auto", editType: "calc+arraydraw" }, xshift: { valType: "number", dflt: 0, editType: "calc+arraydraw" }, yref: { valType: "enumerated", values: ["paper", i.idRegex.y.toString()], editType: "calc" }, y: { valType: "any", editType: "calc+arraydraw" }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "auto", editType: "calc+arraydraw" }, yshift: { valType: "number", dflt: 0, editType: "calc+arraydraw" }, clicktoshow: { valType: "enumerated", values: [false, "onoff", "onout"], dflt: false, editType: "arraydraw" }, xclick: { valType: "any", editType: "arraydraw" }, yclick: { valType: "any", editType: "arraydraw" }, hovertext: { valType: "string", editType: "arraydraw" }, hoverlabel: { bgcolor: { valType: "color", editType: "arraydraw" }, bordercolor: { valType: "color", editType: "arraydraw" }, font: a({ editType: "arraydraw" }), editType: "arraydraw" }, captureevents: { valType: "boolean", editType: "arraydraw" }, editType: "calc", _deprecated: { ref: { valType: "string", editType: "calc" } } });
        }, 317: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(3377).draw;
          function o(e3) {
            var t3 = e3._fullLayout;
            n.filterVisible(t3.annotations).forEach(function(t4) {
              var r3 = a.getFromId(e3, t4.xref), n2 = a.getFromId(e3, t4.yref), i2 = a.getRefType(t4.xref), o2 = a.getRefType(t4.yref);
              t4._extremes = {}, "range" === i2 && l(t4, r3), "range" === o2 && l(t4, n2);
            });
          }
          function l(e3, t3) {
            var r3, n2 = t3._id, i2 = n2.charAt(0), o2 = e3[i2], l2 = e3["a" + i2], s = e3[i2 + "ref"], c = e3["a" + i2 + "ref"], u = e3["_" + i2 + "padplus"], f = e3["_" + i2 + "padminus"], d = { x: 1, y: -1 }[i2] * e3[i2 + "shift"], h = 3 * e3.arrowsize * e3.arrowwidth || 0, p = h + d, v = h - d, g = 3 * e3.startarrowsize * e3.arrowwidth || 0, m = g + d, y = g - d;
            if (c === s) {
              var x = a.findExtremes(t3, [t3.r2c(o2)], { ppadplus: p, ppadminus: v }), b = a.findExtremes(t3, [t3.r2c(l2)], { ppadplus: Math.max(u, m), ppadminus: Math.max(f, y) });
              r3 = { min: [x.min[0], b.min[0]], max: [x.max[0], b.max[0]] };
            } else m = l2 ? m + l2 : m, y = l2 ? y - l2 : y, r3 = a.findExtremes(t3, [t3.r2c(o2)], { ppadplus: Math.max(u, p, m), ppadminus: Math.max(f, v, y) });
            e3._extremes[n2] = r3;
          }
          e2.exports = function(e3) {
            var t3 = e3._fullLayout;
            if (n.filterVisible(t3.annotations).length && e3._fullData.length) return n.syncOrAsync([i, o], e3);
          };
        }, 6035: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3626), i = r2(8032).arrayEditor;
          function o(e3, t3) {
            var r3, n2, a2, i2, o2, s, c, u = e3._fullLayout.annotations, f = [], d = [], h = [], p = (t3 || []).length;
            for (r3 = 0; r3 < u.length; r3++) if (i2 = (a2 = u[r3]).clicktoshow) {
              for (n2 = 0; n2 < p; n2++) if (s = (o2 = t3[n2]).xaxis, c = o2.yaxis, s._id === a2.xref && c._id === a2.yref && s.d2r(o2.x) === l(a2._xclick, s) && c.d2r(o2.y) === l(a2._yclick, c)) {
                (a2.visible ? "onout" === i2 ? d : h : f).push(r3);
                break;
              }
              n2 === p && a2.visible && "onout" === i2 && d.push(r3);
            }
            return { on: f, off: d, explicitOff: h };
          }
          function l(e3, t3) {
            return "log" === t3.type ? t3.l2r(e3) : t3.d2r(e3);
          }
          e2.exports = { hasClickToShow: function(e3, t3) {
            var r3 = o(e3, t3);
            return r3.on.length > 0 || r3.explicitOff.length > 0;
          }, onClick: function(e3, t3) {
            var r3, l2, s = o(e3, t3), c = s.on, u = s.off.concat(s.explicitOff), f = {}, d = e3._fullLayout.annotations;
            if (c.length || u.length) {
              for (r3 = 0; r3 < c.length; r3++) (l2 = i(e3.layout, "annotations", d[c[r3]])).modifyItem("visible", true), n.extendFlat(f, l2.getUpdateObj());
              for (r3 = 0; r3 < u.length; r3++) (l2 = i(e3.layout, "annotations", d[u[r3]])).modifyItem("visible", false), n.extendFlat(f, l2.getUpdateObj());
              return a.call("update", e3, {}, f);
            }
          } };
        }, 3271: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766);
          e2.exports = function(e3, t3, r3, i) {
            i("opacity");
            var o = i("bgcolor"), l = i("bordercolor"), s = a.opacity(l);
            i("borderpad");
            var c = i("borderwidth"), u = i("showarrow");
            if (i("text", u ? " " : r3._dfltTitle.annotation), i("textangle"), n.coerceFont(i, "font", r3.font), i("width"), i("align"), i("height") && i("valign"), u) {
              var f, d, h = i("arrowside");
              -1 !== h.indexOf("end") && (f = i("arrowhead"), d = i("arrowsize")), -1 !== h.indexOf("start") && (i("startarrowhead", f), i("startarrowsize", d)), i("arrowcolor", s ? t3.bordercolor : a.defaultLine), i("arrowwidth", 2 * (s && c || 1)), i("standoff"), i("startstandoff");
            }
            var p = i("hovertext"), v = r3.hoverlabel || {};
            if (p) {
              var g = i("hoverlabel.bgcolor", v.bgcolor || (a.opacity(o) ? a.rgb(o) : a.defaultLine)), m = i("hoverlabel.bordercolor", v.bordercolor || a.contrast(g)), y = n.extendFlat({}, v.font);
              y.color || (y.color = m), n.coerceFont(i, "hoverlabel.font", y);
            }
            i("captureevents", !!p);
          };
        }, 9741: function(e2, t2, r2) {
          var n = r2(721), a = r2(8083);
          e2.exports = function(e3, t3, r3, i) {
            t3 = t3 || {};
            var o = "log" === r3 && "linear" === t3.type, l = "linear" === r3 && "log" === t3.type;
            if (o || l) for (var s, c, u = e3._fullLayout.annotations, f = t3._id.charAt(0), d = 0; d < u.length; d++) s = u[d], c = "annotations[" + d + "].", s[f + "ref"] === t3._id && h(f), s["a" + f + "ref"] === t3._id && h("a" + f);
            function h(e4) {
              var r4 = s[e4], l2 = null;
              l2 = o ? a(r4, t3.range) : Math.pow(10, r4), n(l2) || (l2 = null), i(c + e4, l2);
            }
          };
        }, 6118: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(9008), o = r2(3271), l = r2(222);
          function s(e3, t3, r3) {
            function i2(r4, a2) {
              return n.coerce(e3, t3, l, r4, a2);
            }
            var s2 = i2("visible"), c = i2("clicktoshow");
            if (s2 || c) {
              o(e3, t3, r3, i2);
              for (var u = t3.showarrow, f = ["x", "y"], d = [-10, -30], h = { _fullLayout: r3 }, p = 0; p < 2; p++) {
                var v = f[p], g = a.coerceRef(e3, t3, h, v, "", "paper");
                if ("paper" !== g && a.getFromId(h, g)._annIndices.push(t3._index), a.coercePosition(t3, h, i2, g, v, 0.5), u) {
                  var m = "a" + v, y = a.coerceRef(e3, t3, h, m, "pixel", ["pixel", "paper"]);
                  "pixel" !== y && y !== g && (y = t3[m] = "pixel");
                  var x = "pixel" === y ? d[p] : 0.4;
                  a.coercePosition(t3, h, i2, y, m, x);
                }
                i2(v + "anchor"), i2(v + "shift");
              }
              if (n.noneOrAll(e3, t3, ["x", "y"]), u && n.noneOrAll(e3, t3, ["ax", "ay"]), c) {
                var b = i2("xclick"), _ = i2("yclick");
                t3._xclick = void 0 === b ? t3.x : a.cleanPosition(b, h, t3.xref), t3._yclick = void 0 === _ ? t3.y : a.cleanPosition(_, h, t3.yref);
              }
            }
          }
          e2.exports = function(e3, t3) {
            i(e3, t3, { name: "annotations", handleItemDefaults: s });
          };
        }, 3377: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4122), o = r2(4809), l = o.strTranslate, s = r2(9714), c = r2(8766), u = r2(2203), f = r2(2141), d = r2(635), h = r2(7983), p = r2(4751), v = r2(8032).arrayEditor, g = r2(3768);
          function m(e3, t3) {
            var r3 = e3._fullLayout.annotations[t3] || {}, n2 = s.getFromId(e3, r3.xref), a2 = s.getFromId(e3, r3.yref);
            n2 && n2.setScale(), a2 && a2.setScale(), x(e3, r3, t3, false, n2, a2);
          }
          function y(e3, t3, r3, n2, a2) {
            var i2 = a2[r3], o2 = a2[r3 + "ref"], l2 = -1 !== r3.indexOf("y"), c2 = "domain" === s.getRefType(o2), u2 = l2 ? n2.h : n2.w;
            return e3 ? c2 ? i2 + (l2 ? -t3 : t3) / e3._length : e3.p2r(e3.r2p(i2) + t3) : i2 + (l2 ? -t3 : t3) / u2;
          }
          function x(e3, t3, r3, i2, m2, x2) {
            var b, _, w = e3._fullLayout, T = e3._fullLayout._size, M = e3._context.edits;
            i2 ? (b = "annotation-" + i2, _ = i2 + ".annotations") : (b = "annotation", _ = "annotations");
            var k = v(e3.layout, _, t3), A = k.modifyBase, L = k.modifyItem, S = k.getUpdateObj;
            w._infolayer.selectAll("." + b + '[data-index="' + r3 + '"]').remove();
            var C = "clip" + w._uid + "_ann" + r3;
            if (t3._input && false !== t3.visible) {
              var O = { x: {}, y: {} }, D = +t3.textangle || 0, P = w._infolayer.append("g").classed(b, true).attr("data-index", String(r3)).style("opacity", t3.opacity), z = P.append("g").classed("annotation-text-g", true), I = M[t3.showarrow ? "annotationTail" : "annotationPosition"], E = t3.captureevents || M.annotationText || I, R = z.append("g").style("pointer-events", E ? "all" : null).call(h, "pointer").on("click", function() {
                e3._dragging = false, e3.emit("plotly_clickannotation", G(n.event));
              });
              t3.hovertext && R.on("mouseover", function() {
                var r4 = t3.hoverlabel, n2 = r4.font, a2 = this.getBoundingClientRect(), i3 = e3.getBoundingClientRect();
                f.loneHover({ x0: a2.left - i3.left, x1: a2.right - i3.left, y: (a2.top + a2.bottom) / 2 - i3.top, text: t3.hovertext, color: r4.bgcolor, borderColor: r4.bordercolor, fontFamily: n2.family, fontSize: n2.size, fontColor: n2.color, fontWeight: n2.weight, fontStyle: n2.style, fontVariant: n2.variant, fontShadow: n2.fontShadow, fontLineposition: n2.fontLineposition, fontTextcase: n2.fontTextcase }, { container: w._hoverlayer.node(), outerContainer: w._paper.node(), gd: e3 });
              }).on("mouseout", function() {
                f.loneUnhover(w._hoverlayer.node());
              });
              var N = t3.borderwidth, F = t3.borderpad, H = N + F, B = R.append("rect").attr("class", "bg").style("stroke-width", N + "px").call(c.stroke, t3.bordercolor).call(c.fill, t3.bgcolor), j = t3.width || t3.height, Y = w._topclips.selectAll("#" + C).data(j ? [0] : []);
              Y.enter().append("clipPath").classed("annclip", true).attr("id", C).append("rect"), Y.exit().remove();
              var V = t3.font, U = w._meta ? o.templateString(t3.text, w._meta) : t3.text, q = R.append("text").classed("annotation-text", true).text(U);
              M.annotationText ? q.call(d.makeEditable, { delegate: R, gd: e3 }).call(Z).on("edit", function(r4) {
                t3.text = r4, this.call(Z), L("text", r4), m2 && m2.autorange && A(m2._name + ".autorange", true), x2 && x2.autorange && A(x2._name + ".autorange", true), a.call("_guiRelayout", e3, S());
              }) : q.call(Z);
            } else n.selectAll("#" + C).remove();
            function G(e4) {
              var n2 = { index: r3, annotation: t3._input, fullAnnotation: t3, event: e4 };
              return i2 && (n2.subplotId = i2), n2;
            }
            function Z(r4) {
              return r4.call(u.font, V).attr({ "text-anchor": { left: "start", right: "end" }[t3.align] || "middle" }), d.convertToTspans(r4, e3, W), r4;
            }
            function W() {
              var r4 = q.selectAll("a");
              1 === r4.size() && r4.text() === q.text() && R.insert("a", ":first-child").attr({ "xlink:xlink:href": r4.attr("xlink:href"), "xlink:xlink:show": r4.attr("xlink:show") }).style({ cursor: "pointer" }).node().appendChild(B.node());
              var n2 = R.select(".annotation-text-math-group"), f2 = !n2.empty(), v2 = u.bBox((f2 ? n2 : q).node()), b2 = v2.width, _2 = v2.height, k2 = t3.width || b2, E2 = t3.height || _2, F2 = Math.round(k2 + 2 * H), V2 = Math.round(E2 + 2 * H);
              function U2(e4, t4) {
                return "auto" === t4 && (t4 = e4 < 1 / 3 ? "left" : e4 > 2 / 3 ? "right" : "center"), { center: 0, middle: 0, left: 0.5, bottom: -0.5, right: -0.5, top: 0.5 }[t4];
              }
              for (var Z2 = false, W2 = ["x", "y"], J = 0; J < W2.length; J++) {
                var X, K, Q, $, ee, te = W2[J], re = t3[te + "ref"] || te, ne = t3["a" + te + "ref"], ae = { x: m2, y: x2 }[te], ie = (D + ("x" === te ? 0 : -90)) * Math.PI / 180, oe = F2 * Math.cos(ie), le = V2 * Math.sin(ie), se = Math.abs(oe) + Math.abs(le), ce = t3[te + "anchor"], ue = t3[te + "shift"] * ("x" === te ? 1 : -1), fe = O[te], de = s.getRefType(re);
                if (ae && "domain" !== de) {
                  var he = ae.r2fraction(t3[te]);
                  (he < 0 || he > 1) && (ne === re ? ((he = ae.r2fraction(t3["a" + te])) < 0 || he > 1) && (Z2 = true) : Z2 = true), X = ae._offset + ae.r2p(t3[te]), $ = 0.5;
                } else {
                  var pe = "domain" === de;
                  "x" === te ? (Q = t3[te], X = pe ? ae._offset + ae._length * Q : X = T.l + T.w * Q) : (Q = 1 - t3[te], X = pe ? ae._offset + ae._length * Q : X = T.t + T.h * Q), $ = t3.showarrow ? 0.5 : Q;
                }
                if (t3.showarrow) {
                  fe.head = X;
                  var ve = t3["a" + te];
                  if (ee = oe * U2(0.5, t3.xanchor) - le * U2(0.5, t3.yanchor), ne === re) {
                    var ge = s.getRefType(ne);
                    "domain" === ge ? ("y" === te && (ve = 1 - ve), fe.tail = ae._offset + ae._length * ve) : "paper" === ge ? "y" === te ? (ve = 1 - ve, fe.tail = T.t + T.h * ve) : fe.tail = T.l + T.w * ve : fe.tail = ae._offset + ae.r2p(ve), K = ee;
                  } else fe.tail = X + ve, K = ee + ve;
                  fe.text = fe.tail + ee;
                  var me = w["x" === te ? "width" : "height"];
                  if ("paper" === re && (fe.head = o.constrain(fe.head, 1, me - 1)), "pixel" === ne) {
                    var ye = -Math.max(fe.tail - 3, fe.text), xe = Math.min(fe.tail + 3, fe.text) - me;
                    ye > 0 ? (fe.tail += ye, fe.text += ye) : xe > 0 && (fe.tail -= xe, fe.text -= xe);
                  }
                  fe.tail += ue, fe.head += ue;
                } else K = ee = se * U2($, ce), fe.text = X + ee;
                fe.text += ue, ee += ue, K += ue, t3["_" + te + "padplus"] = se / 2 + K, t3["_" + te + "padminus"] = se / 2 - K, t3["_" + te + "size"] = se, t3["_" + te + "shift"] = ee;
              }
              if (Z2) R.remove();
              else {
                var be = 0, _e = 0;
                if ("left" !== t3.align && (be = (k2 - b2) * ("center" === t3.align ? 0.5 : 1)), "top" !== t3.valign && (_e = (E2 - _2) * ("middle" === t3.valign ? 0.5 : 1)), f2) n2.select("svg").attr({ x: H + be - 1, y: H + _e }).call(u.setClipUrl, j ? C : null, e3);
                else {
                  var we = H + _e - v2.top, Te = H + be - v2.left;
                  q.call(d.positionText, Te, we).call(u.setClipUrl, j ? C : null, e3);
                }
                Y.select("rect").call(u.setRect, H, H, k2, E2), B.call(u.setRect, N / 2, N / 2, F2 - N, V2 - N), R.call(u.setTranslate, Math.round(O.x.text - F2 / 2), Math.round(O.y.text - V2 / 2)), z.attr({ transform: "rotate(" + D + "," + O.x.text + "," + O.y.text + ")" });
                var Me, ke = function(r5, n3) {
                  P.selectAll(".annotation-arrow-g").remove();
                  var s2 = O.x.head, f3 = O.y.head, d2 = O.x.tail + r5, h2 = O.y.tail + n3, v3 = O.x.text + r5, b3 = O.y.text + n3, _3 = o.rotationXYMatrix(D, v3, b3), w2 = o.apply2DTransform(_3), k3 = o.apply2DTransform2(_3), C2 = +B.attr("width"), I2 = +B.attr("height"), E3 = v3 - 0.5 * C2, N2 = E3 + C2, F3 = b3 - 0.5 * I2, H2 = F3 + I2, j2 = [[E3, F3, E3, H2], [E3, H2, N2, H2], [N2, H2, N2, F3], [N2, F3, E3, F3]].map(k3);
                  if (!j2.reduce(function(e4, t4) {
                    return e4 ^ !!o.segmentsIntersect(s2, f3, s2 + 1e6, f3 + 1e6, t4[0], t4[1], t4[2], t4[3]);
                  }, false)) {
                    j2.forEach(function(e4) {
                      var t4 = o.segmentsIntersect(d2, h2, s2, f3, e4[0], e4[1], e4[2], e4[3]);
                      t4 && (d2 = t4.x, h2 = t4.y);
                    });
                    var Y2 = t3.arrowwidth, V3 = t3.arrowcolor, U3 = t3.arrowside, q2 = P.append("g").style({ opacity: c.opacity(V3) }).classed("annotation-arrow-g", true), G2 = q2.append("path").attr("d", "M" + d2 + "," + h2 + "L" + s2 + "," + f3).style("stroke-width", Y2 + "px").call(c.stroke, c.rgb(V3));
                    if (g(G2, U3, t3), M.annotationPosition && G2.node().parentNode && !i2) {
                      var Z3 = s2, W3 = f3;
                      if (t3.standoff) {
                        var J2 = Math.sqrt(Math.pow(s2 - d2, 2) + Math.pow(f3 - h2, 2));
                        Z3 += t3.standoff * (d2 - s2) / J2, W3 += t3.standoff * (h2 - f3) / J2;
                      }
                      var X2, K2, Q2 = q2.append("path").classed("annotation-arrow", true).classed("anndrag", true).classed("cursor-move", true).attr({ d: "M3,3H-3V-3H3ZM0,0L" + (d2 - Z3) + "," + (h2 - W3), transform: l(Z3, W3) }).style("stroke-width", Y2 + 6 + "px").call(c.stroke, "rgba(0,0,0,0)").call(c.fill, "rgba(0,0,0,0)");
                      p.init({ element: Q2.node(), gd: e3, prepFn: function() {
                        var e4 = u.getTranslate(R);
                        X2 = e4.x, K2 = e4.y, m2 && m2.autorange && A(m2._name + ".autorange", true), x2 && x2.autorange && A(x2._name + ".autorange", true);
                      }, moveFn: function(e4, r6) {
                        var n4 = w2(X2, K2), a2 = n4[0] + e4, i3 = n4[1] + r6;
                        R.call(u.setTranslate, a2, i3), L("x", y(m2, e4, "x", T, t3)), L("y", y(x2, r6, "y", T, t3)), t3.axref === t3.xref && L("ax", y(m2, e4, "ax", T, t3)), t3.ayref === t3.yref && L("ay", y(x2, r6, "ay", T, t3)), q2.attr("transform", l(e4, r6)), z.attr({ transform: "rotate(" + D + "," + a2 + "," + i3 + ")" });
                      }, doneFn: function() {
                        a.call("_guiRelayout", e3, S());
                        var t4 = document.querySelector(".js-notes-box-panel");
                        t4 && t4.redraw(t4.selectedObj);
                      } });
                    }
                  }
                };
                t3.showarrow && ke(0, 0), I && p.init({ element: R.node(), gd: e3, prepFn: function() {
                  Me = z.attr("transform");
                }, moveFn: function(e4, r5) {
                  var n3 = "pointer";
                  if (t3.showarrow) t3.axref === t3.xref ? L("ax", y(m2, e4, "ax", T, t3)) : L("ax", t3.ax + e4), t3.ayref === t3.yref ? L("ay", y(x2, r5, "ay", T.w, t3)) : L("ay", t3.ay + r5), ke(e4, r5);
                  else {
                    if (i2) return;
                    var a2, o2;
                    if (m2) a2 = y(m2, e4, "x", T, t3);
                    else {
                      var s2 = t3._xsize / T.w, c2 = t3.x + (t3._xshift - t3.xshift) / T.w - s2 / 2;
                      a2 = p.align(c2 + e4 / T.w, s2, 0, 1, t3.xanchor);
                    }
                    if (x2) o2 = y(x2, r5, "y", T, t3);
                    else {
                      var u2 = t3._ysize / T.h, f3 = t3.y - (t3._yshift + t3.yshift) / T.h - u2 / 2;
                      o2 = p.align(f3 - r5 / T.h, u2, 0, 1, t3.yanchor);
                    }
                    L("x", a2), L("y", o2), m2 && x2 || (n3 = p.getCursor(m2 ? 0.5 : a2, x2 ? 0.5 : o2, t3.xanchor, t3.yanchor));
                  }
                  z.attr({ transform: l(e4, r5) + Me }), h(R, n3);
                }, clickFn: function(r5, n3) {
                  t3.captureevents && e3.emit("plotly_clickannotation", G(n3));
                }, doneFn: function() {
                  h(R), a.call("_guiRelayout", e3, S());
                  var t4 = document.querySelector(".js-notes-box-panel");
                  t4 && t4.redraw(t4.selectedObj);
                } });
              }
            }
          }
          e2.exports = { draw: function(e3) {
            var t3 = e3._fullLayout;
            t3._infolayer.selectAll(".annotation").remove();
            for (var r3 = 0; r3 < t3.annotations.length; r3++) t3.annotations[r3].visible && m(e3, r3);
            return i.previousPromises(e3);
          }, drawOne: m, drawRaw: x };
        }, 3768: function(e2, t2, r2) {
          var n = r2(5568), a = r2(8766), i = r2(1645), o = r2(4809), l = o.strScale, s = o.strRotate, c = o.strTranslate;
          e2.exports = function(e3, t3, r3) {
            var o2, u, f, d, h = e3.node(), p = i[r3.arrowhead || 0], v = i[r3.startarrowhead || 0], g = (r3.arrowwidth || 1) * (r3.arrowsize || 1), m = (r3.arrowwidth || 1) * (r3.startarrowsize || 1), y = t3.indexOf("start") >= 0, x = t3.indexOf("end") >= 0, b = p.backoff * g + r3.standoff, _ = v.backoff * m + r3.startstandoff;
            if ("line" === h.nodeName) {
              o2 = { x: +e3.attr("x1"), y: +e3.attr("y1") }, u = { x: +e3.attr("x2"), y: +e3.attr("y2") };
              var w = o2.x - u.x, T = o2.y - u.y;
              if (d = (f = Math.atan2(T, w)) + Math.PI, b && _ && b + _ > Math.sqrt(w * w + T * T)) return void I();
              if (b) {
                if (b * b > w * w + T * T) return void I();
                var M = b * Math.cos(f), k = b * Math.sin(f);
                u.x += M, u.y += k, e3.attr({ x2: u.x, y2: u.y });
              }
              if (_) {
                if (_ * _ > w * w + T * T) return void I();
                var A = _ * Math.cos(f), L = _ * Math.sin(f);
                o2.x -= A, o2.y -= L, e3.attr({ x1: o2.x, y1: o2.y });
              }
            } else if ("path" === h.nodeName) {
              var S = h.getTotalLength(), C = "";
              if (S < b + _) return void I();
              var O = h.getPointAtLength(0), D = h.getPointAtLength(0.1);
              f = Math.atan2(O.y - D.y, O.x - D.x), o2 = h.getPointAtLength(Math.min(_, S)), C = "0px," + _ + "px,";
              var P = h.getPointAtLength(S), z = h.getPointAtLength(S - 0.1);
              d = Math.atan2(P.y - z.y, P.x - z.x), u = h.getPointAtLength(Math.max(0, S - b)), C += S - (C ? _ + b : b) + "px," + S + "px", e3.style("stroke-dasharray", C);
            }
            function I() {
              e3.style("stroke-dasharray", "0px,100px");
            }
            function E(t4, i2, o3, u2) {
              t4.path && (t4.noRotate && (o3 = 0), n.select(h.parentNode).append("path").attr({ class: e3.attr("class"), d: t4.path, transform: c(i2.x, i2.y) + s(180 * o3 / Math.PI) + l(u2) }).style({ fill: a.rgb(r3.arrowcolor), "stroke-width": 0 }));
            }
            y && E(v, o2, f, m), x && E(p, u, d, g);
          };
        }, 3599: function(e2, t2, r2) {
          var n = r2(3377), a = r2(6035);
          e2.exports = { moduleType: "component", name: "annotations", layoutAttributes: r2(222), supplyLayoutDefaults: r2(6118), includeBasePlot: r2(706)("annotations"), calcAutorange: r2(317), draw: n.draw, drawOne: n.drawOne, drawRaw: n.drawRaw, hasClickToShow: a.hasClickToShow, onClick: a.onClick, convertCoords: r2(9741) };
        }, 8239: function(e2, t2, r2) {
          var n = r2(222), a = r2(3582).overrideAll, i = r2(8032).templatedArray;
          e2.exports = a(i("annotation", { visible: n.visible, x: { valType: "any" }, y: { valType: "any" }, z: { valType: "any" }, ax: { valType: "number" }, ay: { valType: "number" }, xanchor: n.xanchor, xshift: n.xshift, yanchor: n.yanchor, yshift: n.yshift, text: n.text, textangle: n.textangle, font: n.font, width: n.width, height: n.height, opacity: n.opacity, align: n.align, valign: n.valign, bgcolor: n.bgcolor, bordercolor: n.bordercolor, borderpad: n.borderpad, borderwidth: n.borderwidth, showarrow: n.showarrow, arrowcolor: n.arrowcolor, arrowhead: n.arrowhead, startarrowhead: n.startarrowhead, arrowside: n.arrowside, arrowsize: n.arrowsize, startarrowsize: n.startarrowsize, arrowwidth: n.arrowwidth, standoff: n.standoff, startstandoff: n.startstandoff, hovertext: n.hovertext, hoverlabel: n.hoverlabel, captureevents: n.captureevents }), "calc", "from-root");
        }, 7979: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714);
          function i(e3, t3) {
            var r3 = t3.fullSceneLayout.domain, i2 = t3.fullLayout._size, o = { pdata: null, type: "linear", autorange: false, range: [-1 / 0, 1 / 0] };
            e3._xa = {}, n.extendFlat(e3._xa, o), a.setConvert(e3._xa), e3._xa._offset = i2.l + r3.x[0] * i2.w, e3._xa.l2p = function() {
              return 0.5 * (1 + e3._pdata[0] / e3._pdata[3]) * i2.w * (r3.x[1] - r3.x[0]);
            }, e3._ya = {}, n.extendFlat(e3._ya, o), a.setConvert(e3._ya), e3._ya._offset = i2.t + (1 - r3.y[1]) * i2.h, e3._ya.l2p = function() {
              return 0.5 * (1 - e3._pdata[1] / e3._pdata[3]) * i2.h * (r3.y[1] - r3.y[0]);
            };
          }
          e2.exports = function(e3) {
            for (var t3 = e3.fullSceneLayout.annotations, r3 = 0; r3 < t3.length; r3++) i(t3[r3], e3);
            e3.fullLayout._infolayer.selectAll(".annotation-" + e3.id).remove();
          };
        }, 4232: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(9008), o = r2(3271), l = r2(8239);
          function s(e3, t3, r3, i2) {
            function s2(r4, a2) {
              return n.coerce(e3, t3, l, r4, a2);
            }
            function c(e4) {
              var n2 = e4 + "axis", i3 = { _fullLayout: {} };
              return i3._fullLayout[n2] = r3[n2], a.coercePosition(t3, i3, s2, e4, e4, 0.5);
            }
            s2("visible") && (o(e3, t3, i2.fullLayout, s2), c("x"), c("y"), c("z"), n.noneOrAll(e3, t3, ["x", "y", "z"]), t3.xref = "x", t3.yref = "y", t3.zref = "z", s2("xanchor"), s2("yanchor"), s2("xshift"), s2("yshift"), t3.showarrow && (t3.axref = "pixel", t3.ayref = "pixel", s2("ax", -10), s2("ay", -30), n.noneOrAll(e3, t3, ["ax", "ay"])));
          }
          e2.exports = function(e3, t3, r3) {
            i(e3, t3, { name: "annotations", handleItemDefaults: s, fullLayout: r3.fullLayout });
          };
        }, 9756: function(e2, t2, r2) {
          var n = r2(3377).drawRaw, a = r2(5802), i = ["x", "y", "z"];
          e2.exports = function(e3) {
            for (var t3 = e3.fullSceneLayout, r3 = e3.dataScale, o = t3.annotations, l = 0; l < o.length; l++) {
              for (var s = o[l], c = false, u = 0; u < 3; u++) {
                var f = i[u], d = s[f], h = t3[f + "axis"].r2fraction(d);
                if (h < 0 || h > 1) {
                  c = true;
                  break;
                }
              }
              c ? e3.fullLayout._infolayer.select(".annotation-" + e3.id + '[data-index="' + l + '"]').remove() : (s._pdata = a(e3.glplot.cameraParams, [t3.xaxis.r2l(s.x) * r3[0], t3.yaxis.r2l(s.y) * r3[1], t3.zaxis.r2l(s.z) * r3[2]]), n(e3.graphDiv, s, l, e3.id, s._xa, s._ya));
            }
          };
        }, 3348: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809);
          e2.exports = { moduleType: "component", name: "annotations3d", schema: { subplots: { scene: { annotations: r2(8239) } } }, layoutAttributes: r2(8239), handleDefaults: r2(4232), includeBasePlot: function(e3, t3) {
            var r3 = n.subplotsRegistry.gl3d;
            if (r3) for (var i = r3.attrRegex, o = Object.keys(e3), l = 0; l < o.length; l++) {
              var s = o[l];
              i.test(s) && (e3[s].annotations || []).length && (a.pushUnique(t3._basePlotModules, r3), a.pushUnique(t3._subplots.gl3d, s));
            }
          }, convert: r2(7979), draw: r2(9756) };
        }, 7177: function(e2, t2, r2) {
          e2.exports = r2(6834), r2(3428), r2(1401), r2(2210), r2(8569), r2(1133), r2(8295), r2(5512), r2(2645), r2(2324), r2(1662), r2(6445), r2(506), r2(4756), r2(1858), r2(7985);
        }, 7317: function(e2, t2, r2) {
          var n = r2(7177), a = r2(4809), i = r2(3821), o = i.EPOCHJD, l = i.ONEDAY, s = { valType: "enumerated", values: a.sortObjectKeys(n.calendars), editType: "calc", dflt: "gregorian" }, c = function(e3, t3, r3, n2) {
            var i2 = {};
            return i2[r3] = s, a.coerce(e3, t3, i2, r3, n2);
          }, u = "##", f = { d: { 0: "dd", "-": "d" }, e: { 0: "d", "-": "d" }, a: { 0: "D", "-": "D" }, A: { 0: "DD", "-": "DD" }, j: { 0: "oo", "-": "o" }, W: { 0: "ww", "-": "w" }, m: { 0: "mm", "-": "m" }, b: { 0: "M", "-": "M" }, B: { 0: "MM", "-": "MM" }, y: { 0: "yy", "-": "yy" }, Y: { 0: "yyyy", "-": "yyyy" }, U: u, w: u, c: { 0: "D M d %X yyyy", "-": "D M d %X yyyy" }, x: { 0: "mm/dd/yyyy", "-": "mm/dd/yyyy" } }, d = {};
          function h(e3) {
            var t3 = d[e3];
            return t3 || (d[e3] = n.instance(e3));
          }
          function p(e3) {
            return a.extendFlat({}, s, { description: e3 });
          }
          function v(e3) {
            return "Sets the calendar system to use with `" + e3 + "` date data.";
          }
          var g = { xcalendar: p(v("x")) }, m = a.extendFlat({}, g, { ycalendar: p(v("y")) }), y = a.extendFlat({}, m, { zcalendar: p(v("z")) }), x = p(["Sets the calendar system to use for `range` and `tick0`", "if this is a date axis. This does not set the calendar for", "interpreting data on this axis, that's specified in the trace", "or via the global `layout.calendar`"].join(" "));
          e2.exports = { moduleType: "component", name: "calendars", schema: { traces: { scatter: m, bar: m, box: m, heatmap: m, contour: m, histogram: m, histogram2d: m, histogram2dcontour: m, scatter3d: y, surface: y, mesh3d: y, scattergl: m, ohlc: g, candlestick: g }, layout: { calendar: p(["Sets the default calendar system to use for interpreting and", "displaying dates throughout the plot."].join(" ")) }, subplots: { xaxis: { calendar: x }, yaxis: { calendar: x }, scene: { xaxis: { calendar: x }, yaxis: { calendar: x }, zaxis: { calendar: x } }, polar: { radialaxis: { calendar: x } } }, transforms: { filter: { valuecalendar: p(["WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `value`, if it is a date."].join(" ")), targetcalendar: p(["WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `target`, if it is an", "array of dates. If `target` is a string (eg *x*) we use the", "corresponding trace attribute (eg `xcalendar`) if it exists,", "even if `targetcalendar` is provided."].join(" ")) } } }, layoutAttributes: s, handleDefaults: c, handleTraceDefaults: function(e3, t3, r3, n2) {
            for (var a2 = 0; a2 < r3.length; a2++) c(e3, t3, r3[a2] + "calendar", n2.calendar);
          }, CANONICAL_SUNDAY: { chinese: "2000-01-02", coptic: "2000-01-03", discworld: "2000-01-03", ethiopian: "2000-01-05", hebrew: "5000-01-01", islamic: "1000-01-02", julian: "2000-01-03", mayan: "5000-01-01", nanakshahi: "1000-01-05", nepali: "2000-01-05", persian: "1000-01-01", jalali: "1000-01-01", taiwan: "1000-01-04", thai: "2000-01-04", ummalqura: "1400-01-06" }, CANONICAL_TICK: { chinese: "2000-01-01", coptic: "2000-01-01", discworld: "2000-01-01", ethiopian: "2000-01-01", hebrew: "5000-01-01", islamic: "1000-01-01", julian: "2000-01-01", mayan: "5000-01-01", nanakshahi: "1000-01-01", nepali: "2000-01-01", persian: "1000-01-01", jalali: "1000-01-01", taiwan: "1000-01-01", thai: "2000-01-01", ummalqura: "1400-01-01" }, DFLTRANGE: { chinese: ["2000-01-01", "2001-01-01"], coptic: ["1700-01-01", "1701-01-01"], discworld: ["1800-01-01", "1801-01-01"], ethiopian: ["2000-01-01", "2001-01-01"], hebrew: ["5700-01-01", "5701-01-01"], islamic: ["1400-01-01", "1401-01-01"], julian: ["2000-01-01", "2001-01-01"], mayan: ["5200-01-01", "5201-01-01"], nanakshahi: ["0500-01-01", "0501-01-01"], nepali: ["2000-01-01", "2001-01-01"], persian: ["1400-01-01", "1401-01-01"], jalali: ["1400-01-01", "1401-01-01"], taiwan: ["0100-01-01", "0101-01-01"], thai: ["2500-01-01", "2501-01-01"], ummalqura: ["1400-01-01", "1401-01-01"] }, getCal: h, worldCalFmt: function(e3, t3, r3) {
            for (var n2, a2, i2, s2, c2, d2 = Math.floor((t3 + 0.05) / l) + o, p2 = h(r3).fromJD(d2), v2 = 0; -1 !== (v2 = e3.indexOf("%", v2)); ) "0" === (n2 = e3.charAt(v2 + 1)) || "-" === n2 || "_" === n2 ? (i2 = 3, a2 = e3.charAt(v2 + 2), "_" === n2 && (n2 = "-")) : (a2 = n2, n2 = "0", i2 = 2), (s2 = f[a2]) ? (c2 = s2 === u ? u : p2.formatDate(s2[n2]), e3 = e3.substr(0, v2) + c2 + e3.substr(v2 + i2), v2 += c2.length) : v2 += i2;
            return e3;
          } };
        }, 229: function(e2, t2) {
          t2.defaults = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"], t2.defaultLine = "#444", t2.lightLine = "#eee", t2.background = "#fff", t2.borderLine = "#BEC8D9", t2.lightFraction = 1e3 / 11;
        }, 8766: function(e2, t2, r2) {
          var n = r2(5657), a = r2(721), i = r2(7800).isTypedArray, o = e2.exports = {}, l = r2(229);
          o.defaults = l.defaults;
          var s = o.defaultLine = l.defaultLine;
          o.lightLine = l.lightLine;
          var c = o.background = l.background;
          function u(e3) {
            if (a(e3) || "string" != typeof e3) return e3;
            var t3 = e3.trim();
            if ("rgb" !== t3.substr(0, 3)) return e3;
            var r3 = t3.match(/^rgba?\s*\(([^()]*)\)$/);
            if (!r3) return e3;
            var n2 = r3[1].trim().split(/\s*[\s,]\s*/), i2 = "a" === t3.charAt(3) && 4 === n2.length;
            if (!i2 && 3 !== n2.length) return e3;
            for (var o2 = 0; o2 < n2.length; o2++) {
              if (!n2[o2].length) return e3;
              if (n2[o2] = Number(n2[o2]), !(n2[o2] >= 0)) return e3;
              if (3 === o2) n2[o2] > 1 && (n2[o2] = 1);
              else if (n2[o2] >= 1) return e3;
            }
            var l2 = Math.round(255 * n2[0]) + ", " + Math.round(255 * n2[1]) + ", " + Math.round(255 * n2[2]);
            return i2 ? "rgba(" + l2 + ", " + n2[3] + ")" : "rgb(" + l2 + ")";
          }
          o.tinyRGB = function(e3) {
            var t3 = e3.toRgb();
            return "rgb(" + Math.round(t3.r) + ", " + Math.round(t3.g) + ", " + Math.round(t3.b) + ")";
          }, o.rgb = function(e3) {
            return o.tinyRGB(n(e3));
          }, o.opacity = function(e3) {
            return e3 ? n(e3).getAlpha() : 0;
          }, o.addOpacity = function(e3, t3) {
            var r3 = n(e3).toRgb();
            return "rgba(" + Math.round(r3.r) + ", " + Math.round(r3.g) + ", " + Math.round(r3.b) + ", " + t3 + ")";
          }, o.combine = function(e3, t3) {
            var r3 = n(e3).toRgb();
            if (1 === r3.a) return n(e3).toRgbString();
            var a2 = n(t3 || c).toRgb(), i2 = 1 === a2.a ? a2 : { r: 255 * (1 - a2.a) + a2.r * a2.a, g: 255 * (1 - a2.a) + a2.g * a2.a, b: 255 * (1 - a2.a) + a2.b * a2.a }, o2 = { r: i2.r * (1 - r3.a) + r3.r * r3.a, g: i2.g * (1 - r3.a) + r3.g * r3.a, b: i2.b * (1 - r3.a) + r3.b * r3.a };
            return n(o2).toRgbString();
          }, o.interpolate = function(e3, t3, r3) {
            var a2 = n(e3).toRgb(), i2 = n(t3).toRgb(), o2 = { r: r3 * a2.r + (1 - r3) * i2.r, g: r3 * a2.g + (1 - r3) * i2.g, b: r3 * a2.b + (1 - r3) * i2.b };
            return n(o2).toRgbString();
          }, o.contrast = function(e3, t3, r3) {
            var a2 = n(e3);
            return 1 !== a2.getAlpha() && (a2 = n(o.combine(e3, c))), (a2.isDark() ? t3 ? a2.lighten(t3) : c : r3 ? a2.darken(r3) : s).toString();
          }, o.stroke = function(e3, t3) {
            var r3 = n(t3);
            e3.style({ stroke: o.tinyRGB(r3), "stroke-opacity": r3.getAlpha() });
          }, o.fill = function(e3, t3) {
            var r3 = n(t3);
            e3.style({ fill: o.tinyRGB(r3), "fill-opacity": r3.getAlpha() });
          }, o.clean = function(e3) {
            if (e3 && "object" == typeof e3) {
              var t3, r3, n2, a2, l2 = Object.keys(e3);
              for (t3 = 0; t3 < l2.length; t3++) if (a2 = e3[n2 = l2[t3]], "color" === n2.substr(n2.length - 5)) if (Array.isArray(a2)) for (r3 = 0; r3 < a2.length; r3++) a2[r3] = u(a2[r3]);
              else e3[n2] = u(a2);
              else if ("colorscale" === n2.substr(n2.length - 10) && Array.isArray(a2)) for (r3 = 0; r3 < a2.length; r3++) Array.isArray(a2[r3]) && (a2[r3][1] = u(a2[r3][1]));
              else if (Array.isArray(a2)) {
                var s2 = a2[0];
                if (!Array.isArray(s2) && s2 && "object" == typeof s2) for (r3 = 0; r3 < a2.length; r3++) o.clean(a2[r3]);
              } else a2 && "object" == typeof a2 && !i(a2) && o.clean(a2);
            }
          };
        }, 5158: function(e2, t2, r2) {
          var n = r2(5829), a = r2(337), i = r2(3049).extendFlat, o = r2(3582).overrideAll;
          e2.exports = o({ orientation: { valType: "enumerated", values: ["h", "v"], dflt: "v" }, thicknessmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "pixels" }, thickness: { valType: "number", min: 0, dflt: 30 }, lenmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "fraction" }, len: { valType: "number", min: 0, dflt: 1 }, x: { valType: "number" }, xref: { valType: "enumerated", dflt: "paper", values: ["container", "paper"], editType: "layoutstyle" }, xanchor: { valType: "enumerated", values: ["left", "center", "right"] }, xpad: { valType: "number", min: 0, dflt: 10 }, y: { valType: "number" }, yref: { valType: "enumerated", dflt: "paper", values: ["container", "paper"], editType: "layoutstyle" }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"] }, ypad: { valType: "number", min: 0, dflt: 10 }, outlinecolor: n.linecolor, outlinewidth: n.linewidth, bordercolor: n.linecolor, borderwidth: { valType: "number", min: 0, dflt: 0 }, bgcolor: { valType: "color", dflt: "rgba(0,0,0,0)" }, tickmode: n.minor.tickmode, nticks: n.nticks, tick0: n.tick0, dtick: n.dtick, tickvals: n.tickvals, ticktext: n.ticktext, ticks: i({}, n.ticks, { dflt: "" }), ticklabeloverflow: i({}, n.ticklabeloverflow, {}), ticklabelposition: { valType: "enumerated", values: ["outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom"], dflt: "outside" }, ticklen: n.ticklen, tickwidth: n.tickwidth, tickcolor: n.tickcolor, ticklabelstep: n.ticklabelstep, showticklabels: n.showticklabels, labelalias: n.labelalias, tickfont: a({}), tickangle: n.tickangle, tickformat: n.tickformat, tickformatstops: n.tickformatstops, tickprefix: n.tickprefix, showtickprefix: n.showtickprefix, ticksuffix: n.ticksuffix, showticksuffix: n.showticksuffix, separatethousands: n.separatethousands, exponentformat: n.exponentformat, minexponent: n.minexponent, showexponent: n.showexponent, title: { text: { valType: "string" }, font: a({}), side: { valType: "enumerated", values: ["right", "top", "bottom"] } }, _deprecated: { title: { valType: "string" }, titlefont: a({}), titleside: { valType: "enumerated", values: ["right", "top", "bottom"], dflt: "top" } } }, "colorbars", "from-root");
        }, 4554: function(e2) {
          e2.exports = { cn: { colorbar: "colorbar", cbbg: "cbbg", cbfill: "cbfill", cbfills: "cbfills", cbline: "cbline", cblines: "cblines", cbaxis: "cbaxis", cbtitleunshift: "cbtitleunshift", cbtitle: "cbtitle", cboutline: "cboutline", crisp: "crisp", jsPlaceholder: "js-placeholder" } };
        }, 2097: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8032), i = r2(2777), o = r2(7433), l = r2(2036), s = r2(4616), c = r2(5158);
          e2.exports = function(e3, t3, r3) {
            var u = a.newContainer(t3, "colorbar"), f = e3.colorbar || {};
            function d(e4, t4) {
              return n.coerce(f, u, c, e4, t4);
            }
            var h = r3.margin || { t: 0, b: 0, l: 0, r: 0 }, p = r3.width - h.l - h.r, v = r3.height - h.t - h.b, g = "v" === d("orientation"), m = d("thicknessmode");
            d("thickness", "fraction" === m ? 30 / (g ? p : v) : 30);
            var y = d("lenmode");
            d("len", "fraction" === y ? 1 : g ? v : p);
            var x, b, _, w = "paper" === d("yref"), T = "paper" === d("xref"), M = "left";
            g ? (_ = "middle", M = T ? "left" : "right", x = T ? 1.02 : 1, b = 0.5) : (_ = w ? "bottom" : "top", M = "center", x = 0.5, b = w ? 1.02 : 1), n.coerce(f, u, { x: { valType: "number", min: T ? -2 : 0, max: T ? 3 : 1, dflt: x } }, "x"), n.coerce(f, u, { y: { valType: "number", min: w ? -2 : 0, max: w ? 3 : 1, dflt: b } }, "y"), d("xanchor", M), d("xpad"), d("yanchor", _), d("ypad"), n.noneOrAll(f, u, ["x", "y"]), d("outlinecolor"), d("outlinewidth"), d("bordercolor"), d("borderwidth"), d("bgcolor");
            var k = n.coerce(f, u, { ticklabelposition: { valType: "enumerated", dflt: "outside", values: g ? ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom"] : ["outside", "inside", "outside left", "inside left", "outside right", "inside right"] } }, "ticklabelposition");
            d("ticklabeloverflow", -1 !== k.indexOf("inside") ? "hide past domain" : "hide past div"), i(f, u, d, "linear");
            var A = r3.font, L = { noAutotickangles: true, noTicklabelshift: true, noTicklabelstandoff: true, outerTicks: false, font: A };
            -1 !== k.indexOf("inside") && (L.bgColor = "black"), s(f, u, d, "linear", L), l(f, u, d, "linear", L), o(f, u, d, "linear", L), d("title.text", r3._dfltTitle.colorbar);
            var S = u.showticklabels ? u.tickfont : A, C = n.extendFlat({}, A, { family: S.family, size: n.bigFont(S.size) });
            n.coerceFont(d, "title.font", C), d("title.side", g ? "top" : "right");
          };
        }, 5881: function(e2, t2, r2) {
          var n = r2(5568), a = r2(5657), i = r2(4122), o = r2(3626), l = r2(9714), s = r2(4751), c = r2(4809), u = c.strTranslate, f = r2(3049).extendFlat, d = r2(7983), h = r2(2203), p = r2(8766), v = r2(7240), g = r2(635), m = r2(5477).flipScale, y = r2(7655), x = r2(957), b = r2(5829), _ = r2(4530), w = _.LINE_SPACING, T = _.FROM_TL, M = _.FROM_BR, k = r2(4554).cn;
          e2.exports = { draw: function(e3) {
            var t3 = e3._fullLayout._infolayer.selectAll("g." + k.colorbar).data(function(e4) {
              var t4, r3, n2, a2, i2 = e4._fullLayout, o2 = e4.calcdata, l2 = [];
              function s2(e5) {
                return f(e5, { _fillcolor: null, _line: { color: null, width: null, dash: null }, _levels: { start: null, end: null, size: null }, _filllevels: null, _fillgradient: null, _zrange: null });
              }
              function c2() {
                "function" == typeof a2.calc ? a2.calc(e4, n2, t4) : (t4._fillgradient = r3.reversescale ? m(r3.colorscale) : r3.colorscale, t4._zrange = [r3[a2.min], r3[a2.max]]);
              }
              for (var u2 = 0; u2 < o2.length; u2++) {
                var d2 = o2[u2];
                if ((n2 = d2[0].trace)._module) {
                  var h2 = n2._module.colorbar;
                  if (true === n2.visible && h2) for (var p2 = Array.isArray(h2), v2 = p2 ? h2 : [h2], g2 = 0; g2 < v2.length; g2++) {
                    var y2 = (a2 = v2[g2]).container;
                    (r3 = y2 ? n2[y2] : n2) && r3.showscale && ((t4 = s2(r3.colorbar))._id = "cb" + n2.uid + (p2 && y2 ? "-" + y2 : ""), t4._traceIndex = n2.index, t4._propPrefix = (y2 ? y2 + "." : "") + "colorbar.", t4._meta = n2._meta, c2(), l2.push(t4));
                  }
                }
              }
              for (var x2 in i2._colorAxes) if ((r3 = i2[x2]).showscale) {
                var b2 = i2._colorAxes[x2];
                (t4 = s2(r3.colorbar))._id = "cb" + x2, t4._propPrefix = x2 + ".colorbar.", t4._meta = i2._meta, a2 = { min: "cmin", max: "cmax" }, "heatmap" !== b2[0] && (n2 = b2[1], a2.calc = n2._module.colorbar.calc), c2(), l2.push(t4);
              }
              return l2;
            }(e3), function(e4) {
              return e4._id;
            });
            t3.enter().append("g").attr("class", function(e4) {
              return e4._id;
            }).classed(k.colorbar, true), t3.each(function(t4) {
              var r3 = n.select(this);
              c.ensureSingle(r3, "rect", k.cbbg), c.ensureSingle(r3, "g", k.cbfills), c.ensureSingle(r3, "g", k.cblines), c.ensureSingle(r3, "g", k.cbaxis, function(e4) {
                e4.classed(k.crisp, true);
              }), c.ensureSingle(r3, "g", k.cbtitleunshift, function(e4) {
                e4.append("g").classed(k.cbtitle, true);
              }), c.ensureSingle(r3, "rect", k.cboutline);
              var m2 = function(e4, t5, r4) {
                var o2 = "v" === t5.orientation, s2 = t5.len, d2 = t5.lenmode, m3 = t5.thickness, _2 = t5.thicknessmode, A = t5.outlinewidth, L = t5.borderwidth, S = t5.bgcolor, C = t5.xanchor, O = t5.yanchor, D = t5.xpad, P = t5.ypad, z = t5.x, I = o2 ? t5.y : 1 - t5.y, E = "paper" === t5.yref, R = "paper" === t5.xref, N = r4._fullLayout, F = N._size, H = t5._fillcolor, B = t5._line, j = t5.title, Y = j.side, V = t5._zrange || n.extent(("function" == typeof H ? H : B.color).domain()), U = "function" == typeof B.color ? B.color : function() {
                  return B.color;
                }, q = "function" == typeof H ? H : function() {
                  return H;
                }, G = t5._levels, Z = function(e5, t6, r5) {
                  var n2, a2, i2 = t6._levels, o3 = [], l2 = [], s3 = i2.end + i2.size / 100, c2 = i2.size, u2 = 1.001 * r5[0] - 1e-3 * r5[1], f2 = 1.001 * r5[1] - 1e-3 * r5[0];
                  for (a2 = 0; a2 < 1e5 && (n2 = i2.start + a2 * c2, !(c2 > 0 ? n2 >= s3 : n2 <= s3)); a2++) n2 > u2 && n2 < f2 && o3.push(n2);
                  if (t6._fillgradient) l2 = [0];
                  else if ("function" == typeof t6._fillcolor) {
                    var d3 = t6._filllevels;
                    if (d3) for (s3 = d3.end + d3.size / 100, c2 = d3.size, a2 = 0; a2 < 1e5 && (n2 = d3.start + a2 * c2, !(c2 > 0 ? n2 >= s3 : n2 <= s3)); a2++) n2 > r5[0] && n2 < r5[1] && l2.push(n2);
                    else (l2 = o3.map(function(e6) {
                      return e6 - i2.size / 2;
                    })).push(l2[l2.length - 1] + i2.size);
                  } else t6._fillcolor && "string" == typeof t6._fillcolor && (l2 = [0]);
                  return i2.size < 0 && (o3.reverse(), l2.reverse()), { line: o3, fill: l2 };
                }(0, t5, V), W = Z.fill, J = Z.line, X = Math.round(m3 * ("fraction" === _2 ? o2 ? F.w : F.h : 1)), K = X / (o2 ? F.w : F.h), Q = Math.round(s2 * ("fraction" === d2 ? o2 ? F.h : F.w : 1)), $ = Q / (o2 ? F.h : F.w), ee = R ? F.w : r4._fullLayout.width, te = E ? F.h : r4._fullLayout.height, re = Math.round(o2 ? z * ee + D : I * te + P), ne = { center: 0.5, right: 1 }[C] || 0, ae = { top: 1, middle: 0.5 }[O] || 0, ie = o2 ? z - ne * K : I - ae * K, oe = o2 ? I - ae * $ : z - ne * $, le = Math.round(o2 ? te * (1 - oe) : ee * oe);
                t5._lenFrac = $, t5._thickFrac = K, t5._uFrac = ie, t5._vFrac = oe;
                var se = t5._axis = function(e5, t6, r5) {
                  var n2 = e5._fullLayout, a2 = "v" === t6.orientation, i2 = { type: "linear", range: r5, tickmode: t6.tickmode, nticks: t6.nticks, tick0: t6.tick0, dtick: t6.dtick, tickvals: t6.tickvals, ticktext: t6.ticktext, ticks: t6.ticks, ticklen: t6.ticklen, tickwidth: t6.tickwidth, tickcolor: t6.tickcolor, showticklabels: t6.showticklabels, labelalias: t6.labelalias, ticklabelposition: t6.ticklabelposition, ticklabeloverflow: t6.ticklabeloverflow, ticklabelstep: t6.ticklabelstep, tickfont: t6.tickfont, tickangle: t6.tickangle, tickformat: t6.tickformat, exponentformat: t6.exponentformat, minexponent: t6.minexponent, separatethousands: t6.separatethousands, showexponent: t6.showexponent, showtickprefix: t6.showtickprefix, tickprefix: t6.tickprefix, showticksuffix: t6.showticksuffix, ticksuffix: t6.ticksuffix, title: t6.title, showline: true, anchor: "free", side: a2 ? "right" : "bottom", position: 1 }, o3 = a2 ? "y" : "x", l2 = { type: "linear", _id: o3 + t6._id }, s3 = { letter: o3, font: n2.font, noAutotickangles: "y" === o3, noHover: true, noTickson: true, noTicklabelmode: true, noInsideRange: true, calendar: n2.calendar };
                  function u2(e6, t7) {
                    return c.coerce(i2, l2, b, e6, t7);
                  }
                  return y(i2, l2, u2, s3, n2), x(i2, l2, u2, s3), l2;
                }(r4, t5, V);
                se.position = K + (o2 ? z + D / F.w : I + P / F.h);
                var ce = -1 !== ["top", "bottom"].indexOf(Y);
                if (o2 && ce && (se.title.side = Y, se.titlex = z + D / F.w, se.titley = oe + ("top" === j.side ? $ - P / F.h : P / F.h)), o2 || ce || (se.title.side = Y, se.titley = I + P / F.h, se.titlex = oe + D / F.w), B.color && "auto" === t5.tickmode) {
                  se.tickmode = "linear", se.tick0 = G.start;
                  var ue = G.size, fe = c.constrain(Q / 50, 4, 15) + 1, de = (V[1] - V[0]) / ((t5.nticks || fe) * ue);
                  if (de > 1) {
                    var he = Math.pow(10, Math.floor(Math.log(de) / Math.LN10));
                    ue *= he * c.roundUp(de / he, [2, 5, 10]), (Math.abs(G.start) / G.size + 1e-6) % 1 < 2e-6 && (se.tick0 = 0);
                  }
                  se.dtick = ue;
                }
                se.domain = o2 ? [oe + P / F.h, oe + $ - P / F.h] : [oe + D / F.w, oe + $ - D / F.w], se.setScale(), e4.attr("transform", u(Math.round(F.l), Math.round(F.t)));
                var pe, ve = e4.select("." + k.cbtitleunshift).attr("transform", u(-Math.round(F.l), -Math.round(F.t))), ge = se.ticklabelposition, me = se.title.font.size, ye = e4.select("." + k.cbaxis), xe = 0, be = 0;
                function _e(n2, a2) {
                  var i2 = { propContainer: se, propName: t5._propPrefix + "title", traceIndex: t5._traceIndex, _meta: t5._meta, placeholder: N._dfltTitle.colorbar, containerGroup: e4.select("." + k.cbtitle) }, o3 = "h" === n2.charAt(0) ? n2.substr(1) : "h" + n2;
                  e4.selectAll("." + o3 + ",." + o3 + "-math-group").remove(), v.draw(r4, n2, f(i2, a2 || {}));
                }
                return c.syncOrAsync([i.previousPromises, function() {
                  var e5, t6;
                  (o2 && ce || !o2 && !ce) && ("top" === Y && (e5 = D + F.l + ee * z, t6 = P + F.t + te * (1 - oe - $) + 3 + 0.75 * me), "bottom" === Y && (e5 = D + F.l + ee * z, t6 = P + F.t + te * (1 - oe) - 3 - 0.25 * me), "right" === Y && (t6 = P + F.t + te * I + 3 + 0.75 * me, e5 = D + F.l + ee * oe), _e(se._id + "title", { attributes: { x: e5, y: t6, "text-anchor": o2 ? "start" : "middle" } }));
                }, function() {
                  if (!o2 && !ce || o2 && ce) {
                    var i2, s3 = e4.select("." + k.cbtitle), f2 = s3.select("text"), d3 = [-A / 2, A / 2], p2 = s3.select(".h" + se._id + "title-math-group").node(), v2 = 15.6;
                    if (f2.node() && (v2 = parseInt(f2.node().style.fontSize, 10) * w), p2 ? (i2 = h.bBox(p2), be = i2.width, (xe = i2.height) > v2 && (d3[1] -= (xe - v2) / 2)) : f2.node() && !f2.classed(k.jsPlaceholder) && (i2 = h.bBox(f2.node()), be = i2.width, xe = i2.height), o2) {
                      if (xe) {
                        if (xe += 5, "top" === Y) se.domain[1] -= xe / F.h, d3[1] *= -1;
                        else {
                          se.domain[0] += xe / F.h;
                          var m4 = g.lineCount(f2);
                          d3[1] += (1 - m4) * v2;
                        }
                        s3.attr("transform", u(d3[0], d3[1])), se.setScale();
                      }
                    } else be && ("right" === Y && (se.domain[0] += (be + me / 2) / F.w), s3.attr("transform", u(d3[0], d3[1])), se.setScale());
                  }
                  e4.selectAll("." + k.cbfills + ",." + k.cblines).attr("transform", o2 ? u(0, Math.round(F.h * (1 - se.domain[1]))) : u(Math.round(F.w * se.domain[0]), 0)), ye.attr("transform", o2 ? u(0, Math.round(-F.t)) : u(Math.round(-F.l), 0));
                  var y2 = e4.select("." + k.cbfills).selectAll("rect." + k.cbfill).attr("style", "").data(W);
                  y2.enter().append("rect").classed(k.cbfill, true).attr("style", ""), y2.exit().remove();
                  var x2 = V.map(se.c2p).map(Math.round).sort(function(e5, t6) {
                    return e5 - t6;
                  });
                  y2.each(function(e5, i3) {
                    var l2 = [0 === i3 ? V[0] : (W[i3] + W[i3 - 1]) / 2, i3 === W.length - 1 ? V[1] : (W[i3] + W[i3 + 1]) / 2].map(se.c2p).map(Math.round);
                    o2 && (l2[1] = c.constrain(l2[1] + (l2[1] > l2[0]) ? 1 : -1, x2[0], x2[1]));
                    var s4 = n.select(this).attr(o2 ? "x" : "y", re).attr(o2 ? "y" : "x", n.min(l2)).attr(o2 ? "width" : "height", Math.max(X, 2)).attr(o2 ? "height" : "width", Math.max(n.max(l2) - n.min(l2), 2));
                    if (t5._fillgradient) h.gradient(s4, r4, t5._id, o2 ? "vertical" : "horizontalreversed", t5._fillgradient, "fill");
                    else {
                      var u2 = q(e5).replace("e-", "");
                      s4.attr("fill", a(u2).toHexString());
                    }
                  });
                  var b2 = e4.select("." + k.cblines).selectAll("path." + k.cbline).data(B.color && B.width ? J : []);
                  b2.enter().append("path").classed(k.cbline, true), b2.exit().remove(), b2.each(function(e5) {
                    var t6 = re, r5 = Math.round(se.c2p(e5)) + B.width / 2 % 1;
                    n.select(this).attr("d", "M" + (o2 ? t6 + "," + r5 : r5 + "," + t6) + (o2 ? "h" : "v") + X).call(h.lineGroupStyle, B.width, U(e5), B.dash);
                  }), ye.selectAll("g." + se._id + "tick,path").remove();
                  var _3 = re + X + (A || 0) / 2 - ("outside" === t5.ticks ? 1 : 0), T2 = l.calcTicks(se), M2 = l.getTickSigns(se)[2];
                  return l.drawTicks(r4, se, { vals: "inside" === se.ticks ? l.clipEnds(se, T2) : T2, layer: ye, path: l.makeTickPath(se, _3, M2), transFn: l.makeTransTickFn(se) }), l.drawLabels(r4, se, { vals: T2, layer: ye, transFn: l.makeTransTickLabelFn(se), labelFns: l.makeLabelFns(se, _3) });
                }, function() {
                  if (o2 && !ce || !o2 && ce) {
                    var e5, a2, i2 = se.position || 0, l2 = se._offset + se._length / 2;
                    if ("right" === Y) a2 = l2, e5 = F.l + ee * i2 + 10 + me * (se.showticklabels ? 1 : 0.5);
                    else if (e5 = l2, "bottom" === Y && (a2 = F.t + te * i2 + 10 + (-1 === ge.indexOf("inside") ? se.tickfont.size : 0) + ("intside" !== se.ticks && t5.ticklen || 0)), "top" === Y) {
                      var s3 = j.text.split("<br>").length;
                      a2 = F.t + te * i2 + 10 - X - w * me * s3;
                    }
                    _e((o2 ? "h" : "v") + se._id + "title", { avoid: { selection: n.select(r4).selectAll("g." + se._id + "tick"), side: Y, offsetTop: o2 ? 0 : F.t, offsetLeft: o2 ? F.l : 0, maxShift: o2 ? N.width : N.height }, attributes: { x: e5, y: a2, "text-anchor": "middle" }, transform: { rotate: o2 ? -90 : 0, offset: 0 } });
                  }
                }, i.previousPromises, function() {
                  var n2, l2 = X + A / 2;
                  -1 === ge.indexOf("inside") && (n2 = h.bBox(ye.node()), l2 += o2 ? n2.width : n2.height), pe = ve.select("text");
                  var c2 = 0, f2 = o2 && "top" === Y, v2 = !o2 && "right" === Y, g2 = 0;
                  if (pe.node() && !pe.classed(k.jsPlaceholder)) {
                    var y2, x2 = ve.select(".h" + se._id + "title-math-group").node();
                    x2 && (o2 && ce || !o2 && !ce) ? (c2 = (n2 = h.bBox(x2)).width, y2 = n2.height) : (c2 = (n2 = h.bBox(ve.node())).right - F.l - (o2 ? re : le), y2 = n2.bottom - F.t - (o2 ? le : re), o2 || "top" !== Y || (l2 += n2.height, g2 = n2.height)), v2 && (pe.attr("transform", u(c2 / 2 + me / 2, 0)), c2 *= 2), l2 = Math.max(l2, o2 ? c2 : y2);
                  }
                  var b2 = 2 * (o2 ? D : P) + l2 + L + A / 2, w2 = 0;
                  !o2 && j.text && "bottom" === O && I <= 0 && (b2 += w2 = b2 / 2, g2 += w2), N._hColorbarMoveTitle = w2, N._hColorbarMoveCBTitle = g2;
                  var H2 = L + A, B2 = (o2 ? re : le) - H2 / 2 - (o2 ? D : 0), V2 = (o2 ? le : re) - (o2 ? Q : P + g2 - w2);
                  e4.select("." + k.cbbg).attr("x", B2).attr("y", V2).attr(o2 ? "width" : "height", Math.max(b2 - w2, 2)).attr(o2 ? "height" : "width", Math.max(Q + H2, 2)).call(p.fill, S).call(p.stroke, t5.bordercolor).style("stroke-width", L);
                  var U2 = v2 ? Math.max(c2 - 10, 0) : 0;
                  e4.selectAll("." + k.cboutline).attr("x", (o2 ? re : le + D) + U2).attr("y", (o2 ? le + P - Q : re) + (f2 ? xe : 0)).attr(o2 ? "width" : "height", Math.max(X, 2)).attr(o2 ? "height" : "width", Math.max(Q - (o2 ? 2 * P + xe : 2 * D + U2), 2)).call(p.stroke, t5.outlinecolor).style({ fill: "none", "stroke-width": A });
                  var q2 = o2 ? ne * b2 : 0, G2 = o2 ? 0 : (1 - ae) * b2 - g2;
                  if (q2 = R ? F.l - q2 : -q2, G2 = E ? F.t - G2 : -G2, e4.attr("transform", u(q2, G2)), !o2 && (L || a(S).getAlpha() && !a.equals(N.paper_bgcolor, S))) {
                    var Z2 = ye.selectAll("text"), W2 = Z2[0].length, J2 = e4.select("." + k.cbbg).node(), K2 = h.bBox(J2), $2 = h.getTranslate(e4);
                    Z2.each(function(e5, t6) {
                      var r5 = W2 - 1;
                      if (0 === t6 || t6 === r5) {
                        var n3, a2 = h.bBox(this), i2 = h.getTranslate(this);
                        if (t6 === r5) {
                          var o3 = a2.right + i2.x;
                          (n3 = K2.right + $2.x + le - L - 2 + z - o3) > 0 && (n3 = 0);
                        } else if (0 === t6) {
                          var l3 = a2.left + i2.x;
                          (n3 = K2.left + $2.x + le + L + 2 - l3) < 0 && (n3 = 0);
                        }
                        n3 && (W2 < 3 ? this.setAttribute("transform", "translate(" + n3 + ",0) " + this.getAttribute("transform")) : this.setAttribute("visibility", "hidden"));
                      }
                    });
                  }
                  var ee2 = {}, te2 = T[C], ie2 = M[C], oe2 = T[O], ue2 = M[O], fe2 = b2 - X;
                  o2 ? ("pixels" === d2 ? (ee2.y = I, ee2.t = Q * oe2, ee2.b = Q * ue2) : (ee2.t = ee2.b = 0, ee2.yt = I + s2 * oe2, ee2.yb = I - s2 * ue2), "pixels" === _2 ? (ee2.x = z, ee2.l = b2 * te2, ee2.r = b2 * ie2) : (ee2.l = fe2 * te2, ee2.r = fe2 * ie2, ee2.xl = z - m3 * te2, ee2.xr = z + m3 * ie2)) : ("pixels" === d2 ? (ee2.x = z, ee2.l = Q * te2, ee2.r = Q * ie2) : (ee2.l = ee2.r = 0, ee2.xl = z + s2 * te2, ee2.xr = z - s2 * ie2), "pixels" === _2 ? (ee2.y = 1 - I, ee2.t = b2 * oe2, ee2.b = b2 * ue2) : (ee2.t = fe2 * oe2, ee2.b = fe2 * ue2, ee2.yt = I - m3 * oe2, ee2.yb = I + m3 * ue2));
                  var de2 = t5.y < 0.5 ? "b" : "t", he2 = t5.x < 0.5 ? "l" : "r";
                  r4._fullLayout._reservedMargin[t5._id] = {};
                  var be2 = { r: N.width - B2 - q2, l: B2 + ee2.r, b: N.height - V2 - G2, t: V2 + ee2.b };
                  R && E ? i.autoMargin(r4, t5._id, ee2) : R ? r4._fullLayout._reservedMargin[t5._id][de2] = be2[de2] : E || o2 ? r4._fullLayout._reservedMargin[t5._id][he2] = be2[he2] : r4._fullLayout._reservedMargin[t5._id][de2] = be2[de2];
                }], r4);
              }(r3, t4, e3);
              m2 && m2.then && (e3._promises || []).push(m2), e3._context.edits.colorbarPosition && function(e4, t5, r4) {
                var n2, a2, i2, l2 = "v" === t5.orientation, c2 = r4._fullLayout._size;
                s.init({ element: e4.node(), gd: r4, prepFn: function() {
                  n2 = e4.attr("transform"), d(e4);
                }, moveFn: function(r5, o2) {
                  e4.attr("transform", n2 + u(r5, o2)), a2 = s.align((l2 ? t5._uFrac : t5._vFrac) + r5 / c2.w, l2 ? t5._thickFrac : t5._lenFrac, 0, 1, t5.xanchor), i2 = s.align((l2 ? t5._vFrac : 1 - t5._uFrac) - o2 / c2.h, l2 ? t5._lenFrac : t5._thickFrac, 0, 1, t5.yanchor);
                  var f2 = s.getCursor(a2, i2, t5.xanchor, t5.yanchor);
                  d(e4, f2);
                }, doneFn: function() {
                  if (d(e4), void 0 !== a2 && void 0 !== i2) {
                    var n3 = {};
                    n3[t5._propPrefix + "x"] = a2, n3[t5._propPrefix + "y"] = i2, void 0 !== t5._traceIndex ? o.call("_guiRestyle", r4, n3, t5._traceIndex) : o.call("_guiRelayout", r4, n3);
                  }
                } });
              }(r3, t4, e3);
            }), t3.exit().each(function(t4) {
              i.autoMargin(e3, t4._id);
            }).remove(), t3.order();
          } };
        }, 1362: function(e2, t2, r2) {
          var n = r2(4809);
          e2.exports = function(e3) {
            return n.isPlainObject(e3.colorbar);
          };
        }, 6919: function(e2, t2, r2) {
          e2.exports = { moduleType: "component", name: "colorbar", attributes: r2(5158), supplyDefaults: r2(2097), draw: r2(5881).draw, hasColorbar: r2(1362) };
        }, 7163: function(e2, t2, r2) {
          var n = r2(5158), a = r2(694).counter, i = r2(2994), o = r2(9017).scales;
          function l(e3) {
            return "`" + e3 + "`";
          }
          i(o), e2.exports = function(e3, t3) {
            e3 = e3 || "";
            var r3, i2 = (t3 = t3 || {}).cLetter || "c", s = ("onlyIfNumerical" in t3 ? t3.onlyIfNumerical : Boolean(e3), "noScale" in t3 ? t3.noScale : "marker.line" === e3), c = "showScaleDflt" in t3 ? t3.showScaleDflt : "z" === i2, u = "string" == typeof t3.colorscaleDflt ? o[t3.colorscaleDflt] : null, f = t3.editTypeOverride || "", d = e3 ? e3 + "." : "";
            "colorAttr" in t3 ? (r3 = t3.colorAttr, t3.colorAttr) : l(d + (r3 = { z: "z", c: "color" }[i2]));
            var h = i2 + "auto", p = i2 + "min", v = i2 + "max", g = i2 + "mid", m = {};
            m[p] = m[v] = void 0;
            var y = {};
            y[h] = false;
            var x = {};
            return "color" === r3 && (x.color = { valType: "color", arrayOk: true, editType: f || "style" }, t3.anim && (x.color.anim = true)), x[h] = { valType: "boolean", dflt: true, editType: "calc", impliedEdits: m }, x[p] = { valType: "number", dflt: null, editType: f || "plot", impliedEdits: y }, x[v] = { valType: "number", dflt: null, editType: f || "plot", impliedEdits: y }, x[g] = { valType: "number", dflt: null, editType: "calc", impliedEdits: m }, x.colorscale = { valType: "colorscale", editType: "calc", dflt: u, impliedEdits: { autocolorscale: false } }, x.autocolorscale = { valType: "boolean", dflt: false !== t3.autoColorDflt, editType: "calc", impliedEdits: { colorscale: void 0 } }, x.reversescale = { valType: "boolean", dflt: false, editType: "plot" }, s || (x.showscale = { valType: "boolean", dflt: c, editType: "calc" }, x.colorbar = n), t3.noColorAxis || (x.coloraxis = { valType: "subplotid", regex: a("coloraxis"), dflt: null, editType: "calc" }), x;
          };
        }, 8379: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(5477).extractOpts;
          e2.exports = function(e3, t3, r3) {
            var o, l = e3._fullLayout, s = r3.vals, c = r3.containerStr, u = c ? a.nestedProperty(t3, c).get() : t3, f = i(u), d = false !== f.auto, h = f.min, p = f.max, v = f.mid, g = function() {
              return a.aggNums(Math.min, null, s);
            }, m = function() {
              return a.aggNums(Math.max, null, s);
            };
            void 0 === h ? h = g() : d && (h = u._colorAx && n(h) ? Math.min(h, g()) : g()), void 0 === p ? p = m() : d && (p = u._colorAx && n(p) ? Math.max(p, m()) : m()), d && void 0 !== v && (p - v > v - h ? h = v - (p - v) : p - v < v - h && (p = v + (v - h))), h === p && (h -= 0.5, p += 0.5), f._sync("min", h), f._sync("max", p), f.autocolorscale && (o = h * p < 0 ? l.colorscale.diverging : h >= 0 ? l.colorscale.sequential : l.colorscale.sequentialminus, f._sync("colorscale", o));
          };
        }, 7623: function(e2, t2, r2) {
          var n = r2(4809), a = r2(5477).hasColorscale, i = r2(5477).extractOpts;
          e2.exports = function(e3, t3) {
            function r3(e4, t4) {
              var r4 = e4["_" + t4];
              void 0 !== r4 && (e4[t4] = r4);
            }
            function o(e4, a2) {
              var o2 = a2.container ? n.nestedProperty(e4, a2.container).get() : e4;
              if (o2) if (o2.coloraxis) o2._colorAx = t3[o2.coloraxis];
              else {
                var l2 = i(o2), s2 = l2.auto;
                (s2 || void 0 === l2.min) && r3(o2, a2.min), (s2 || void 0 === l2.max) && r3(o2, a2.max), l2.autocolorscale && r3(o2, "colorscale");
              }
            }
            for (var l = 0; l < e3.length; l++) {
              var s = e3[l], c = s._module.colorbar;
              if (c) if (Array.isArray(c)) for (var u = 0; u < c.length; u++) o(s, c[u]);
              else o(s, c);
              a(s, "marker.line") && o(s, { container: "marker.line", min: "cmin", max: "cmax" });
            }
            for (var f in t3._colorAxes) o(t3[f], { min: "cmin", max: "cmax" });
          };
        }, 9356: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(1362), o = r2(2097), l = r2(9017).isValid, s = r2(3626).traceIs;
          function c(e3, t3) {
            var r3 = t3.slice(0, t3.length - 1);
            return t3 ? a.nestedProperty(e3, r3).get() || {} : e3;
          }
          e2.exports = function e3(t3, r3, u, f, d) {
            var h = d.prefix, p = d.cLetter, v = "_module" in r3, g = c(t3, h), m = c(r3, h), y = c(r3._template || {}, h) || {}, x = function() {
              return delete t3.coloraxis, delete r3.coloraxis, e3(t3, r3, u, f, d);
            };
            if (v) {
              var b = u._colorAxes || {}, _ = f(h + "coloraxis");
              if (_) {
                var w = s(r3, "contour") && a.nestedProperty(r3, "contours.coloring").get() || "heatmap", T = b[_];
                return void (T ? (T[2].push(x), T[0] !== w && (T[0] = false, a.warn(["Ignoring coloraxis:", _, "setting", "as it is linked to incompatible colorscales."].join(" ")))) : b[_] = [w, r3, [x]]);
              }
            }
            var M = g[p + "min"], k = g[p + "max"], A = n(M) && n(k) && M < k;
            f(h + p + "auto", !A) ? f(h + p + "mid") : (f(h + p + "min"), f(h + p + "max"));
            var L, S, C = g.colorscale, O = y.colorscale;
            void 0 !== C && (L = !l(C)), void 0 !== O && (L = !l(O)), f(h + "autocolorscale", L), f(h + "colorscale"), f(h + "reversescale"), "marker.line." !== h && (h && v && (S = i(g)), f(h + "showscale", S) && (h && y && (m._template = y), o(g, m, u)));
          };
        }, 5477: function(e2, t2, r2) {
          var n = r2(5568), a = r2(5657), i = r2(721), o = r2(4809), l = r2(8766), s = r2(9017).isValid, c = ["showscale", "autocolorscale", "colorscale", "reversescale", "colorbar"], u = ["min", "max", "mid", "auto"];
          function f(e3) {
            var t3, r3, n2, a2 = e3._colorAx, i2 = a2 || e3, o2 = {};
            for (r3 = 0; r3 < c.length; r3++) o2[n2 = c[r3]] = i2[n2];
            if (a2) for (t3 = "c", r3 = 0; r3 < u.length; r3++) o2[n2 = u[r3]] = i2["c" + n2];
            else {
              var l2;
              for (r3 = 0; r3 < u.length; r3++) ((l2 = "c" + (n2 = u[r3])) in i2 || (l2 = "z" + n2) in i2) && (o2[n2] = i2[l2]);
              t3 = l2.charAt(0);
            }
            return o2._sync = function(e4, r4) {
              var n3 = -1 !== u.indexOf(e4) ? t3 + e4 : e4;
              i2[n3] = i2["_" + n3] = r4;
            }, o2;
          }
          function d(e3) {
            for (var t3 = f(e3), r3 = t3.min, n2 = t3.max, a2 = t3.reversescale ? h(t3.colorscale) : t3.colorscale, i2 = a2.length, o2 = new Array(i2), l2 = new Array(i2), s2 = 0; s2 < i2; s2++) {
              var c2 = a2[s2];
              o2[s2] = r3 + c2[0] * (n2 - r3), l2[s2] = c2[1];
            }
            return { domain: o2, range: l2 };
          }
          function h(e3) {
            for (var t3 = e3.length, r3 = new Array(t3), n2 = t3 - 1, a2 = 0; n2 >= 0; n2--, a2++) {
              var i2 = e3[n2];
              r3[a2] = [1 - i2[0], i2[1]];
            }
            return r3;
          }
          function p(e3, t3) {
            t3 = t3 || {};
            for (var r3 = e3.domain, o2 = e3.range, s2 = o2.length, c2 = new Array(s2), u2 = 0; u2 < s2; u2++) {
              var f2 = a(o2[u2]).toRgb();
              c2[u2] = [f2.r, f2.g, f2.b, f2.a];
            }
            var d2, h2 = n.scale.linear().domain(r3).range(c2).clamp(true), p2 = t3.noNumericCheck, g = t3.returnArray;
            return (d2 = p2 && g ? h2 : p2 ? function(e4) {
              return v(h2(e4));
            } : g ? function(e4) {
              return i(e4) ? h2(e4) : a(e4).isValid() ? e4 : l.defaultLine;
            } : function(e4) {
              return i(e4) ? v(h2(e4)) : a(e4).isValid() ? e4 : l.defaultLine;
            }).domain = h2.domain, d2.range = function() {
              return o2;
            }, d2;
          }
          function v(e3) {
            var t3 = { r: e3[0], g: e3[1], b: e3[2], a: e3[3] };
            return a(t3).toRgbString();
          }
          e2.exports = { hasColorscale: function(e3, t3, r3) {
            var n2 = t3 ? o.nestedProperty(e3, t3).get() || {} : e3, a2 = n2[r3 || "color"];
            a2 && a2._inputArray && (a2 = a2._inputArray);
            var l2 = false;
            if (o.isArrayOrTypedArray(a2)) {
              for (var c2 = 0; c2 < a2.length; c2++) if (i(a2[c2])) {
                l2 = true;
                break;
              }
            }
            return o.isPlainObject(n2) && (l2 || true === n2.showscale || i(n2.cmin) && i(n2.cmax) || s(n2.colorscale) || o.isPlainObject(n2.colorbar));
          }, extractOpts: f, extractScale: d, flipScale: h, makeColorScaleFunc: p, makeColorScaleFuncFromTrace: function(e3, t3) {
            return p(d(e3), t3);
          } };
        }, 8856: function(e2, t2, r2) {
          var n = r2(9017), a = r2(5477);
          e2.exports = { moduleType: "component", name: "colorscale", attributes: r2(7163), layoutAttributes: r2(6978), supplyLayoutDefaults: r2(4613), handleDefaults: r2(9356), crossTraceDefaults: r2(7623), calc: r2(8379), scales: n.scales, defaultScale: n.defaultScale, getScale: n.get, isValidScale: n.isValid, hasColorscale: a.hasColorscale, extractOpts: a.extractOpts, extractScale: a.extractScale, flipScale: a.flipScale, makeColorScaleFunc: a.makeColorScaleFunc, makeColorScaleFuncFromTrace: a.makeColorScaleFuncFromTrace };
        }, 6978: function(e2, t2, r2) {
          var n = r2(3049).extendFlat, a = r2(7163), i = r2(9017).scales;
          e2.exports = { editType: "calc", colorscale: { editType: "calc", sequential: { valType: "colorscale", dflt: i.Reds, editType: "calc" }, sequentialminus: { valType: "colorscale", dflt: i.Blues, editType: "calc" }, diverging: { valType: "colorscale", dflt: i.RdBu, editType: "calc" } }, coloraxis: n({ _isSubplotObj: true, editType: "calc" }, a("", { colorAttr: "corresponding trace color array(s)", noColorAxis: true, showScaleDflt: true })) };
        }, 4613: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8032), i = r2(6978), o = r2(9356);
          e2.exports = function(e3, t3) {
            function r3(r4, a2) {
              return n.coerce(e3, t3, i, r4, a2);
            }
            r3("colorscale.sequential"), r3("colorscale.sequentialminus"), r3("colorscale.diverging");
            var l, s, c = t3._colorAxes;
            function u(e4, t4) {
              return n.coerce(l, s, i.coloraxis, e4, t4);
            }
            for (var f in c) {
              var d = c[f];
              if (d[0]) l = e3[f] || {}, (s = a.newContainer(t3, f, "coloraxis"))._name = f, o(l, s, t3, u, { prefix: "", cLetter: "c" });
              else {
                for (var h = 0; h < d[2].length; h++) d[2][h]();
                delete t3._colorAxes[f];
              }
            }
          };
        }, 9017: function(e2, t2, r2) {
          var n = r2(5657), a = { Greys: [[0, "rgb(0,0,0)"], [1, "rgb(255,255,255)"]], YlGnBu: [[0, "rgb(8,29,88)"], [0.125, "rgb(37,52,148)"], [0.25, "rgb(34,94,168)"], [0.375, "rgb(29,145,192)"], [0.5, "rgb(65,182,196)"], [0.625, "rgb(127,205,187)"], [0.75, "rgb(199,233,180)"], [0.875, "rgb(237,248,217)"], [1, "rgb(255,255,217)"]], Greens: [[0, "rgb(0,68,27)"], [0.125, "rgb(0,109,44)"], [0.25, "rgb(35,139,69)"], [0.375, "rgb(65,171,93)"], [0.5, "rgb(116,196,118)"], [0.625, "rgb(161,217,155)"], [0.75, "rgb(199,233,192)"], [0.875, "rgb(229,245,224)"], [1, "rgb(247,252,245)"]], YlOrRd: [[0, "rgb(128,0,38)"], [0.125, "rgb(189,0,38)"], [0.25, "rgb(227,26,28)"], [0.375, "rgb(252,78,42)"], [0.5, "rgb(253,141,60)"], [0.625, "rgb(254,178,76)"], [0.75, "rgb(254,217,118)"], [0.875, "rgb(255,237,160)"], [1, "rgb(255,255,204)"]], Bluered: [[0, "rgb(0,0,255)"], [1, "rgb(255,0,0)"]], RdBu: [[0, "rgb(5,10,172)"], [0.35, "rgb(106,137,247)"], [0.5, "rgb(190,190,190)"], [0.6, "rgb(220,170,132)"], [0.7, "rgb(230,145,90)"], [1, "rgb(178,10,28)"]], Reds: [[0, "rgb(220,220,220)"], [0.2, "rgb(245,195,157)"], [0.4, "rgb(245,160,105)"], [1, "rgb(178,10,28)"]], Blues: [[0, "rgb(5,10,172)"], [0.35, "rgb(40,60,190)"], [0.5, "rgb(70,100,245)"], [0.6, "rgb(90,120,245)"], [0.7, "rgb(106,137,247)"], [1, "rgb(220,220,220)"]], Picnic: [[0, "rgb(0,0,255)"], [0.1, "rgb(51,153,255)"], [0.2, "rgb(102,204,255)"], [0.3, "rgb(153,204,255)"], [0.4, "rgb(204,204,255)"], [0.5, "rgb(255,255,255)"], [0.6, "rgb(255,204,255)"], [0.7, "rgb(255,153,255)"], [0.8, "rgb(255,102,204)"], [0.9, "rgb(255,102,102)"], [1, "rgb(255,0,0)"]], Rainbow: [[0, "rgb(150,0,90)"], [0.125, "rgb(0,0,200)"], [0.25, "rgb(0,25,255)"], [0.375, "rgb(0,152,255)"], [0.5, "rgb(44,255,150)"], [0.625, "rgb(151,255,0)"], [0.75, "rgb(255,234,0)"], [0.875, "rgb(255,111,0)"], [1, "rgb(255,0,0)"]], Portland: [[0, "rgb(12,51,131)"], [0.25, "rgb(10,136,186)"], [0.5, "rgb(242,211,56)"], [0.75, "rgb(242,143,56)"], [1, "rgb(217,30,30)"]], Jet: [[0, "rgb(0,0,131)"], [0.125, "rgb(0,60,170)"], [0.375, "rgb(5,255,255)"], [0.625, "rgb(255,255,0)"], [0.875, "rgb(250,0,0)"], [1, "rgb(128,0,0)"]], Hot: [[0, "rgb(0,0,0)"], [0.3, "rgb(230,0,0)"], [0.6, "rgb(255,210,0)"], [1, "rgb(255,255,255)"]], Blackbody: [[0, "rgb(0,0,0)"], [0.2, "rgb(230,0,0)"], [0.4, "rgb(230,210,0)"], [0.7, "rgb(255,255,255)"], [1, "rgb(160,200,255)"]], Earth: [[0, "rgb(0,0,130)"], [0.1, "rgb(0,180,180)"], [0.2, "rgb(40,210,40)"], [0.4, "rgb(230,230,50)"], [0.6, "rgb(120,70,20)"], [1, "rgb(255,255,255)"]], Electric: [[0, "rgb(0,0,0)"], [0.15, "rgb(30,0,100)"], [0.4, "rgb(120,0,100)"], [0.6, "rgb(160,90,0)"], [0.8, "rgb(230,200,0)"], [1, "rgb(255,250,220)"]], Viridis: [[0, "#440154"], [0.06274509803921569, "#48186a"], [0.12549019607843137, "#472d7b"], [0.18823529411764706, "#424086"], [0.25098039215686274, "#3b528b"], [0.3137254901960784, "#33638d"], [0.3764705882352941, "#2c728e"], [0.4392156862745098, "#26828e"], [0.5019607843137255, "#21918c"], [0.5647058823529412, "#1fa088"], [0.6274509803921569, "#28ae80"], [0.6901960784313725, "#3fbc73"], [0.7529411764705882, "#5ec962"], [0.8156862745098039, "#84d44b"], [0.8784313725490196, "#addc30"], [0.9411764705882353, "#d8e219"], [1, "#fde725"]], Cividis: [[0, "rgb(0,32,76)"], [0.058824, "rgb(0,42,102)"], [0.117647, "rgb(0,52,110)"], [0.176471, "rgb(39,63,108)"], [0.235294, "rgb(60,74,107)"], [0.294118, "rgb(76,85,107)"], [0.352941, "rgb(91,95,109)"], [0.411765, "rgb(104,106,112)"], [0.470588, "rgb(117,117,117)"], [0.529412, "rgb(131,129,120)"], [0.588235, "rgb(146,140,120)"], [0.647059, "rgb(161,152,118)"], [0.705882, "rgb(176,165,114)"], [0.764706, "rgb(192,177,109)"], [0.823529, "rgb(209,191,102)"], [0.882353, "rgb(225,204,92)"], [0.941176, "rgb(243,219,79)"], [1, "rgb(255,233,69)"]] }, i = a.RdBu;
          function o(e3) {
            var t3 = 0;
            if (!Array.isArray(e3) || e3.length < 2) return false;
            if (!e3[0] || !e3[e3.length - 1]) return false;
            if (0 != +e3[0][0] || 1 != +e3[e3.length - 1][0]) return false;
            for (var r3 = 0; r3 < e3.length; r3++) {
              var a2 = e3[r3];
              if (2 !== a2.length || +a2[0] < t3 || !n(a2[1]).isValid()) return false;
              t3 = +a2[0];
            }
            return true;
          }
          e2.exports = { scales: a, defaultScale: i, get: function(e3, t3) {
            if (t3 || (t3 = i), !e3) return t3;
            function r3() {
              try {
                e3 = a[e3] || JSON.parse(e3);
              } catch (r4) {
                e3 = t3;
              }
            }
            return "string" == typeof e3 && (r3(), "string" == typeof e3 && r3()), o(e3) ? e3 : t3;
          }, isValid: function(e3) {
            return void 0 !== a[e3] || o(e3);
          } };
        }, 3770: function(e2) {
          e2.exports = function(e3, t2, r2, n, a) {
            var i = (e3 - r2) / (n - r2), o = i + t2 / (n - r2), l = (i + o) / 2;
            return "left" === a || "bottom" === a ? i : "center" === a || "middle" === a ? l : "right" === a || "top" === a ? o : i < 2 / 3 - l ? i : o > 4 / 3 - l ? o : l;
          };
        }, 4001: function(e2, t2, r2) {
          var n = r2(4809), a = [["sw-resize", "s-resize", "se-resize"], ["w-resize", "move", "e-resize"], ["nw-resize", "n-resize", "ne-resize"]];
          e2.exports = function(e3, t3, r3, i) {
            return e3 = "left" === r3 ? 0 : "center" === r3 ? 1 : "right" === r3 ? 2 : n.constrain(Math.floor(3 * e3), 0, 2), t3 = "bottom" === i ? 0 : "middle" === i ? 1 : "top" === i ? 2 : n.constrain(Math.floor(3 * t3), 0, 2), a[t3][e3];
          };
        }, 414: function(e2, t2) {
          t2.selectMode = function(e3) {
            return "lasso" === e3 || "select" === e3;
          }, t2.drawMode = function(e3) {
            return "drawclosedpath" === e3 || "drawopenpath" === e3 || "drawline" === e3 || "drawrect" === e3 || "drawcircle" === e3;
          }, t2.openMode = function(e3) {
            return "drawline" === e3 || "drawopenpath" === e3;
          }, t2.rectMode = function(e3) {
            return "select" === e3 || "drawline" === e3 || "drawrect" === e3 || "drawcircle" === e3;
          }, t2.freeMode = function(e3) {
            return "lasso" === e3 || "drawclosedpath" === e3 || "drawopenpath" === e3;
          }, t2.selectingOrDrawing = function(e3) {
            return t2.freeMode(e3) || t2.rectMode(e3);
          };
        }, 4751: function(e2, t2, r2) {
          var n = r2(4039), a = r2(9784), i = r2(4043), o = r2(4809).removeElement, l = r2(4826), s = e2.exports = {};
          s.align = r2(3770), s.getCursor = r2(4001);
          var c = r2(148);
          function u() {
            var e3 = document.createElement("div");
            e3.className = "dragcover";
            var t3 = e3.style;
            return t3.position = "fixed", t3.left = 0, t3.right = 0, t3.top = 0, t3.bottom = 0, t3.zIndex = 999999999, t3.background = "none", document.body.appendChild(e3), e3;
          }
          function f(e3) {
            return n(e3.changedTouches ? e3.changedTouches[0] : e3, document.body);
          }
          s.unhover = c.wrapped, s.unhoverRaw = c.raw, s.init = function(e3) {
            var t3, r3, n2, c2, d, h, p, v, g = e3.gd, m = 1, y = g._context.doubleClickDelay, x = e3.element;
            g._mouseDownTime || (g._mouseDownTime = 0), x.style.pointerEvents = "all", x.onmousedown = _, i ? (x._ontouchstart && x.removeEventListener("touchstart", x._ontouchstart), x._ontouchstart = _, x.addEventListener("touchstart", _, { passive: false })) : x.ontouchstart = _;
            var b = e3.clampFn || function(e4, t4, r4) {
              return Math.abs(e4) < r4 && (e4 = 0), Math.abs(t4) < r4 && (t4 = 0), [e4, t4];
            };
            function _(i2) {
              g._dragged = false, g._dragging = true;
              var o2 = f(i2);
              t3 = o2[0], r3 = o2[1], p = i2.target, h = i2, v = 2 === i2.buttons || i2.ctrlKey, void 0 === i2.clientX && void 0 === i2.clientY && (i2.clientX = t3, i2.clientY = r3), (n2 = (/* @__PURE__ */ new Date()).getTime()) - g._mouseDownTime < y ? m += 1 : (m = 1, g._mouseDownTime = n2), e3.prepFn && e3.prepFn(i2, t3, r3), a && !v ? (d = u()).style.cursor = window.getComputedStyle(x).cursor : a || (d = document, c2 = window.getComputedStyle(document.documentElement).cursor, document.documentElement.style.cursor = window.getComputedStyle(x).cursor), document.addEventListener("mouseup", T), document.addEventListener("touchend", T), false !== e3.dragmode && (i2.preventDefault(), document.addEventListener("mousemove", w), document.addEventListener("touchmove", w, { passive: false }));
            }
            function w(n3) {
              n3.preventDefault();
              var a2 = f(n3), i2 = e3.minDrag || l.MINDRAG, o2 = b(a2[0] - t3, a2[1] - r3, i2), c3 = o2[0], u2 = o2[1];
              (c3 || u2) && (g._dragged = true, s.unhover(g, n3)), g._dragged && e3.moveFn && !v && (g._dragdata = { element: x, dx: c3, dy: u2 }, e3.moveFn(c3, u2));
            }
            function T(t4) {
              if (delete g._dragdata, false !== e3.dragmode && (t4.preventDefault(), document.removeEventListener("mousemove", w), document.removeEventListener("touchmove", w)), document.removeEventListener("mouseup", T), document.removeEventListener("touchend", T), a ? o(d) : c2 && (d.documentElement.style.cursor = c2, c2 = null), g._dragging) {
                if (g._dragging = false, (/* @__PURE__ */ new Date()).getTime() - g._mouseDownTime > y && (m = Math.max(m - 1, 1)), g._dragged) e3.doneFn && e3.doneFn();
                else if (e3.clickFn && e3.clickFn(m, h), !v) {
                  var r4;
                  try {
                    r4 = new MouseEvent("click", t4);
                  } catch (e4) {
                    var n3 = f(t4);
                    (r4 = document.createEvent("MouseEvents")).initMouseEvent("click", t4.bubbles, t4.cancelable, t4.view, t4.detail, t4.screenX, t4.screenY, n3[0], n3[1], t4.ctrlKey, t4.altKey, t4.shiftKey, t4.metaKey, t4.button, t4.relatedTarget);
                  }
                  p.dispatchEvent(r4);
                }
                g._dragging = false, g._dragged = false;
              } else g._dragged = false;
            }
          }, s.coverSlip = u;
        }, 148: function(e2, t2, r2) {
          var n = r2(8596), a = r2(4025), i = r2(5425).getGraphDiv, o = r2(5988), l = e2.exports = {};
          l.wrapped = function(e3, t3, r3) {
            (e3 = i(e3))._fullLayout && a.clear(e3._fullLayout._uid + o.HOVERID), l.raw(e3, t3, r3);
          }, l.raw = function(e3, t3) {
            var r3 = e3._fullLayout, a2 = e3._hoverdata;
            t3 || (t3 = {}), t3.target && !e3._dragged && false === n.triggerHandler(e3, "plotly_beforehover", t3) || (r3._hoverlayer.selectAll("g").remove(), r3._hoverlayer.selectAll("line").remove(), r3._hoverlayer.selectAll("circle").remove(), e3._hoverdata = void 0, t3.target && a2 && e3.emit("plotly_unhover", { event: t3, points: a2 }));
          };
        }, 4850: function(e2, t2) {
          t2.T = { valType: "string", values: ["solid", "dot", "dash", "longdash", "dashdot", "longdashdot"], dflt: "solid", editType: "style" }, t2.k = { shape: { valType: "enumerated", values: ["", "/", "\\", "x", "-", "|", "+", "."], dflt: "", arrayOk: true, editType: "style" }, fillmode: { valType: "enumerated", values: ["replace", "overlay"], dflt: "replace", editType: "style" }, bgcolor: { valType: "color", arrayOk: true, editType: "style" }, fgcolor: { valType: "color", arrayOk: true, editType: "style" }, fgopacity: { valType: "number", editType: "style", min: 0, max: 1 }, size: { valType: "number", min: 0, dflt: 8, arrayOk: true, editType: "style" }, solidity: { valType: "number", min: 0, max: 1, dflt: 0.3, arrayOk: true, editType: "style" }, editType: "style" };
        }, 2203: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = a.numberFormat, o = r2(721), l = r2(5657), s = r2(3626), c = r2(8766), u = r2(8856), f = a.strTranslate, d = r2(635), h = r2(2972), p = r2(4530).LINE_SPACING, v = r2(438).DESELECTDIM, g = r2(4726), m = r2(2527), y = r2(6040).appendArrayPointValue, x = e2.exports = {};
          function b(e3) {
            return "none" === e3 ? void 0 : e3;
          }
          x.font = function(e3, t3) {
            var r3 = t3.variant, n2 = t3.style, a2 = t3.weight, i2 = t3.color, o2 = t3.size, l2 = t3.family, s2 = t3.shadow, u2 = t3.lineposition, f2 = t3.textcase;
            l2 && e3.style("font-family", l2), o2 + 1 && e3.style("font-size", o2 + "px"), i2 && e3.call(c.fill, i2), a2 && e3.style("font-weight", a2), n2 && e3.style("font-style", n2), r3 && e3.style("font-variant", r3), f2 && e3.style("text-transform", b(function(e4) {
              return _[e4];
            }(f2))), s2 && e3.style("text-shadow", "auto" === s2 ? d.makeTextShadow(c.contrast(i2)) : b(s2)), u2 && e3.style("text-decoration-line", b(function(e4) {
              return e4.replace("under", "underline").replace("over", "overline").replace("through", "line-through").split("+").join(" ");
            }(u2)));
          };
          var _ = { normal: "none", lower: "lowercase", upper: "uppercase", "word caps": "capitalize" };
          function w(e3, t3, r3, n2) {
            var a2 = t3.fillpattern, i2 = t3.fillgradient, o2 = a2 && x.getPatternAttr(a2.shape, 0, "");
            if (o2) {
              var l2 = x.getPatternAttr(a2.bgcolor, 0, null), s2 = x.getPatternAttr(a2.fgcolor, 0, null), u2 = a2.fgopacity, f2 = x.getPatternAttr(a2.size, 0, 8), d2 = x.getPatternAttr(a2.solidity, 0, 0.3), h2 = t3.uid;
              x.pattern(e3, "point", r3, h2, o2, f2, d2, void 0, a2.fillmode, l2, s2, u2);
            } else if (i2 && "none" !== i2.type) {
              var p2, v2, g2 = i2.type, m2 = "scatterfill-" + t3.uid;
              n2 && (m2 = "legendfill-" + t3.uid), n2 || void 0 === i2.start && void 0 === i2.stop ? ("horizontal" === g2 && (g2 += "reversed"), e3.call(x.gradient, r3, m2, g2, i2.colorscale, "fill")) : ("horizontal" === g2 ? (p2 = { x: i2.start, y: 0 }, v2 = { x: i2.stop, y: 0 }) : "vertical" === g2 && (p2 = { x: 0, y: i2.start }, v2 = { x: 0, y: i2.stop }), p2.x = t3._xA.c2p(void 0 === p2.x ? t3._extremes.x.min[0].val : p2.x, true), p2.y = t3._yA.c2p(void 0 === p2.y ? t3._extremes.y.min[0].val : p2.y, true), v2.x = t3._xA.c2p(void 0 === v2.x ? t3._extremes.x.max[0].val : v2.x, true), v2.y = t3._yA.c2p(void 0 === v2.y ? t3._extremes.y.max[0].val : v2.y, true), e3.call(S, r3, m2, "linear", i2.colorscale, "fill", p2, v2, true, false));
            } else t3.fillcolor && e3.call(c.fill, t3.fillcolor);
          }
          x.setPosition = function(e3, t3, r3) {
            e3.attr("x", t3).attr("y", r3);
          }, x.setSize = function(e3, t3, r3) {
            e3.attr("width", t3).attr("height", r3);
          }, x.setRect = function(e3, t3, r3, n2, a2) {
            e3.call(x.setPosition, t3, r3).call(x.setSize, n2, a2);
          }, x.translatePoint = function(e3, t3, r3, n2) {
            var a2 = r3.c2p(e3.x), i2 = n2.c2p(e3.y);
            return !!(o(a2) && o(i2) && t3.node()) && ("text" === t3.node().nodeName ? t3.attr("x", a2).attr("y", i2) : t3.attr("transform", f(a2, i2)), true);
          }, x.translatePoints = function(e3, t3, r3) {
            e3.each(function(e4) {
              var a2 = n.select(this);
              x.translatePoint(e4, a2, t3, r3);
            });
          }, x.hideOutsideRangePoint = function(e3, t3, r3, n2, a2, i2) {
            t3.attr("display", r3.isPtWithinRange(e3, a2) && n2.isPtWithinRange(e3, i2) ? null : "none");
          }, x.hideOutsideRangePoints = function(e3, t3) {
            if (t3._hasClipOnAxisFalse) {
              var r3 = t3.xaxis, a2 = t3.yaxis;
              e3.each(function(t4) {
                var i2 = t4[0].trace, o2 = i2.xcalendar, l2 = i2.ycalendar, c2 = s.traceIs(i2, "bar-like") ? ".bartext" : ".point,.textpoint";
                e3.selectAll(c2).each(function(e4) {
                  x.hideOutsideRangePoint(e4, n.select(this), r3, a2, o2, l2);
                });
              });
            }
          }, x.crispRound = function(e3, t3, r3) {
            return t3 && o(t3) ? e3._context.staticPlot ? t3 : t3 < 1 ? 1 : Math.round(t3) : r3 || 0;
          }, x.singleLineStyle = function(e3, t3, r3, n2, a2) {
            t3.style("fill", "none");
            var i2 = (((e3 || [])[0] || {}).trace || {}).line || {}, o2 = r3 || i2.width || 0, l2 = a2 || i2.dash || "";
            c.stroke(t3, n2 || i2.color), x.dashLine(t3, l2, o2);
          }, x.lineGroupStyle = function(e3, t3, r3, a2) {
            e3.style("fill", "none").each(function(e4) {
              var i2 = (((e4 || [])[0] || {}).trace || {}).line || {}, o2 = t3 || i2.width || 0, l2 = a2 || i2.dash || "";
              n.select(this).call(c.stroke, r3 || i2.color).call(x.dashLine, l2, o2);
            });
          }, x.dashLine = function(e3, t3, r3) {
            r3 = +r3 || 0, t3 = x.dashStyle(t3, r3), e3.style({ "stroke-dasharray": t3, "stroke-width": r3 + "px" });
          }, x.dashStyle = function(e3, t3) {
            t3 = +t3 || 1;
            var r3 = Math.max(t3, 3);
            return "solid" === e3 ? e3 = "" : "dot" === e3 ? e3 = r3 + "px," + r3 + "px" : "dash" === e3 ? e3 = 3 * r3 + "px," + 3 * r3 + "px" : "longdash" === e3 ? e3 = 5 * r3 + "px," + 5 * r3 + "px" : "dashdot" === e3 ? e3 = 3 * r3 + "px," + r3 + "px," + r3 + "px," + r3 + "px" : "longdashdot" === e3 && (e3 = 5 * r3 + "px," + 2 * r3 + "px," + r3 + "px," + 2 * r3 + "px"), e3;
          }, x.singleFillStyle = function(e3, t3) {
            var r3 = n.select(e3.node());
            w(e3, ((r3.data()[0] || [])[0] || {}).trace || {}, t3, false);
          }, x.fillGroupStyle = function(e3, t3, r3) {
            e3.style("stroke-width", 0).each(function(e4) {
              var a2 = n.select(this);
              e4[0].trace && w(a2, e4[0].trace, t3, r3);
            });
          };
          var T = r2(8882);
          x.symbolNames = [], x.symbolFuncs = [], x.symbolBackOffs = [], x.symbolNeedLines = {}, x.symbolNoDot = {}, x.symbolNoFill = {}, x.symbolList = [], Object.keys(T).forEach(function(e3) {
            var t3 = T[e3], r3 = t3.n;
            x.symbolList.push(r3, String(r3), e3, r3 + 100, String(r3 + 100), e3 + "-open"), x.symbolNames[r3] = e3, x.symbolFuncs[r3] = t3.f, x.symbolBackOffs[r3] = t3.backoff || 0, t3.needLine && (x.symbolNeedLines[r3] = true), t3.noDot ? x.symbolNoDot[r3] = true : x.symbolList.push(r3 + 200, String(r3 + 200), e3 + "-dot", r3 + 300, String(r3 + 300), e3 + "-open-dot"), t3.noFill && (x.symbolNoFill[r3] = true);
          });
          var M = x.symbolNames.length;
          function k(e3, t3, r3, n2) {
            var a2 = e3 % 100;
            return x.symbolFuncs[a2](t3, r3, n2) + (e3 >= 200 ? "M0,0.5L0.5,0L0,-0.5L-0.5,0Z" : "");
          }
          x.symbolNumber = function(e3) {
            if (o(e3)) e3 = +e3;
            else if ("string" == typeof e3) {
              var t3 = 0;
              e3.indexOf("-open") > 0 && (t3 = 100, e3 = e3.replace("-open", "")), e3.indexOf("-dot") > 0 && (t3 += 200, e3 = e3.replace("-dot", "")), (e3 = x.symbolNames.indexOf(e3)) >= 0 && (e3 += t3);
            }
            return e3 % 100 >= M || e3 >= 400 ? 0 : Math.floor(Math.max(e3, 0));
          };
          var A = i("~f"), L = { radial: { type: "radial" }, radialreversed: { type: "radial", reversed: true }, horizontal: { type: "linear", start: { x: 1, y: 0 }, stop: { x: 0, y: 0 } }, horizontalreversed: { type: "linear", start: { x: 1, y: 0 }, stop: { x: 0, y: 0 }, reversed: true }, vertical: { type: "linear", start: { x: 0, y: 1 }, stop: { x: 0, y: 0 } }, verticalreversed: { type: "linear", start: { x: 0, y: 1 }, stop: { x: 0, y: 0 }, reversed: true } };
          function S(e3, t3, r3, i2, o2, s2, u2, f2, d2, h2) {
            var p2, v2 = o2.length;
            "linear" === i2 ? p2 = { node: "linearGradient", attrs: { x1: u2.x, y1: u2.y, x2: f2.x, y2: f2.y, gradientUnits: d2 ? "userSpaceOnUse" : "objectBoundingBox" }, reversed: h2 } : "radial" === i2 && (p2 = { node: "radialGradient", reversed: h2 });
            for (var g2 = new Array(v2), m2 = 0; m2 < v2; m2++) p2.reversed ? g2[v2 - 1 - m2] = [A(100 * (1 - o2[m2][0])), o2[m2][1]] : g2[m2] = [A(100 * o2[m2][0]), o2[m2][1]];
            var y2 = t3._fullLayout, x2 = "g" + y2._uid + "-" + r3, b2 = y2._defs.select(".gradients").selectAll("#" + x2).data([i2 + g2.join(";")], a.identity);
            b2.exit().remove(), b2.enter().append(p2.node).each(function() {
              var e4 = n.select(this);
              p2.attrs && e4.attr(p2.attrs), e4.attr("id", x2);
              var t4 = e4.selectAll("stop").data(g2);
              t4.exit().remove(), t4.enter().append("stop"), t4.each(function(e5) {
                var t5 = l(e5[1]);
                n.select(this).attr({ offset: e5[0] + "%", "stop-color": c.tinyRGB(t5), "stop-opacity": t5.getAlpha() });
              });
            }), e3.style(s2, V(x2, t3)).style(s2 + "-opacity", null), e3.classed("gradient_filled", true);
          }
          x.gradient = function(e3, t3, r3, n2, a2, i2) {
            var o2 = L[n2];
            return S(e3, t3, r3, o2.type, a2, i2, o2.start, o2.stop, false, o2.reversed);
          }, x.pattern = function(e3, t3, r3, i2, o2, s2, u2, f2, d2, h2, p2, v2) {
            var g2 = "legend" === t3;
            f2 && ("overlay" === d2 ? (h2 = f2, p2 = c.contrast(h2)) : (h2 = void 0, p2 = f2));
            var m2, y2, x2, b2, _2, w2, T2, M2, k2, A2 = r3._fullLayout, L2 = "p" + A2._uid + "-" + i2, S2 = {}, C2 = l(p2), O2 = c.tinyRGB(C2), D2 = v2 * C2.getAlpha();
            switch (o2) {
              case "/":
                m2 = s2 * Math.sqrt(2), y2 = s2 * Math.sqrt(2), w2 = "path", S2 = { d: x2 = "M-" + m2 / 4 + "," + y2 / 4 + "l" + m2 / 2 + ",-" + y2 / 2 + "M0," + y2 + "L" + m2 + ",0M" + m2 / 4 * 3 + "," + y2 / 4 * 5 + "l" + m2 / 2 + ",-" + y2 / 2, opacity: D2, stroke: O2, "stroke-width": (b2 = u2 * s2) + "px" };
                break;
              case "\\":
                m2 = s2 * Math.sqrt(2), y2 = s2 * Math.sqrt(2), w2 = "path", S2 = { d: x2 = "M" + m2 / 4 * 3 + ",-" + y2 / 4 + "l" + m2 / 2 + "," + y2 / 2 + "M0,0L" + m2 + "," + y2 + "M-" + m2 / 4 + "," + y2 / 4 * 3 + "l" + m2 / 2 + "," + y2 / 2, opacity: D2, stroke: O2, "stroke-width": (b2 = u2 * s2) + "px" };
                break;
              case "x":
                m2 = s2 * Math.sqrt(2), y2 = s2 * Math.sqrt(2), x2 = "M-" + m2 / 4 + "," + y2 / 4 + "l" + m2 / 2 + ",-" + y2 / 2 + "M0," + y2 + "L" + m2 + ",0M" + m2 / 4 * 3 + "," + y2 / 4 * 5 + "l" + m2 / 2 + ",-" + y2 / 2 + "M" + m2 / 4 * 3 + ",-" + y2 / 4 + "l" + m2 / 2 + "," + y2 / 2 + "M0,0L" + m2 + "," + y2 + "M-" + m2 / 4 + "," + y2 / 4 * 3 + "l" + m2 / 2 + "," + y2 / 2, b2 = s2 - s2 * Math.sqrt(1 - u2), w2 = "path", S2 = { d: x2, opacity: D2, stroke: O2, "stroke-width": b2 + "px" };
                break;
              case "|":
                w2 = "path", w2 = "path", S2 = { d: x2 = "M" + (m2 = s2) / 2 + ",0L" + m2 / 2 + "," + (y2 = s2), opacity: D2, stroke: O2, "stroke-width": (b2 = u2 * s2) + "px" };
                break;
              case "-":
                w2 = "path", w2 = "path", S2 = { d: x2 = "M0," + (y2 = s2) / 2 + "L" + (m2 = s2) + "," + y2 / 2, opacity: D2, stroke: O2, "stroke-width": (b2 = u2 * s2) + "px" };
                break;
              case "+":
                w2 = "path", x2 = "M" + (m2 = s2) / 2 + ",0L" + m2 / 2 + "," + (y2 = s2) + "M0," + y2 / 2 + "L" + m2 + "," + y2 / 2, b2 = s2 - s2 * Math.sqrt(1 - u2), w2 = "path", S2 = { d: x2, opacity: D2, stroke: O2, "stroke-width": b2 + "px" };
                break;
              case ".":
                m2 = s2, y2 = s2, u2 < Math.PI / 4 ? _2 = Math.sqrt(u2 * s2 * s2 / Math.PI) : (T2 = u2, M2 = Math.PI / 4, _2 = (k2 = s2 / 2) + (s2 / Math.sqrt(2) - k2) * (T2 - M2) / (1 - M2)), w2 = "circle", S2 = { cx: m2 / 2, cy: y2 / 2, r: _2, opacity: D2, fill: O2 };
            }
            var P2 = [o2 || "noSh", h2 || "noBg", p2 || "noFg", s2, u2].join(";"), z2 = A2._defs.select(".patterns").selectAll("#" + L2).data([P2], a.identity);
            z2.exit().remove(), z2.enter().append("pattern").each(function() {
              var e4 = n.select(this);
              if (e4.attr({ id: L2, width: m2 + "px", height: y2 + "px", patternUnits: "userSpaceOnUse", patternTransform: g2 ? "scale(0.8)" : "" }), h2) {
                var t4 = l(h2), r4 = c.tinyRGB(t4), a2 = t4.getAlpha(), i3 = e4.selectAll("rect").data([0]);
                i3.exit().remove(), i3.enter().append("rect").attr({ width: m2 + "px", height: y2 + "px", fill: r4, "fill-opacity": a2 });
              }
              var o3 = e4.selectAll(w2).data([0]);
              o3.exit().remove(), o3.enter().append(w2).attr(S2);
            }), e3.style("fill", V(L2, r3)).style("fill-opacity", null), e3.classed("pattern_filled", true);
          }, x.initGradients = function(e3) {
            var t3 = e3._fullLayout;
            a.ensureSingle(t3._defs, "g", "gradients").selectAll("linearGradient,radialGradient").remove(), n.select(e3).selectAll(".gradient_filled").classed("gradient_filled", false);
          }, x.initPatterns = function(e3) {
            var t3 = e3._fullLayout;
            a.ensureSingle(t3._defs, "g", "patterns").selectAll("pattern").remove(), n.select(e3).selectAll(".pattern_filled").classed("pattern_filled", false);
          }, x.getPatternAttr = function(e3, t3, r3) {
            return e3 && a.isArrayOrTypedArray(e3) ? t3 < e3.length ? e3[t3] : r3 : e3;
          }, x.pointStyle = function(e3, t3, r3, a2) {
            if (e3.size()) {
              var i2 = x.makePointStyleFns(t3);
              e3.each(function(e4) {
                x.singlePointStyle(e4, n.select(this), t3, i2, r3, a2);
              });
            }
          }, x.singlePointStyle = function(e3, t3, r3, n2, i2, o2) {
            var l2 = r3.marker, s2 = l2.line;
            if (o2 && o2.i >= 0 && void 0 === e3.i && (e3.i = o2.i), t3.style("opacity", n2.selectedOpacityFn ? n2.selectedOpacityFn(e3) : void 0 === e3.mo ? l2.opacity : e3.mo), n2.ms2mrc) {
              var u2;
              u2 = "various" === e3.ms || "various" === l2.size ? 3 : n2.ms2mrc(e3.ms), e3.mrc = u2, n2.selectedSizeFn && (u2 = e3.mrc = n2.selectedSizeFn(e3));
              var f2 = x.symbolNumber(e3.mx || l2.symbol) || 0;
              e3.om = f2 % 200 >= 100;
              var d2 = ne(e3, r3), h2 = G(e3, r3);
              t3.attr("d", k(f2, u2, d2, h2));
            }
            var p2, v2, g2, m2 = false;
            if (e3.so) g2 = s2.outlierwidth, v2 = s2.outliercolor, p2 = l2.outliercolor;
            else {
              var y2 = (s2 || {}).width;
              g2 = (e3.mlw + 1 || y2 + 1 || (e3.trace ? (e3.trace.marker.line || {}).width : 0) + 1) - 1 || 0, v2 = "mlc" in e3 ? e3.mlcc = n2.lineScale(e3.mlc) : a.isArrayOrTypedArray(s2.color) ? c.defaultLine : s2.color, a.isArrayOrTypedArray(l2.color) && (p2 = c.defaultLine, m2 = true), p2 = "mc" in e3 ? e3.mcc = n2.markerScale(e3.mc) : l2.color || l2.colors || "rgba(0,0,0,0)", n2.selectedColorFn && (p2 = n2.selectedColorFn(e3));
            }
            if (e3.om) t3.call(c.stroke, p2).style({ "stroke-width": (g2 || 1) + "px", fill: "none" });
            else {
              t3.style("stroke-width", (e3.isBlank ? 0 : g2) + "px");
              var b2 = l2.gradient, _2 = e3.mgt;
              _2 ? m2 = true : _2 = b2 && b2.type, a.isArrayOrTypedArray(_2) && (_2 = _2[0], L[_2] || (_2 = 0));
              var w2 = l2.pattern, T2 = w2 && x.getPatternAttr(w2.shape, e3.i, "");
              if (_2 && "none" !== _2) {
                var M2 = e3.mgc;
                M2 ? m2 = true : M2 = b2.color;
                var A2 = r3.uid;
                m2 && (A2 += "-" + e3.i), x.gradient(t3, i2, A2, _2, [[0, M2], [1, p2]], "fill");
              } else if (T2) {
                var S2 = false, C2 = w2.fgcolor;
                !C2 && o2 && o2.color && (C2 = o2.color, S2 = true);
                var O2 = x.getPatternAttr(C2, e3.i, o2 && o2.color || null), D2 = x.getPatternAttr(w2.bgcolor, e3.i, null), P2 = w2.fgopacity, z2 = x.getPatternAttr(w2.size, e3.i, 8), I2 = x.getPatternAttr(w2.solidity, e3.i, 0.3);
                S2 = S2 || e3.mcc || a.isArrayOrTypedArray(w2.shape) || a.isArrayOrTypedArray(w2.bgcolor) || a.isArrayOrTypedArray(w2.fgcolor) || a.isArrayOrTypedArray(w2.size) || a.isArrayOrTypedArray(w2.solidity);
                var E2 = r3.uid;
                S2 && (E2 += "-" + e3.i), x.pattern(t3, "point", i2, E2, T2, z2, I2, e3.mcc, w2.fillmode, D2, O2, P2);
              } else a.isArrayOrTypedArray(p2) ? c.fill(t3, p2[e3.i]) : c.fill(t3, p2);
              g2 && c.stroke(t3, v2);
            }
          }, x.makePointStyleFns = function(e3) {
            var t3 = {}, r3 = e3.marker;
            return t3.markerScale = x.tryColorscale(r3, ""), t3.lineScale = x.tryColorscale(r3, "line"), s.traceIs(e3, "symbols") && (t3.ms2mrc = g.isBubble(e3) ? m(e3) : function() {
              return (r3.size || 6) / 2;
            }), e3.selectedpoints && a.extendFlat(t3, x.makeSelectedPointStyleFns(e3)), t3;
          }, x.makeSelectedPointStyleFns = function(e3) {
            var t3 = {}, r3 = e3.selected || {}, n2 = e3.unselected || {}, i2 = e3.marker || {}, o2 = r3.marker || {}, l2 = n2.marker || {}, c2 = i2.opacity, u2 = o2.opacity, f2 = l2.opacity, d2 = void 0 !== u2, h2 = void 0 !== f2;
            (a.isArrayOrTypedArray(c2) || d2 || h2) && (t3.selectedOpacityFn = function(e4) {
              var t4 = void 0 === e4.mo ? i2.opacity : e4.mo;
              return e4.selected ? d2 ? u2 : t4 : h2 ? f2 : v * t4;
            });
            var p2 = i2.color, g2 = o2.color, m2 = l2.color;
            (g2 || m2) && (t3.selectedColorFn = function(e4) {
              var t4 = e4.mcc || p2;
              return e4.selected ? g2 || t4 : m2 || t4;
            });
            var y2 = i2.size, x2 = o2.size, b2 = l2.size, _2 = void 0 !== x2, w2 = void 0 !== b2;
            return s.traceIs(e3, "symbols") && (_2 || w2) && (t3.selectedSizeFn = function(e4) {
              var t4 = e4.mrc || y2 / 2;
              return e4.selected ? _2 ? x2 / 2 : t4 : w2 ? b2 / 2 : t4;
            }), t3;
          }, x.makeSelectedTextStyleFns = function(e3) {
            var t3 = {}, r3 = e3.selected || {}, n2 = e3.unselected || {}, a2 = e3.textfont || {}, i2 = r3.textfont || {}, o2 = n2.textfont || {}, l2 = a2.color, s2 = i2.color, u2 = o2.color;
            return t3.selectedTextColorFn = function(e4) {
              var t4 = e4.tc || l2;
              return e4.selected ? s2 || t4 : u2 || (s2 ? t4 : c.addOpacity(t4, v));
            }, t3;
          }, x.selectedPointStyle = function(e3, t3) {
            if (e3.size() && t3.selectedpoints) {
              var r3 = x.makeSelectedPointStyleFns(t3), a2 = t3.marker || {}, i2 = [];
              r3.selectedOpacityFn && i2.push(function(e4, t4) {
                e4.style("opacity", r3.selectedOpacityFn(t4));
              }), r3.selectedColorFn && i2.push(function(e4, t4) {
                c.fill(e4, r3.selectedColorFn(t4));
              }), r3.selectedSizeFn && i2.push(function(e4, n2) {
                var i3 = n2.mx || a2.symbol || 0, o2 = r3.selectedSizeFn(n2);
                e4.attr("d", k(x.symbolNumber(i3), o2, ne(n2, t3), G(n2, t3))), n2.mrc2 = o2;
              }), i2.length && e3.each(function(e4) {
                for (var t4 = n.select(this), r4 = 0; r4 < i2.length; r4++) i2[r4](t4, e4);
              });
            }
          }, x.tryColorscale = function(e3, t3) {
            var r3 = t3 ? a.nestedProperty(e3, t3).get() : e3;
            if (r3) {
              var n2 = r3.color;
              if ((r3.colorscale || r3._colorAx) && a.isArrayOrTypedArray(n2)) return u.makeColorScaleFuncFromTrace(r3);
            }
            return a.identity;
          };
          var C, O, D = { start: 1, end: -1, middle: 0, bottom: 1, top: -1 };
          function P(e3, t3, r3, a2, i2) {
            var o2 = n.select(e3.node().parentNode), l2 = -1 !== t3.indexOf("top") ? "top" : -1 !== t3.indexOf("bottom") ? "bottom" : "middle", s2 = -1 !== t3.indexOf("left") ? "end" : -1 !== t3.indexOf("right") ? "start" : "middle", c2 = a2 ? a2 / 0.8 + 1 : 0, u2 = (d.lineCount(e3) - 1) * p + 1, h2 = D[s2] * c2, v2 = 0.75 * r3 + D[l2] * c2 + (D[l2] - 1) * u2 * r3 / 2;
            e3.attr("text-anchor", s2), i2 || o2.attr("transform", f(h2, v2));
          }
          function z(e3, t3) {
            var r3 = e3.ts || t3.textfont.size;
            return o(r3) && r3 > 0 ? r3 : 0;
          }
          function I(e3, t3, r3) {
            return r3 && (e3 = B(e3)), t3 ? R(e3[1]) : E(e3[0]);
          }
          function E(e3) {
            var t3 = n.round(e3, 2);
            return C = t3, t3;
          }
          function R(e3) {
            var t3 = n.round(e3, 2);
            return O = t3, t3;
          }
          function N(e3, t3, r3, n2) {
            var a2 = e3[0] - t3[0], i2 = e3[1] - t3[1], o2 = r3[0] - t3[0], l2 = r3[1] - t3[1], s2 = Math.pow(a2 * a2 + i2 * i2, 0.25), c2 = Math.pow(o2 * o2 + l2 * l2, 0.25), u2 = (c2 * c2 * a2 - s2 * s2 * o2) * n2, f2 = (c2 * c2 * i2 - s2 * s2 * l2) * n2, d2 = 3 * c2 * (s2 + c2), h2 = 3 * s2 * (s2 + c2);
            return [[E(t3[0] + (d2 && u2 / d2)), R(t3[1] + (d2 && f2 / d2))], [E(t3[0] - (h2 && u2 / h2)), R(t3[1] - (h2 && f2 / h2))]];
          }
          x.textPointStyle = function(e3, t3, r3) {
            if (e3.size()) {
              var i2;
              if (t3.selectedpoints) {
                var o2 = x.makeSelectedTextStyleFns(t3);
                i2 = o2.selectedTextColorFn;
              }
              var l2 = t3.texttemplate, s2 = r3._fullLayout;
              e3.each(function(e4) {
                var o3 = n.select(this), c2 = l2 ? a.extractOption(e4, t3, "txt", "texttemplate") : a.extractOption(e4, t3, "tx", "text");
                if (c2 || 0 === c2) {
                  if (l2) {
                    var u2 = t3._module.formatLabels, f2 = u2 ? u2(e4, t3, s2) : {}, h2 = {};
                    y(h2, t3, e4.i);
                    var p2 = t3._meta || {};
                    c2 = a.texttemplateString(c2, f2, s2._d3locale, h2, e4, p2);
                  }
                  var v2 = e4.tp || t3.textposition, g2 = z(e4, t3), m2 = i2 ? i2(e4) : e4.tc || t3.textfont.color;
                  o3.call(x.font, { family: e4.tf || t3.textfont.family, weight: e4.tw || t3.textfont.weight, style: e4.ty || t3.textfont.style, variant: e4.tv || t3.textfont.variant, textcase: e4.tC || t3.textfont.textcase, lineposition: e4.tE || t3.textfont.lineposition, shadow: e4.tS || t3.textfont.shadow, size: g2, color: m2 }).text(c2).call(d.convertToTspans, r3).call(P, v2, g2, e4.mrc);
                } else o3.remove();
              });
            }
          }, x.selectedTextStyle = function(e3, t3) {
            if (e3.size() && t3.selectedpoints) {
              var r3 = x.makeSelectedTextStyleFns(t3);
              e3.each(function(e4) {
                var a2 = n.select(this), i2 = r3.selectedTextColorFn(e4), o2 = e4.tp || t3.textposition, l2 = z(e4, t3);
                c.fill(a2, i2);
                var u2 = s.traceIs(t3, "bar-like");
                P(a2, o2, l2, e4.mrc2 || e4.mrc, u2);
              });
            }
          }, x.smoothopen = function(e3, t3) {
            if (e3.length < 3) return "M" + e3.join("L");
            var r3, n2 = "M" + e3[0], a2 = [];
            for (r3 = 1; r3 < e3.length - 1; r3++) a2.push(N(e3[r3 - 1], e3[r3], e3[r3 + 1], t3));
            for (n2 += "Q" + a2[0][0] + " " + e3[1], r3 = 2; r3 < e3.length - 1; r3++) n2 += "C" + a2[r3 - 2][1] + " " + a2[r3 - 1][0] + " " + e3[r3];
            return n2 + "Q" + a2[e3.length - 3][1] + " " + e3[e3.length - 1];
          }, x.smoothclosed = function(e3, t3) {
            if (e3.length < 3) return "M" + e3.join("L") + "Z";
            var r3, n2 = "M" + e3[0], a2 = e3.length - 1, i2 = [N(e3[a2], e3[0], e3[1], t3)];
            for (r3 = 1; r3 < a2; r3++) i2.push(N(e3[r3 - 1], e3[r3], e3[r3 + 1], t3));
            for (i2.push(N(e3[a2 - 1], e3[a2], e3[0], t3)), r3 = 1; r3 <= a2; r3++) n2 += "C" + i2[r3 - 1][1] + " " + i2[r3][0] + " " + e3[r3];
            return n2 + "C" + i2[a2][1] + " " + i2[0][0] + " " + e3[0] + "Z";
          };
          var F = { hv: function(e3, t3, r3) {
            return "H" + E(t3[0]) + "V" + I(t3, 1, r3);
          }, vh: function(e3, t3, r3) {
            return "V" + R(t3[1]) + "H" + I(t3, 0, r3);
          }, hvh: function(e3, t3, r3) {
            return "H" + E((e3[0] + t3[0]) / 2) + "V" + R(t3[1]) + "H" + I(t3, 0, r3);
          }, vhv: function(e3, t3, r3) {
            return "V" + R((e3[1] + t3[1]) / 2) + "H" + E(t3[0]) + "V" + I(t3, 1, r3);
          } }, H = function(e3, t3, r3) {
            return "L" + I(t3, 0, r3) + "," + I(t3, 1, r3);
          };
          function B(e3, t3) {
            var r3 = e3.backoff, n2 = e3.trace, i2 = e3.d, o2 = e3.i;
            if (r3 && n2 && n2.marker && n2.marker.angle % 360 == 0 && n2.line && "spline" !== n2.line.shape) {
              var l2 = a.isArrayOrTypedArray(r3), s2 = e3, c2 = t3 ? t3[0] : C || 0, u2 = t3 ? t3[1] : O || 0, f2 = s2[0], d2 = s2[1], h2 = f2 - c2, p2 = d2 - u2, v2 = Math.atan2(p2, h2), g2 = l2 ? r3[o2] : r3;
              if ("auto" === g2) {
                var m2 = s2.i;
                "scatter" === n2.type && m2--;
                var y2 = s2.marker, b2 = y2.symbol;
                a.isArrayOrTypedArray(b2) && (b2 = b2[m2]);
                var _2 = y2.size;
                a.isArrayOrTypedArray(_2) && (_2 = _2[m2]), g2 = y2 ? x.symbolBackOffs[x.symbolNumber(b2)] * _2 : 0, g2 += x.getMarkerStandoff(i2[m2], n2) || 0;
              }
              var w2 = f2 - g2 * Math.cos(v2), T2 = d2 - g2 * Math.sin(v2);
              (w2 <= f2 && w2 >= c2 || w2 >= f2 && w2 <= c2) && (T2 <= d2 && T2 >= u2 || T2 >= d2 && T2 <= u2) && (e3 = [w2, T2]);
            }
            return e3;
          }
          x.steps = function(e3) {
            var t3 = F[e3] || H;
            return function(e4) {
              for (var r3 = "M" + E(e4[0][0]) + "," + R(e4[0][1]), n2 = e4.length, a2 = 1; a2 < n2; a2++) r3 += t3(e4[a2 - 1], e4[a2], a2 === n2 - 1);
              return r3;
            };
          }, x.applyBackoff = B, x.makeTester = function() {
            var e3 = a.ensureSingleById(n.select("body"), "svg", "js-plotly-tester", function(e4) {
              e4.attr(h.svgAttrs).style({ position: "absolute", left: "-10000px", top: "-10000px", width: "9000px", height: "9000px", "z-index": "1" });
            }), t3 = a.ensureSingle(e3, "path", "js-reference-point", function(e4) {
              e4.attr("d", "M0,0H1V1H0Z").style({ "stroke-width": 0, fill: "black" });
            });
            x.tester = e3, x.testref = t3;
          }, x.savedBBoxes = {};
          var j = 0;
          function Y(e3) {
            var t3 = e3.getAttribute("data-unformatted");
            if (null !== t3) return t3 + e3.getAttribute("data-math") + e3.getAttribute("text-anchor") + e3.getAttribute("style");
          }
          function V(e3, t3) {
            if (!e3) return null;
            var r3 = t3._context, n2 = r3._exportedPlot ? "" : r3._baseUrl || "";
            return n2 ? "url('" + n2 + "#" + e3 + "')" : "url(#" + e3 + ")";
          }
          x.bBox = function(e3, t3, r3) {
            var i2, o2, l2;
            if (r3 || (r3 = Y(e3)), r3) {
              if (i2 = x.savedBBoxes[r3]) return a.extendFlat({}, i2);
            } else if (1 === e3.childNodes.length) {
              var s2 = e3.childNodes[0];
              if (r3 = Y(s2)) {
                var c2 = +s2.getAttribute("x") || 0, u2 = +s2.getAttribute("y") || 0, f2 = s2.getAttribute("transform");
                if (!f2) {
                  var h2 = x.bBox(s2, false, r3);
                  return c2 && (h2.left += c2, h2.right += c2), u2 && (h2.top += u2, h2.bottom += u2), h2;
                }
                if (r3 += "~" + c2 + "~" + u2 + "~" + f2, i2 = x.savedBBoxes[r3]) return a.extendFlat({}, i2);
              }
            }
            t3 ? o2 = e3 : (l2 = x.tester.node(), o2 = e3.cloneNode(true), l2.appendChild(o2)), n.select(o2).attr("transform", null).call(d.positionText, 0, 0);
            var p2 = o2.getBoundingClientRect(), v2 = x.testref.node().getBoundingClientRect();
            t3 || l2.removeChild(o2);
            var g2 = { height: p2.height, width: p2.width, left: p2.left - v2.left, top: p2.top - v2.top, right: p2.right - v2.left, bottom: p2.bottom - v2.top };
            return j >= 1e4 && (x.savedBBoxes = {}, j = 0), r3 && (x.savedBBoxes[r3] = g2), j++, a.extendFlat({}, g2);
          }, x.setClipUrl = function(e3, t3, r3) {
            e3.attr("clip-path", V(t3, r3));
          }, x.getTranslate = function(e3) {
            var t3 = (e3[e3.attr ? "attr" : "getAttribute"]("transform") || "").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/, function(e4, t4, r3) {
              return [t4, r3].join(" ");
            }).split(" ");
            return { x: +t3[0] || 0, y: +t3[1] || 0 };
          }, x.setTranslate = function(e3, t3, r3) {
            var n2 = e3.attr ? "attr" : "getAttribute", a2 = e3.attr ? "attr" : "setAttribute", i2 = e3[n2]("transform") || "";
            return t3 = t3 || 0, r3 = r3 || 0, i2 = i2.replace(/(\btranslate\(.*?\);?)/, "").trim(), i2 = (i2 += f(t3, r3)).trim(), e3[a2]("transform", i2), i2;
          }, x.getScale = function(e3) {
            var t3 = (e3[e3.attr ? "attr" : "getAttribute"]("transform") || "").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/, function(e4, t4, r3) {
              return [t4, r3].join(" ");
            }).split(" ");
            return { x: +t3[0] || 1, y: +t3[1] || 1 };
          }, x.setScale = function(e3, t3, r3) {
            var n2 = e3.attr ? "attr" : "getAttribute", a2 = e3.attr ? "attr" : "setAttribute", i2 = e3[n2]("transform") || "";
            return t3 = t3 || 1, r3 = r3 || 1, i2 = i2.replace(/(\bscale\(.*?\);?)/, "").trim(), i2 = (i2 += "scale(" + t3 + "," + r3 + ")").trim(), e3[a2]("transform", i2), i2;
          };
          var U = /\s*sc.*/;
          x.setPointGroupScale = function(e3, t3, r3) {
            if (t3 = t3 || 1, r3 = r3 || 1, e3) {
              var n2 = 1 === t3 && 1 === r3 ? "" : "scale(" + t3 + "," + r3 + ")";
              e3.each(function() {
                var e4 = (this.getAttribute("transform") || "").replace(U, "");
                e4 = (e4 += n2).trim(), this.setAttribute("transform", e4);
              });
            }
          };
          var q = /translate\([^)]*\)\s*$/;
          function G(e3, t3) {
            var r3;
            return e3 && (r3 = e3.mf), void 0 === r3 && (r3 = t3.marker && t3.marker.standoff || 0), t3._geo || t3._xA ? r3 : -r3;
          }
          x.setTextPointsScale = function(e3, t3, r3) {
            e3 && e3.each(function() {
              var e4, a2 = n.select(this), i2 = a2.select("text");
              if (i2.node()) {
                var o2 = parseFloat(i2.attr("x") || 0), l2 = parseFloat(i2.attr("y") || 0), s2 = (a2.attr("transform") || "").match(q);
                e4 = 1 === t3 && 1 === r3 ? [] : [f(o2, l2), "scale(" + t3 + "," + r3 + ")", f(-o2, -l2)], s2 && e4.push(s2), a2.attr("transform", e4.join(""));
              }
            });
          }, x.getMarkerStandoff = G;
          var Z, W, J, X, K, Q, $ = Math.atan2, ee = Math.cos, te = Math.sin;
          function re(e3, t3) {
            var r3 = t3[0], n2 = t3[1];
            return [r3 * ee(e3) - n2 * te(e3), r3 * te(e3) + n2 * ee(e3)];
          }
          function ne(e3, t3) {
            var r3, n2, i2 = e3.ma;
            void 0 === i2 && ((i2 = t3.marker.angle) && !a.isArrayOrTypedArray(i2) || (i2 = 0));
            var l2 = t3.marker.angleref;
            if ("previous" === l2 || "north" === l2) {
              if (t3._geo) {
                var s2 = t3._geo.project(e3.lonlat);
                r3 = s2[0], n2 = s2[1];
              } else {
                var c2 = t3._xA, u2 = t3._yA;
                if (!c2 || !u2) return 90;
                r3 = c2.c2p(e3.x), n2 = u2.c2p(e3.y);
              }
              if (t3._geo) {
                var f2, d2 = e3.lonlat[0], h2 = e3.lonlat[1], p2 = t3._geo.project([d2, h2 + 1e-5]), v2 = t3._geo.project([d2 + 1e-5, h2]), g2 = $(v2[1] - n2, v2[0] - r3), m2 = $(p2[1] - n2, p2[0] - r3);
                if ("north" === l2) f2 = i2 / 180 * Math.PI;
                else if ("previous" === l2) {
                  var y2 = d2 / 180 * Math.PI, x2 = h2 / 180 * Math.PI, b2 = Z / 180 * Math.PI, _2 = W / 180 * Math.PI, w2 = b2 - y2, T2 = ee(_2) * te(w2), M2 = te(_2) * ee(x2) - ee(_2) * te(x2) * ee(w2);
                  f2 = -$(T2, M2) - Math.PI, Z = d2, W = h2;
                }
                var k2 = re(g2, [ee(f2), 0]), A2 = re(m2, [te(f2), 0]);
                i2 = $(k2[1] + A2[1], k2[0] + A2[0]) / Math.PI * 180, "previous" !== l2 || Q === t3.uid && e3.i === K + 1 || (i2 = null);
              }
              if ("previous" === l2 && !t3._geo) if (Q === t3.uid && e3.i === K + 1 && o(r3) && o(n2)) {
                var L2 = r3 - J, S2 = n2 - X, C2 = t3.line && t3.line.shape || "", O2 = C2.slice(C2.length - 1);
                "h" === O2 && (S2 = 0), "v" === O2 && (L2 = 0), i2 += $(S2, L2) / Math.PI * 180 + 90;
              } else i2 = null;
            }
            return J = r3, X = n2, K = e3.i, Q = t3.uid, i2;
          }
          x.getMarkerAngle = ne;
        }, 8882: function(e2, t2, r2) {
          var n, a, i, o, l = r2(6953), s = r2(5568).round, c = "M0,0Z", u = Math.sqrt(2), f = Math.sqrt(3), d = Math.PI, h = Math.cos, p = Math.sin;
          function v(e3) {
            return null === e3;
          }
          function g(e3, t3, r3) {
            if (!(e3 && e3 % 360 != 0 || t3)) return r3;
            if (i === e3 && o === t3 && n === r3) return a;
            function s2(e4, r4) {
              var n2 = h(e4), a2 = p(e4), i2 = r4[0], o2 = r4[1] + (t3 || 0);
              return [i2 * n2 - o2 * a2, i2 * a2 + o2 * n2];
            }
            i = e3, o = t3, n = r3;
            for (var c2 = e3 / 180 * d, u2 = 0, f2 = 0, v2 = l(r3), g2 = "", m = 0; m < v2.length; m++) {
              var y = v2[m], x = y[0], b = u2, _ = f2;
              if ("M" === x || "L" === x) u2 = +y[1], f2 = +y[2];
              else if ("m" === x || "l" === x) u2 += +y[1], f2 += +y[2];
              else if ("H" === x) u2 = +y[1];
              else if ("h" === x) u2 += +y[1];
              else if ("V" === x) f2 = +y[1];
              else if ("v" === x) f2 += +y[1];
              else if ("A" === x) {
                u2 = +y[1], f2 = +y[2];
                var w = s2(c2, [+y[6], +y[7]]);
                y[6] = w[0], y[7] = w[1], y[3] = +y[3] + e3;
              }
              "H" !== x && "V" !== x || (x = "L"), "h" !== x && "v" !== x || (x = "l"), "m" !== x && "l" !== x || (u2 -= b, f2 -= _);
              var T = s2(c2, [u2, f2]);
              "H" !== x && "V" !== x || (x = "L"), "M" !== x && "L" !== x && "m" !== x && "l" !== x || (y[1] = T[0], y[2] = T[1]), y[0] = x, g2 += y[0] + y.slice(1).join(",");
            }
            return a = g2, g2;
          }
          e2.exports = { circle: { n: 0, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2), a2 = "M" + n2 + ",0A" + n2 + "," + n2 + " 0 1,1 0,-" + n2 + "A" + n2 + "," + n2 + " 0 0,1 " + n2 + ",0Z";
            return r3 ? g(t3, r3, a2) : a2;
          } }, square: { n: 1, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "H-" + n2 + "V-" + n2 + "H" + n2 + "Z");
          } }, diamond: { n: 2, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.3 * e3, 2);
            return g(t3, r3, "M" + n2 + ",0L0," + n2 + "L-" + n2 + ",0L0,-" + n2 + "Z");
          } }, cross: { n: 3, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.4 * e3, 2), a2 = s(1.2 * e3, 2);
            return g(t3, r3, "M" + a2 + "," + n2 + "H" + n2 + "V" + a2 + "H-" + n2 + "V" + n2 + "H-" + a2 + "V-" + n2 + "H-" + n2 + "V-" + a2 + "H" + n2 + "V-" + n2 + "H" + a2 + "Z");
          } }, x: { n: 4, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.8 * e3 / u, 2), a2 = "l" + n2 + "," + n2, i2 = "l" + n2 + ",-" + n2, o2 = "l-" + n2 + ",-" + n2, l2 = "l-" + n2 + "," + n2;
            return g(t3, r3, "M0," + n2 + a2 + i2 + o2 + i2 + o2 + l2 + o2 + l2 + a2 + l2 + a2 + "Z");
          } }, "triangle-up": { n: 5, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3 / f, 2);
            return g(t3, r3, "M-" + n2 + "," + s(e3 / 2, 2) + "H" + n2 + "L0,-" + s(e3, 2) + "Z");
          } }, "triangle-down": { n: 6, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3 / f, 2);
            return g(t3, r3, "M-" + n2 + ",-" + s(e3 / 2, 2) + "H" + n2 + "L0," + s(e3, 2) + "Z");
          } }, "triangle-left": { n: 7, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3 / f, 2);
            return g(t3, r3, "M" + s(e3 / 2, 2) + ",-" + n2 + "V" + n2 + "L-" + s(e3, 2) + ",0Z");
          } }, "triangle-right": { n: 8, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3 / f, 2);
            return g(t3, r3, "M-" + s(e3 / 2, 2) + ",-" + n2 + "V" + n2 + "L" + s(e3, 2) + ",0Z");
          } }, "triangle-ne": { n: 9, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.6 * e3, 2), a2 = s(1.2 * e3, 2);
            return g(t3, r3, "M-" + a2 + ",-" + n2 + "H" + n2 + "V" + a2 + "Z");
          } }, "triangle-se": { n: 10, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.6 * e3, 2), a2 = s(1.2 * e3, 2);
            return g(t3, r3, "M" + n2 + ",-" + a2 + "V" + n2 + "H-" + a2 + "Z");
          } }, "triangle-sw": { n: 11, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.6 * e3, 2), a2 = s(1.2 * e3, 2);
            return g(t3, r3, "M" + a2 + "," + n2 + "H-" + n2 + "V-" + a2 + "Z");
          } }, "triangle-nw": { n: 12, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.6 * e3, 2), a2 = s(1.2 * e3, 2);
            return g(t3, r3, "M-" + n2 + "," + a2 + "V-" + n2 + "H" + a2 + "Z");
          } }, pentagon: { n: 13, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.951 * e3, 2), a2 = s(0.588 * e3, 2), i2 = s(-e3, 2), o2 = s(-0.309 * e3, 2);
            return g(t3, r3, "M" + n2 + "," + o2 + "L" + a2 + "," + s(0.809 * e3, 2) + "H-" + a2 + "L-" + n2 + "," + o2 + "L0," + i2 + "Z");
          } }, hexagon: { n: 14, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2), a2 = s(e3 / 2, 2), i2 = s(e3 * f / 2, 2);
            return g(t3, r3, "M" + i2 + ",-" + a2 + "V" + a2 + "L0," + n2 + "L-" + i2 + "," + a2 + "V-" + a2 + "L0,-" + n2 + "Z");
          } }, hexagon2: { n: 15, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2), a2 = s(e3 / 2, 2), i2 = s(e3 * f / 2, 2);
            return g(t3, r3, "M-" + a2 + "," + i2 + "H" + a2 + "L" + n2 + ",0L" + a2 + ",-" + i2 + "H-" + a2 + "L-" + n2 + ",0Z");
          } }, octagon: { n: 16, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.924 * e3, 2), a2 = s(0.383 * e3, 2);
            return g(t3, r3, "M-" + a2 + ",-" + n2 + "H" + a2 + "L" + n2 + ",-" + a2 + "V" + a2 + "L" + a2 + "," + n2 + "H-" + a2 + "L-" + n2 + "," + a2 + "V-" + a2 + "Z");
          } }, star: { n: 17, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = 1.4 * e3, a2 = s(0.225 * n2, 2), i2 = s(0.951 * n2, 2), o2 = s(0.363 * n2, 2), l2 = s(0.588 * n2, 2), u2 = s(-n2, 2), f2 = s(-0.309 * n2, 2), d2 = s(0.118 * n2, 2), h2 = s(0.809 * n2, 2);
            return g(t3, r3, "M" + a2 + "," + f2 + "H" + i2 + "L" + o2 + "," + d2 + "L" + l2 + "," + h2 + "L0," + s(0.382 * n2, 2) + "L-" + l2 + "," + h2 + "L-" + o2 + "," + d2 + "L-" + i2 + "," + f2 + "H-" + a2 + "L0," + u2 + "Z");
          } }, hexagram: { n: 18, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.66 * e3, 2), a2 = s(0.38 * e3, 2), i2 = s(0.76 * e3, 2);
            return g(t3, r3, "M-" + i2 + ",0l-" + a2 + ",-" + n2 + "h" + i2 + "l" + a2 + ",-" + n2 + "l" + a2 + "," + n2 + "h" + i2 + "l-" + a2 + "," + n2 + "l" + a2 + "," + n2 + "h-" + i2 + "l-" + a2 + "," + n2 + "l-" + a2 + ",-" + n2 + "h-" + i2 + "Z");
          } }, "star-triangle-up": { n: 19, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3 * f * 0.8, 2), a2 = s(0.8 * e3, 2), i2 = s(1.6 * e3, 2), o2 = s(4 * e3, 2), l2 = "A " + o2 + "," + o2 + " 0 0 1 ";
            return g(t3, r3, "M-" + n2 + "," + a2 + l2 + n2 + "," + a2 + l2 + "0,-" + i2 + l2 + "-" + n2 + "," + a2 + "Z");
          } }, "star-triangle-down": { n: 20, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3 * f * 0.8, 2), a2 = s(0.8 * e3, 2), i2 = s(1.6 * e3, 2), o2 = s(4 * e3, 2), l2 = "A " + o2 + "," + o2 + " 0 0 1 ";
            return g(t3, r3, "M" + n2 + ",-" + a2 + l2 + "-" + n2 + ",-" + a2 + l2 + "0," + i2 + l2 + n2 + ",-" + a2 + "Z");
          } }, "star-square": { n: 21, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.1 * e3, 2), a2 = s(2 * e3, 2), i2 = "A " + a2 + "," + a2 + " 0 0 1 ";
            return g(t3, r3, "M-" + n2 + ",-" + n2 + i2 + "-" + n2 + "," + n2 + i2 + n2 + "," + n2 + i2 + n2 + ",-" + n2 + i2 + "-" + n2 + ",-" + n2 + "Z");
          } }, "star-diamond": { n: 22, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.4 * e3, 2), a2 = s(1.9 * e3, 2), i2 = "A " + a2 + "," + a2 + " 0 0 1 ";
            return g(t3, r3, "M-" + n2 + ",0" + i2 + "0," + n2 + i2 + n2 + ",0" + i2 + "0,-" + n2 + i2 + "-" + n2 + ",0Z");
          } }, "diamond-tall": { n: 23, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(0.7 * e3, 2), a2 = s(1.4 * e3, 2);
            return g(t3, r3, "M0," + a2 + "L" + n2 + ",0L0,-" + a2 + "L-" + n2 + ",0Z");
          } }, "diamond-wide": { n: 24, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.4 * e3, 2), a2 = s(0.7 * e3, 2);
            return g(t3, r3, "M0," + a2 + "L" + n2 + ",0L0,-" + a2 + "L-" + n2 + ",0Z");
          } }, hourglass: { n: 25, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "H-" + n2 + "L" + n2 + ",-" + n2 + "H-" + n2 + "Z");
          }, noDot: true }, bowtie: { n: 26, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "V-" + n2 + "L-" + n2 + "," + n2 + "V-" + n2 + "Z");
          }, noDot: true }, "circle-cross": { n: 27, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M0," + n2 + "V-" + n2 + "M" + n2 + ",0H-" + n2 + "M" + n2 + ",0A" + n2 + "," + n2 + " 0 1,1 0,-" + n2 + "A" + n2 + "," + n2 + " 0 0,1 " + n2 + ",0Z");
          }, needLine: true, noDot: true }, "circle-x": { n: 28, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2), a2 = s(e3 / u, 2);
            return g(t3, r3, "M" + a2 + "," + a2 + "L-" + a2 + ",-" + a2 + "M" + a2 + ",-" + a2 + "L-" + a2 + "," + a2 + "M" + n2 + ",0A" + n2 + "," + n2 + " 0 1,1 0,-" + n2 + "A" + n2 + "," + n2 + " 0 0,1 " + n2 + ",0Z");
          }, needLine: true, noDot: true }, "square-cross": { n: 29, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M0," + n2 + "V-" + n2 + "M" + n2 + ",0H-" + n2 + "M" + n2 + "," + n2 + "H-" + n2 + "V-" + n2 + "H" + n2 + "Z");
          }, needLine: true, noDot: true }, "square-x": { n: 30, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "L-" + n2 + ",-" + n2 + "M" + n2 + ",-" + n2 + "L-" + n2 + "," + n2 + "M" + n2 + "," + n2 + "H-" + n2 + "V-" + n2 + "H" + n2 + "Z");
          }, needLine: true, noDot: true }, "diamond-cross": { n: 31, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.3 * e3, 2);
            return g(t3, r3, "M" + n2 + ",0L0," + n2 + "L-" + n2 + ",0L0,-" + n2 + "ZM0,-" + n2 + "V" + n2 + "M-" + n2 + ",0H" + n2);
          }, needLine: true, noDot: true }, "diamond-x": { n: 32, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.3 * e3, 2), a2 = s(0.65 * e3, 2);
            return g(t3, r3, "M" + n2 + ",0L0," + n2 + "L-" + n2 + ",0L0,-" + n2 + "ZM-" + a2 + ",-" + a2 + "L" + a2 + "," + a2 + "M-" + a2 + "," + a2 + "L" + a2 + ",-" + a2);
          }, needLine: true, noDot: true }, "cross-thin": { n: 33, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.4 * e3, 2);
            return g(t3, r3, "M0," + n2 + "V-" + n2 + "M" + n2 + ",0H-" + n2);
          }, needLine: true, noDot: true, noFill: true }, "x-thin": { n: 34, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "L-" + n2 + ",-" + n2 + "M" + n2 + ",-" + n2 + "L-" + n2 + "," + n2);
          }, needLine: true, noDot: true, noFill: true }, asterisk: { n: 35, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.2 * e3, 2), a2 = s(0.85 * e3, 2);
            return g(t3, r3, "M0," + n2 + "V-" + n2 + "M" + n2 + ",0H-" + n2 + "M" + a2 + "," + a2 + "L-" + a2 + ",-" + a2 + "M" + a2 + ",-" + a2 + "L-" + a2 + "," + a2);
          }, needLine: true, noDot: true, noFill: true }, hash: { n: 36, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3 / 2, 2), a2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + a2 + "V-" + a2 + "M" + (n2 - a2) + ",-" + a2 + "V" + a2 + "M" + a2 + "," + n2 + "H-" + a2 + "M-" + a2 + "," + (n2 - a2) + "H" + a2);
          }, needLine: true, noFill: true }, "y-up": { n: 37, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.2 * e3, 2), a2 = s(1.6 * e3, 2), i2 = s(0.8 * e3, 2);
            return g(t3, r3, "M-" + n2 + "," + i2 + "L0,0M" + n2 + "," + i2 + "L0,0M0,-" + a2 + "L0,0");
          }, needLine: true, noDot: true, noFill: true }, "y-down": { n: 38, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.2 * e3, 2), a2 = s(1.6 * e3, 2), i2 = s(0.8 * e3, 2);
            return g(t3, r3, "M-" + n2 + ",-" + i2 + "L0,0M" + n2 + ",-" + i2 + "L0,0M0," + a2 + "L0,0");
          }, needLine: true, noDot: true, noFill: true }, "y-left": { n: 39, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.2 * e3, 2), a2 = s(1.6 * e3, 2), i2 = s(0.8 * e3, 2);
            return g(t3, r3, "M" + i2 + "," + n2 + "L0,0M" + i2 + ",-" + n2 + "L0,0M-" + a2 + ",0L0,0");
          }, needLine: true, noDot: true, noFill: true }, "y-right": { n: 40, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.2 * e3, 2), a2 = s(1.6 * e3, 2), i2 = s(0.8 * e3, 2);
            return g(t3, r3, "M-" + i2 + "," + n2 + "L0,0M-" + i2 + ",-" + n2 + "L0,0M" + a2 + ",0L0,0");
          }, needLine: true, noDot: true, noFill: true }, "line-ew": { n: 41, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.4 * e3, 2);
            return g(t3, r3, "M" + n2 + ",0H-" + n2);
          }, needLine: true, noDot: true, noFill: true }, "line-ns": { n: 42, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(1.4 * e3, 2);
            return g(t3, r3, "M0," + n2 + "V-" + n2);
          }, needLine: true, noDot: true, noFill: true }, "line-ne": { n: 43, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + ",-" + n2 + "L-" + n2 + "," + n2);
          }, needLine: true, noDot: true, noFill: true }, "line-nw": { n: 44, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M" + n2 + "," + n2 + "L-" + n2 + ",-" + n2);
          }, needLine: true, noDot: true, noFill: true }, "arrow-up": { n: 45, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M0,0L-" + n2 + "," + s(2 * e3, 2) + "H" + n2 + "Z");
          }, backoff: 1, noDot: true }, "arrow-down": { n: 46, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M0,0L-" + n2 + ",-" + s(2 * e3, 2) + "H" + n2 + "Z");
          }, noDot: true }, "arrow-left": { n: 47, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3, 2), a2 = s(e3, 2);
            return g(t3, r3, "M0,0L" + n2 + ",-" + a2 + "V" + a2 + "Z");
          }, noDot: true }, "arrow-right": { n: 48, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3, 2), a2 = s(e3, 2);
            return g(t3, r3, "M0,0L-" + n2 + ",-" + a2 + "V" + a2 + "Z");
          }, noDot: true }, "arrow-bar-up": { n: 49, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M-" + n2 + ",0H" + n2 + "M0,0L-" + n2 + "," + s(2 * e3, 2) + "H" + n2 + "Z");
          }, backoff: 1, needLine: true, noDot: true }, "arrow-bar-down": { n: 50, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(e3, 2);
            return g(t3, r3, "M-" + n2 + ",0H" + n2 + "M0,0L-" + n2 + ",-" + s(2 * e3, 2) + "H" + n2 + "Z");
          }, needLine: true, noDot: true }, "arrow-bar-left": { n: 51, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3, 2), a2 = s(e3, 2);
            return g(t3, r3, "M0,-" + a2 + "V" + a2 + "M0,0L" + n2 + ",-" + a2 + "V" + a2 + "Z");
          }, needLine: true, noDot: true }, "arrow-bar-right": { n: 52, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = s(2 * e3, 2), a2 = s(e3, 2);
            return g(t3, r3, "M0,-" + a2 + "V" + a2 + "M0,0L-" + n2 + ",-" + a2 + "V" + a2 + "Z");
          }, needLine: true, noDot: true }, arrow: { n: 53, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = d / 2.5, a2 = 2 * e3 * h(n2), i2 = 2 * e3 * p(n2);
            return g(t3, r3, "M0,0L" + -a2 + "," + i2 + "L" + a2 + "," + i2 + "Z");
          }, backoff: 0.9, noDot: true }, "arrow-wide": { n: 54, f: function(e3, t3, r3) {
            if (v(t3)) return c;
            var n2 = d / 4, a2 = 2 * e3 * h(n2), i2 = 2 * e3 * p(n2);
            return g(t3, r3, "M0,0L" + -a2 + "," + i2 + "A " + 2 * e3 + "," + 2 * e3 + " 0 0 1 " + a2 + "," + i2 + "Z");
          }, backoff: 0.4, noDot: true } };
        }, 3187: function(e2) {
          e2.exports = { visible: { valType: "boolean", editType: "calc" }, type: { valType: "enumerated", values: ["percent", "constant", "sqrt", "data"], editType: "calc" }, symmetric: { valType: "boolean", editType: "calc" }, array: { valType: "data_array", editType: "calc" }, arrayminus: { valType: "data_array", editType: "calc" }, value: { valType: "number", min: 0, dflt: 10, editType: "calc" }, valueminus: { valType: "number", min: 0, dflt: 10, editType: "calc" }, traceref: { valType: "integer", min: 0, dflt: 0, editType: "style" }, tracerefminus: { valType: "integer", min: 0, dflt: 0, editType: "style" }, copy_ystyle: { valType: "boolean", editType: "plot" }, copy_zstyle: { valType: "boolean", editType: "style" }, color: { valType: "color", editType: "style" }, thickness: { valType: "number", min: 0, dflt: 2, editType: "style" }, width: { valType: "number", min: 0, editType: "plot" }, editType: "calc", _deprecated: { opacity: { valType: "number", editType: "style" } } };
        }, 352: function(e2, t2, r2) {
          var n = r2(721), a = r2(3626), i = r2(9714), o = r2(4809), l = r2(5589);
          function s(e3, t3, r3, a2) {
            var s2 = t3["error_" + a2] || {}, c = [];
            if (s2.visible && -1 !== ["linear", "log"].indexOf(r3.type)) {
              for (var u = l(s2), f = 0; f < e3.length; f++) {
                var d = e3[f], h = d.i;
                if (void 0 === h) h = f;
                else if (null === h) continue;
                var p = d[a2];
                if (n(r3.c2l(p))) {
                  var v = u(p, h);
                  if (n(v[0]) && n(v[1])) {
                    var g = d[a2 + "s"] = p - v[0], m = d[a2 + "h"] = p + v[1];
                    c.push(g, m);
                  }
                }
              }
              var y = r3._id, x = t3._extremes[y], b = i.findExtremes(r3, c, o.extendFlat({ tozero: x.opts.tozero }, { padded: true }));
              x.min = x.min.concat(b.min), x.max = x.max.concat(b.max);
            }
          }
          e2.exports = function(e3) {
            for (var t3 = e3.calcdata, r3 = 0; r3 < t3.length; r3++) {
              var n2 = t3[r3], o2 = n2[0].trace;
              if (true === o2.visible && a.traceIs(o2, "errorBarsOK")) {
                var l2 = i.getFromId(e3, o2.xaxis), c = i.getFromId(e3, o2.yaxis);
                s(n2, o2, l2, "x"), s(n2, o2, c, "y");
              }
            }
          };
        }, 5589: function(e2) {
          function t2(e3, t3) {
            return "percent" === e3 ? function(e4) {
              return Math.abs(e4 * t3 / 100);
            } : "constant" === e3 ? function() {
              return Math.abs(t3);
            } : "sqrt" === e3 ? function(e4) {
              return Math.sqrt(Math.abs(e4));
            } : void 0;
          }
          e2.exports = function(e3) {
            var r2 = e3.type, n = e3.symmetric;
            if ("data" === r2) {
              var a = e3.array || [];
              if (n) return function(e4, t3) {
                var r3 = +a[t3];
                return [r3, r3];
              };
              var i = e3.arrayminus || [];
              return function(e4, t3) {
                var r3 = +a[t3], n2 = +i[t3];
                return isNaN(r3) && isNaN(n2) ? [NaN, NaN] : [n2 || 0, r3 || 0];
              };
            }
            var o = t2(r2, e3.value), l = t2(r2, e3.valueminus);
            return n || void 0 === e3.valueminus ? function(e4) {
              var t3 = o(e4);
              return [t3, t3];
            } : function(e4) {
              return [l(e4), o(e4)];
            };
          };
        }, 5543: function(e2, t2, r2) {
          var n = r2(721), a = r2(3626), i = r2(4809), o = r2(8032), l = r2(3187);
          e2.exports = function(e3, t3, r3, s) {
            var c = "error_" + s.axis, u = o.newContainer(t3, c), f = e3[c] || {};
            function d(e4, t4) {
              return i.coerce(f, u, l, e4, t4);
            }
            if (false !== d("visible", void 0 !== f.array || void 0 !== f.value || "sqrt" === f.type)) {
              var h = d("type", "array" in f ? "data" : "percent"), p = true;
              "sqrt" !== h && (p = d("symmetric", !(("data" === h ? "arrayminus" : "valueminus") in f))), "data" === h ? (d("array"), d("traceref"), p || (d("arrayminus"), d("tracerefminus"))) : "percent" !== h && "constant" !== h || (d("value"), p || d("valueminus"));
              var v = "copy_" + s.inherit + "style";
              s.inherit && (t3["error_" + s.inherit] || {}).visible && d(v, !(f.color || n(f.thickness) || n(f.width))), s.inherit && u[v] || (d("color", r3), d("thickness"), d("width", a.traceIs(t3, "gl3d") ? 0 : 4));
            }
          };
        }, 7901: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3582).overrideAll, i = r2(3187), o = { error_x: n.extendFlat({}, i), error_y: n.extendFlat({}, i) };
          delete o.error_x.copy_zstyle, delete o.error_y.copy_zstyle, delete o.error_y.copy_ystyle;
          var l = { error_x: n.extendFlat({}, i), error_y: n.extendFlat({}, i), error_z: n.extendFlat({}, i) };
          delete l.error_x.copy_ystyle, delete l.error_y.copy_ystyle, delete l.error_z.copy_ystyle, delete l.error_z.copy_zstyle, e2.exports = { moduleType: "component", name: "errorbars", schema: { traces: { scatter: o, bar: o, histogram: o, scatter3d: a(l, "calc", "nested"), scattergl: a(o, "calc", "nested") } }, supplyDefaults: r2(5543), calc: r2(352), makeComputeError: r2(5589), plot: r2(2130), style: r2(2800), hoverInfo: function(e3, t3, r3) {
            (t3.error_y || {}).visible && (r3.yerr = e3.yh - e3.y, t3.error_y.symmetric || (r3.yerrneg = e3.y - e3.ys)), (t3.error_x || {}).visible && (r3.xerr = e3.xh - e3.x, t3.error_x.symmetric || (r3.xerrneg = e3.x - e3.xs));
          } };
        }, 2130: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(2203), o = r2(4726);
          e2.exports = function(e3, t3, r3, l) {
            var s = r3.xaxis, c = r3.yaxis, u = l && l.duration > 0, f = e3._context.staticPlot;
            t3.each(function(t4) {
              var d, h = t4[0].trace, p = h.error_x || {}, v = h.error_y || {};
              h.ids && (d = function(e4) {
                return e4.id;
              });
              var g = o.hasMarkers(h) && h.marker.maxdisplayed > 0;
              v.visible || p.visible || (t4 = []);
              var m = n.select(this).selectAll("g.errorbar").data(t4, d);
              if (m.exit().remove(), t4.length) {
                p.visible || m.selectAll("path.xerror").remove(), v.visible || m.selectAll("path.yerror").remove(), m.style("opacity", 1);
                var y = m.enter().append("g").classed("errorbar", true);
                u && y.style("opacity", 0).transition().duration(l.duration).style("opacity", 1), i.setClipUrl(m, r3.layerClipId, e3), m.each(function(e4) {
                  var t5 = n.select(this), r4 = function(e5, t6, r5) {
                    var n2 = { x: t6.c2p(e5.x), y: r5.c2p(e5.y) };
                    return void 0 !== e5.yh && (n2.yh = r5.c2p(e5.yh), n2.ys = r5.c2p(e5.ys), a(n2.ys) || (n2.noYS = true, n2.ys = r5.c2p(e5.ys, true))), void 0 !== e5.xh && (n2.xh = t6.c2p(e5.xh), n2.xs = t6.c2p(e5.xs), a(n2.xs) || (n2.noXS = true, n2.xs = t6.c2p(e5.xs, true))), n2;
                  }(e4, s, c);
                  if (!g || e4.vis) {
                    var i2, o2 = t5.select("path.yerror");
                    if (v.visible && a(r4.x) && a(r4.yh) && a(r4.ys)) {
                      var d2 = v.width;
                      i2 = "M" + (r4.x - d2) + "," + r4.yh + "h" + 2 * d2 + "m-" + d2 + ",0V" + r4.ys, r4.noYS || (i2 += "m-" + d2 + ",0h" + 2 * d2), o2.size() ? u && (o2 = o2.transition().duration(l.duration).ease(l.easing)) : o2 = t5.append("path").style("vector-effect", f ? "none" : "non-scaling-stroke").classed("yerror", true), o2.attr("d", i2);
                    } else o2.remove();
                    var h2 = t5.select("path.xerror");
                    if (p.visible && a(r4.y) && a(r4.xh) && a(r4.xs)) {
                      var m2 = (p.copy_ystyle ? v : p).width;
                      i2 = "M" + r4.xh + "," + (r4.y - m2) + "v" + 2 * m2 + "m0,-" + m2 + "H" + r4.xs, r4.noXS || (i2 += "m0,-" + m2 + "v" + 2 * m2), h2.size() ? u && (h2 = h2.transition().duration(l.duration).ease(l.easing)) : h2 = t5.append("path").style("vector-effect", f ? "none" : "non-scaling-stroke").classed("xerror", true), h2.attr("d", i2);
                    } else h2.remove();
                  }
                });
              }
            });
          };
        }, 2800: function(e2, t2, r2) {
          var n = r2(5568), a = r2(8766);
          e2.exports = function(e3) {
            e3.each(function(e4) {
              var t3 = e4[0].trace, r3 = t3.error_y || {}, i = t3.error_x || {}, o = n.select(this);
              o.selectAll("path.yerror").style("stroke-width", r3.thickness + "px").call(a.stroke, r3.color), i.copy_ystyle && (i = r3), o.selectAll("path.xerror").style("stroke-width", i.thickness + "px").call(a.stroke, i.color);
            });
          };
        }, 192: function(e2, t2, r2) {
          var n = r2(337), a = r2(6811).hoverlabel, i = r2(3049).extendFlat;
          e2.exports = { hoverlabel: { bgcolor: i({}, a.bgcolor, { arrayOk: true }), bordercolor: i({}, a.bordercolor, { arrayOk: true }), font: n({ arrayOk: true, editType: "none" }), align: i({}, a.align, { arrayOk: true }), namelength: i({}, a.namelength, { arrayOk: true }), editType: "none" } };
        }, 3552: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3626);
          function i(e3, t3, r3, a2) {
            a2 = a2 || n.identity, Array.isArray(e3) && (t3[0][r3] = a2(e3));
          }
          e2.exports = function(e3) {
            var t3 = e3.calcdata, r3 = e3._fullLayout;
            function o(e4) {
              return function(t4) {
                return n.coerceHoverinfo({ hoverinfo: t4 }, { _module: e4._module }, r3);
              };
            }
            for (var l = 0; l < t3.length; l++) {
              var s = t3[l], c = s[0].trace;
              if (!a.traceIs(c, "pie-like")) {
                var u = a.traceIs(c, "2dMap") ? i : n.fillArray;
                u(c.hoverinfo, s, "hi", o(c)), c.hovertemplate && u(c.hovertemplate, s, "ht"), c.hoverlabel && (u(c.hoverlabel.bgcolor, s, "hbg"), u(c.hoverlabel.bordercolor, s, "hbc"), u(c.hoverlabel.font.size, s, "hts"), u(c.hoverlabel.font.color, s, "htc"), u(c.hoverlabel.font.family, s, "htf"), u(c.hoverlabel.font.weight, s, "htw"), u(c.hoverlabel.font.style, s, "hty"), u(c.hoverlabel.font.variant, s, "htv"), u(c.hoverlabel.namelength, s, "hnl"), u(c.hoverlabel.align, s, "hta"));
              }
            }
          };
        }, 4225: function(e2, t2, r2) {
          var n = r2(3626), a = r2(8103).hover;
          e2.exports = function(e3, t3, r3) {
            var i = n.getComponentMethod("annotations", "onClick")(e3, e3._hoverdata);
            function o() {
              e3.emit("plotly_click", { points: e3._hoverdata, event: t3 });
            }
            void 0 !== r3 && a(e3, t3, r3, true), e3._hoverdata && t3 && t3.target && (i && i.then ? i.then(o) : o(), t3.stopImmediatePropagation && t3.stopImmediatePropagation());
          };
        }, 5988: function(e2) {
          e2.exports = { YANGLE: 60, HOVERARROWSIZE: 6, HOVERTEXTPAD: 3, HOVERFONTSIZE: 13, HOVERFONT: "Arial, sans-serif", HOVERMINTIME: 50, HOVERID: "-hover" };
        }, 3239: function(e2, t2, r2) {
          var n = r2(4809), a = r2(192), i = r2(6430);
          e2.exports = function(e3, t3, r3, o) {
            var l = n.extendFlat({}, o.hoverlabel);
            t3.hovertemplate && (l.namelength = -1), i(e3, t3, function(r4, i2) {
              return n.coerce(e3, t3, a, r4, i2);
            }, l);
          };
        }, 6040: function(e2, t2, r2) {
          var n = r2(4809);
          t2.getSubplot = function(e3) {
            return e3.subplot || e3.xaxis + e3.yaxis || e3.geo;
          }, t2.isTraceInSubplots = function(e3, r3) {
            if ("splom" === e3.type) {
              for (var n2 = e3.xaxes || [], a2 = e3.yaxes || [], i2 = 0; i2 < n2.length; i2++) for (var o2 = 0; o2 < a2.length; o2++) if (-1 !== r3.indexOf(n2[i2] + a2[o2])) return true;
              return false;
            }
            return -1 !== r3.indexOf(t2.getSubplot(e3));
          }, t2.flat = function(e3, t3) {
            for (var r3 = new Array(e3.length), n2 = 0; n2 < e3.length; n2++) r3[n2] = t3;
            return r3;
          }, t2.p2c = function(e3, t3) {
            for (var r3 = new Array(e3.length), n2 = 0; n2 < e3.length; n2++) r3[n2] = e3[n2].p2c(t3);
            return r3;
          }, t2.getDistanceFunction = function(e3, r3, n2, a2) {
            return "closest" === e3 ? a2 || t2.quadrature(r3, n2) : "x" === e3.charAt(0) ? r3 : n2;
          }, t2.getClosest = function(e3, t3, r3) {
            if (false !== r3.index) r3.index >= 0 && r3.index < e3.length ? r3.distance = 0 : r3.index = false;
            else for (var n2 = 0; n2 < e3.length; n2++) {
              var a2 = t3(e3[n2]);
              a2 <= r3.distance && (r3.index = n2, r3.distance = a2);
            }
            return r3;
          }, t2.inbox = function(e3, t3, r3) {
            return e3 * t3 < 0 || 0 === e3 ? r3 : 1 / 0;
          }, t2.quadrature = function(e3, t3) {
            return function(r3) {
              var n2 = e3(r3), a2 = t3(r3);
              return Math.sqrt(n2 * n2 + a2 * a2);
            };
          }, t2.makeEventData = function(e3, r3, n2) {
            var a2 = "index" in e3 ? e3.index : e3.pointNumber, i2 = { data: r3._input, fullData: r3, curveNumber: r3.index, pointNumber: a2 };
            if (r3._indexToPoints) {
              var o2 = r3._indexToPoints[a2];
              1 === o2.length ? i2.pointIndex = o2[0] : i2.pointIndices = o2;
            } else i2.pointIndex = a2;
            return r3._module.eventData ? i2 = r3._module.eventData(i2, e3, r3, n2, a2) : ("xVal" in e3 ? i2.x = e3.xVal : "x" in e3 && (i2.x = e3.x), "yVal" in e3 ? i2.y = e3.yVal : "y" in e3 && (i2.y = e3.y), e3.xa && (i2.xaxis = e3.xa), e3.ya && (i2.yaxis = e3.ya), void 0 !== e3.zLabelVal && (i2.z = e3.zLabelVal)), t2.appendArrayPointValue(i2, r3, a2), i2;
          }, t2.appendArrayPointValue = function(e3, t3, r3) {
            var a2 = t3._arrayAttrs;
            if (a2) for (var l2 = 0; l2 < a2.length; l2++) {
              var s2 = a2[l2], c = i(s2);
              if (void 0 === e3[c]) {
                var u = o(n.nestedProperty(t3, s2).get(), r3);
                void 0 !== u && (e3[c] = u);
              }
            }
          }, t2.appendArrayMultiPointValues = function(e3, t3, r3) {
            var a2 = t3._arrayAttrs;
            if (a2) for (var l2 = 0; l2 < a2.length; l2++) {
              var s2 = a2[l2], c = i(s2);
              if (void 0 === e3[c]) {
                for (var u = n.nestedProperty(t3, s2).get(), f = new Array(r3.length), d = 0; d < r3.length; d++) f[d] = o(u, r3[d]);
                e3[c] = f;
              }
            }
          };
          var a = { ids: "id", locations: "location", labels: "label", values: "value", "marker.colors": "color", parents: "parent" };
          function i(e3) {
            return a[e3] || e3;
          }
          function o(e3, t3) {
            return Array.isArray(t3) ? Array.isArray(e3) && Array.isArray(e3[t3[0]]) ? e3[t3[0]][t3[1]] : void 0 : e3[t3];
          }
          var l = { x: true, y: true }, s = { "x unified": true, "y unified": true };
          t2.isUnifiedHover = function(e3) {
            return "string" == typeof e3 && !!s[e3];
          }, t2.isXYhover = function(e3) {
            return "string" == typeof e3 && !!l[e3];
          };
        }, 8103: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(5657), o = r2(4809), l = o.pushUnique, s = o.strTranslate, c = o.strRotate, u = r2(8596), f = r2(635), d = r2(3134), h = r2(2203), p = r2(8766), v = r2(4751), g = r2(9714), m = r2(4826).zindexSeparator, y = r2(3626), x = r2(6040), b = r2(5988), _ = r2(3970), w = r2(6134), T = b.YANGLE, M = Math.PI * T / 180, k = 1 / Math.sin(M), A = Math.cos(M), L = Math.sin(M), S = b.HOVERARROWSIZE, C = b.HOVERTEXTPAD, O = { box: true, ohlc: true, violin: true, candlestick: true }, D = { scatter: true, scattergl: true, splom: true };
          function P(e3, t3) {
            return e3.distance - t3.distance;
          }
          function z(e3) {
            return [e3.trace.index, e3.index, e3.x0, e3.y0, e3.name, e3.attr, e3.xa ? e3.xa._id : "", e3.ya ? e3.ya._id : ""].join(",");
          }
          t2.hover = function(e3, t3, r3, i2) {
            e3 = o.getGraphDiv(e3);
            var s2 = t3.target;
            o.throttle(e3._fullLayout._uid + b.HOVERID, b.HOVERMINTIME, function() {
              !function(e4, t4, r4, i3, s3) {
                r4 || (r4 = "xy"), "string" == typeof r4 && (r4 = r4.split(m)[0]);
                var c2, f2, h2, b2 = Array.isArray(r4) ? r4 : [r4], _2 = e4._fullLayout, w2 = _2.hoversubplots, T2 = _2._plots || [], M2 = T2[r4], A2 = _2._has("cartesian"), L2 = t4.hovermode || _2.hovermode, C2 = "x" === (L2 || "").charAt(0), I2 = "y" === (L2 || "").charAt(0);
                if (A2 && (C2 || I2) && "axis" === w2) {
                  for (var R2 = b2.length, Y2 = 0; Y2 < R2; Y2++) if (T2[c2 = b2[Y2]]) {
                    f2 = g.getFromId(e4, c2, "x"), h2 = g.getFromId(e4, c2, "y");
                    var G2 = (C2 ? f2 : h2)._subplotsWith;
                    if (G2 && G2.length) for (var Z = 0; Z < G2.length; Z++) l(b2, G2[Z]);
                  }
                }
                if (M2 && "single" !== w2) {
                  var W = M2.overlays.map(function(e5) {
                    return e5.id;
                  });
                  b2 = b2.concat(W);
                }
                for (var J = b2.length, X = new Array(J), K = new Array(J), Q = false, $ = 0; $ < J; $++) if (T2[c2 = b2[$]]) Q = true, X[$] = T2[c2].xaxis, K[$] = T2[c2].yaxis;
                else {
                  if (!_2[c2] || !_2[c2]._subplot) return void o.warn("Unrecognized subplot: " + c2);
                  var ee = _2[c2]._subplot;
                  X[$] = ee.xaxis, K[$] = ee.yaxis;
                }
                if (L2 && !Q && (L2 = "closest"), -1 === ["x", "y", "closest", "x unified", "y unified"].indexOf(L2) || !e4.calcdata || e4.querySelector(".zoombox") || e4._dragging) return v.unhoverRaw(e4, t4);
                var te = _2.hoverdistance;
                -1 === te && (te = 1 / 0);
                var re = _2.spikedistance;
                -1 === re && (re = 1 / 0);
                var ne, ae, ie, oe, le, se, ce, ue, fe, de, he, pe, ve, ge = [], me = [], ye = { hLinePoint: null, vLinePoint: null }, xe = false;
                if (Array.isArray(t4)) for (L2 = "array", ie = 0; ie < t4.length; ie++) (le = e4.calcdata[t4[ie].curveNumber || 0]) && (se = le[0].trace, "skip" !== le[0].trace.hoverinfo && (me.push(le), "h" === se.orientation && (xe = true)));
                else {
                  var be, _e, we = e4.calcdata.slice();
                  for (we.sort(function(e5, t5) {
                    return (e5[0].trace.zorder || 0) - (t5[0].trace.zorder || 0);
                  }), oe = 0; oe < we.length; oe++) le = we[oe], "skip" !== (se = le[0].trace).hoverinfo && x.isTraceInSubplots(se, b2) && (me.push(le), "h" === se.orientation && (xe = true));
                  if (s3) {
                    if (false === u.triggerHandler(e4, "plotly_beforehover", t4)) return;
                    var Te = s3.getBoundingClientRect();
                    be = t4.clientX - Te.left, _e = t4.clientY - Te.top, _2._calcInverseTransform(e4);
                    var Me = o.apply3DTransform(_2._invTransform)(be, _e);
                    if (be = Me[0], _e = Me[1], be < 0 || be > X[0]._length || _e < 0 || _e > K[0]._length) return v.unhoverRaw(e4, t4);
                  } else be = "xpx" in t4 ? t4.xpx : X[0]._length / 2, _e = "ypx" in t4 ? t4.ypx : K[0]._length / 2;
                  if (t4.pointerX = be + X[0]._offset, t4.pointerY = _e + K[0]._offset, ne = "xval" in t4 ? x.flat(b2, t4.xval) : x.p2c(X, be), ae = "yval" in t4 ? x.flat(b2, t4.yval) : x.p2c(K, _e), !a(ne[0]) || !a(ae[0])) return o.warn("Fx.hover failed", t4, e4), v.unhoverRaw(e4, t4);
                }
                var ke = 1 / 0;
                function Ae(r5, n2) {
                  for (oe = 0; oe < me.length; oe++) if ((le = me[oe]) && le[0] && le[0].trace && true === (se = le[0].trace).visible && 0 !== se._length && -1 === ["carpet", "contourcarpet"].indexOf(se._module.name)) {
                    if (fe = L2, x.isUnifiedHover(fe) && (fe = fe.charAt(0)), "splom" === se.type ? ce = b2[ue = 0] : (ce = x.getSubplot(se), ue = b2.indexOf(ce)), pe = { cd: le, trace: se, xa: X[ue], ya: K[ue], maxHoverDistance: te, maxSpikeDistance: re, index: false, distance: Math.min(ke, te), spikeDistance: 1 / 0, xSpike: void 0, ySpike: void 0, color: p.defaultLine, name: se.name, x0: void 0, x1: void 0, y0: void 0, y1: void 0, xLabelVal: void 0, yLabelVal: void 0, zLabelVal: void 0, text: void 0 }, _2[ce] && (pe.subplot = _2[ce]._subplot), _2._splomScenes && _2._splomScenes[se.uid] && (pe.scene = _2._splomScenes[se.uid]), "array" === fe) {
                      var i4 = t4[oe];
                      "pointNumber" in i4 ? (pe.index = i4.pointNumber, fe = "closest") : (fe = "", "xval" in i4 && (de = i4.xval, fe = "x"), "yval" in i4 && (he = i4.yval, fe = fe ? "closest" : "y"));
                    } else void 0 !== r5 && void 0 !== n2 ? (de = r5, he = n2) : (de = ne[ue], he = ae[ue]);
                    if (ve = ge.length, 0 !== te) if (se._module && se._module.hoverPoints) {
                      var l2 = se._module.hoverPoints(pe, de, he, fe, { finiteRange: true, hoverLayer: _2._hoverlayer, hoversubplots: w2, gd: e4 });
                      if (l2) for (var s4, c3 = 0; c3 < l2.length; c3++) s4 = l2[c3], a(s4.x0) && a(s4.y0) && ge.push(H(s4, L2));
                    } else o.log("Unrecognized trace type in hover:", se);
                    if ("closest" === L2 && ge.length > ve && (ge.splice(0, ve), ke = ge[0].distance), A2 && 0 !== re && 0 === ge.length) {
                      pe.distance = re, pe.index = false;
                      var u2 = se._module.hoverPoints(pe, de, he, "closest", { hoverLayer: _2._hoverlayer });
                      if (u2 && (u2 = u2.filter(function(e5) {
                        return e5.spikeDistance <= re;
                      })), u2 && u2.length) {
                        var f3, d2 = u2.filter(function(e5) {
                          return e5.xa.showspikes && "hovered data" !== e5.xa.spikesnap;
                        });
                        if (d2.length) {
                          var h3 = d2[0];
                          a(h3.x0) && a(h3.y0) && (f3 = Se(h3), (!ye.vLinePoint || ye.vLinePoint.spikeDistance > f3.spikeDistance) && (ye.vLinePoint = f3));
                        }
                        var v2 = u2.filter(function(e5) {
                          return e5.ya.showspikes && "hovered data" !== e5.ya.spikesnap;
                        });
                        if (v2.length) {
                          var g2 = v2[0];
                          a(g2.x0) && a(g2.y0) && (f3 = Se(g2), (!ye.hLinePoint || ye.hLinePoint.spikeDistance > f3.spikeDistance) && (ye.hLinePoint = f3));
                        }
                      }
                    }
                  }
                }
                function Le(e5, t5, r5) {
                  for (var n2, a2 = null, i4 = 1 / 0, o2 = 0; o2 < e5.length; o2++) f2 && f2._id !== e5[o2].xa._id || h2 && h2._id !== e5[o2].ya._id || (n2 = e5[o2].spikeDistance, r5 && 0 === o2 && (n2 = -1 / 0), n2 <= i4 && n2 <= t5 && (a2 = e5[o2], i4 = n2));
                  return a2;
                }
                function Se(e5) {
                  return e5 ? { xa: e5.xa, ya: e5.ya, x: void 0 !== e5.xSpike ? e5.xSpike : (e5.x0 + e5.x1) / 2, y: void 0 !== e5.ySpike ? e5.ySpike : (e5.y0 + e5.y1) / 2, distance: e5.distance, spikeDistance: e5.spikeDistance, curveNumber: e5.trace.index, color: e5.color, pointNumber: e5.index } : null;
                }
                Ae();
                var Ce = { fullLayout: _2, container: _2._hoverlayer, event: t4 };
                e4._spikepoints;
                var De = { vLinePoint: ye.vLinePoint, hLinePoint: ye.hLinePoint };
                e4._spikepoints = De;
                var Pe = function() {
                  var e5 = ge.filter(function(e6) {
                    return f2 && f2._id === e6.xa._id && h2 && h2._id === e6.ya._id;
                  }), t5 = ge.filter(function(e6) {
                    return !(f2 && f2._id === e6.xa._id && h2 && h2._id === e6.ya._id);
                  });
                  e5.sort(P), t5.sort(P), ge = function(e6, t6) {
                    for (var r5 = t6.charAt(0), n2 = [], a2 = [], i4 = [], o2 = 0; o2 < e6.length; o2++) {
                      var l2 = e6[o2];
                      y.traceIs(l2.trace, "bar-like") || y.traceIs(l2.trace, "box-violin") ? i4.push(l2) : l2.trace[r5 + "period"] ? a2.push(l2) : n2.push(l2);
                    }
                    return n2.concat(a2).concat(i4);
                  }(ge = e5.concat(t5), L2);
                };
                Pe();
                var ze = L2.charAt(0), Ie = ("x" === ze || "y" === ze) && ge[0] && D[ge[0].trace.type];
                if (A2 && 0 !== re && 0 !== ge.length) {
                  var Ee = Le(ge.filter(function(e5) {
                    return e5.ya.showspikes;
                  }), re, Ie);
                  ye.hLinePoint = Se(Ee);
                  var Re = Le(ge.filter(function(e5) {
                    return e5.xa.showspikes;
                  }), re, Ie);
                  ye.vLinePoint = Se(Re);
                }
                if (0 === ge.length) {
                  var Ne = v.unhoverRaw(e4, t4);
                  return !A2 || null === ye.hLinePoint && null === ye.vLinePoint || B(e4, ye, Ce), Ne;
                }
                if (A2 && j() && B(e4, ye, Ce), x.isXYhover(fe) && 0 !== ge[0].length && "splom" !== ge[0].trace.type) {
                  var Fe = ge[0], He = (ge = O[Fe.trace.type] ? ge.filter(function(e5) {
                    return e5.trace.index === Fe.trace.index;
                  }) : [Fe]).length;
                  Ae(V("x", Fe, _2), V("y", Fe, _2));
                  var Be, je = [], Ye = {}, Ve = 0, Ue = function(e5) {
                    var t5 = O[e5.trace.type] ? z(e5) : e5.trace.index;
                    if (Ye[t5]) {
                      var r5 = Ye[t5] - 1, n2 = je[r5];
                      r5 > 0 && Math.abs(e5.distance) < Math.abs(n2.distance) && (je[r5] = e5);
                    } else Ve++, Ye[t5] = Ve, je.push(e5);
                  };
                  for (Be = 0; Be < He; Be++) Ue(ge[Be]);
                  for (Be = ge.length - 1; Be > He - 1; Be--) Ue(ge[Be]);
                  ge = je, Pe();
                }
                var qe = e4._hoverdata, Ge = [], Ze = U(e4), We = q(e4);
                for (ie = 0; ie < ge.length; ie++) {
                  var Je = ge[ie], Xe = x.makeEventData(Je, Je.trace, Je.cd);
                  if (false !== Je.hovertemplate) {
                    var Ke = false;
                    Je.cd[Je.index] && Je.cd[Je.index].ht && (Ke = Je.cd[Je.index].ht), Je.hovertemplate = Ke || Je.trace.hovertemplate || false;
                  }
                  if (Je.xa && Je.ya) {
                    var Qe = Je.x0 + Je.xa._offset, $e = Je.x1 + Je.xa._offset, et = Je.y0 + Je.ya._offset, tt = Je.y1 + Je.ya._offset, rt = Math.min(Qe, $e), nt = Math.max(Qe, $e), at = Math.min(et, tt), it = Math.max(et, tt);
                    Xe.bbox = { x0: rt + We, x1: nt + We, y0: at + Ze, y1: it + Ze };
                  }
                  Je.eventData = [Xe], Ge.push(Xe);
                }
                e4._hoverdata = Ge;
                var ot = "y" === L2 && (me.length > 1 || ge.length > 1) || "closest" === L2 && xe && ge.length > 1, lt = p.combine(_2.plot_bgcolor || p.background, _2.paper_bgcolor), st = E(ge, { gd: e4, hovermode: L2, rotateLabels: ot, bgColor: lt, container: _2._hoverlayer, outerContainer: _2._paper.node(), commonLabelOpts: _2.hoverlabel, hoverdistance: _2.hoverdistance }), ct = st.hoverLabels;
                if (x.isUnifiedHover(L2) || (function(e5, t5, r5, n2) {
                  var a2, i4, o2, l2, s4, c3, u2, f3 = t5 ? "xa" : "ya", d2 = t5 ? "ya" : "xa", h3 = 0, p2 = 1, v2 = e5.size(), g2 = new Array(v2), m2 = 0, y2 = n2.minX, x2 = n2.maxX, b3 = n2.minY, _3 = n2.maxY, w3 = function(e6) {
                    return e6 * r5._invScaleX;
                  }, T3 = function(e6) {
                    return e6 * r5._invScaleY;
                  };
                  function M3(e6) {
                    var t6 = e6[0], r6 = e6[e6.length - 1];
                    if (i4 = t6.pmin - t6.pos - t6.dp + t6.size, o2 = r6.pos + r6.dp + r6.size - t6.pmax, i4 > 0.01) {
                      for (s4 = e6.length - 1; s4 >= 0; s4--) e6[s4].dp += i4;
                      a2 = false;
                    }
                    if (!(o2 < 0.01)) {
                      if (i4 < -0.01) {
                        for (s4 = e6.length - 1; s4 >= 0; s4--) e6[s4].dp -= o2;
                        a2 = false;
                      }
                      if (a2) {
                        var n3 = 0;
                        for (l2 = 0; l2 < e6.length; l2++) (c3 = e6[l2]).pos + c3.dp + c3.size > t6.pmax && n3++;
                        for (l2 = e6.length - 1; l2 >= 0 && !(n3 <= 0); l2--) (c3 = e6[l2]).pos > t6.pmax - 1 && (c3.del = true, n3--);
                        for (l2 = 0; l2 < e6.length && !(n3 <= 0); l2++) if ((c3 = e6[l2]).pos < t6.pmin + 1) for (c3.del = true, n3--, o2 = 2 * c3.size, s4 = e6.length - 1; s4 >= 0; s4--) e6[s4].dp -= o2;
                        for (l2 = e6.length - 1; l2 >= 0 && !(n3 <= 0); l2--) (c3 = e6[l2]).pos + c3.dp + c3.size > t6.pmax && (c3.del = true, n3--);
                      }
                    }
                  }
                  for (e5.each(function(e6) {
                    var n3 = e6[f3], a3 = e6[d2], i5 = "x" === n3._id.charAt(0), o3 = n3.range;
                    0 === m2 && o3 && o3[0] > o3[1] !== i5 && (p2 = -1);
                    var l3 = 0, s5 = i5 ? r5.width : r5.height;
                    if ("x" === r5.hovermode || "y" === r5.hovermode) {
                      var c4, u3, h4 = N(e6, t5), v3 = e6.anchor, M4 = "end" === v3 ? -1 : 1;
                      if ("middle" === v3) u3 = (c4 = e6.crossPos + (i5 ? T3(h4.y - e6.by / 2) : w3(e6.bx / 2 + e6.tx2width / 2))) + (i5 ? T3(e6.by) : w3(e6.bx));
                      else if (i5) u3 = (c4 = e6.crossPos + T3(S + h4.y) - T3(e6.by / 2 - S)) + T3(e6.by);
                      else {
                        var A4 = w3(M4 * S + h4.x), L4 = A4 + w3(M4 * e6.bx);
                        c4 = e6.crossPos + Math.min(A4, L4), u3 = e6.crossPos + Math.max(A4, L4);
                      }
                      i5 ? void 0 !== b3 && void 0 !== _3 && Math.min(u3, _3) - Math.max(c4, b3) > 1 && ("left" === a3.side ? (l3 = a3._mainLinePosition, s5 = r5.width) : s5 = a3._mainLinePosition) : void 0 !== y2 && void 0 !== x2 && Math.min(u3, x2) - Math.max(c4, y2) > 1 && ("top" === a3.side ? (l3 = a3._mainLinePosition, s5 = r5.height) : s5 = a3._mainLinePosition);
                    }
                    g2[m2++] = [{ datum: e6, traceIndex: e6.trace.index, dp: 0, pos: e6.pos, posref: e6.posref, size: e6.by * (i5 ? k : 1) / 2, pmin: l3, pmax: s5 }];
                  }), g2.sort(function(e6, t6) {
                    return e6[0].posref - t6[0].posref || p2 * (t6[0].traceIndex - e6[0].traceIndex);
                  }); !a2 && h3 <= v2; ) {
                    for (h3++, a2 = true, l2 = 0; l2 < g2.length - 1; ) {
                      var A3 = g2[l2], L3 = g2[l2 + 1], C3 = A3[A3.length - 1], O2 = L3[0];
                      if ((i4 = C3.pos + C3.dp + C3.size - O2.pos - O2.dp + O2.size) > 0.01) {
                        for (s4 = L3.length - 1; s4 >= 0; s4--) L3[s4].dp += i4;
                        for (A3.push.apply(A3, L3), g2.splice(l2 + 1, 1), u2 = 0, s4 = A3.length - 1; s4 >= 0; s4--) u2 += A3[s4].dp;
                        for (o2 = u2 / A3.length, s4 = A3.length - 1; s4 >= 0; s4--) A3[s4].dp -= o2;
                        a2 = false;
                      } else l2++;
                    }
                    g2.forEach(M3);
                  }
                  for (l2 = g2.length - 1; l2 >= 0; l2--) {
                    var D2 = g2[l2];
                    for (s4 = D2.length - 1; s4 >= 0; s4--) {
                      var P2 = D2[s4], z2 = P2.datum;
                      z2.offset = P2.dp, z2.del = P2.del;
                    }
                  }
                }(ct, ot, _2, st.commonLabelBoundingBox), F(ct, ot, _2._invScaleX, _2._invScaleY)), s3 && s3.tagName) {
                  var ut = y.getComponentMethod("annotations", "hasClickToShow")(e4, Ge);
                  d(n.select(s3), ut ? "pointer" : "");
                }
                s3 && !i3 && function(e5, t5, r5) {
                  if (!r5 || r5.length !== e5._hoverdata.length) return true;
                  for (var n2 = r5.length - 1; n2 >= 0; n2--) {
                    var a2 = r5[n2], i4 = e5._hoverdata[n2];
                    if (a2.curveNumber !== i4.curveNumber || String(a2.pointNumber) !== String(i4.pointNumber) || String(a2.pointNumbers) !== String(i4.pointNumbers)) return true;
                  }
                  return false;
                }(e4, 0, qe) && (qe && e4.emit("plotly_unhover", { event: t4, points: qe }), e4.emit("plotly_hover", { event: t4, points: e4._hoverdata, xaxes: X, yaxes: K, xvals: ne, yvals: ae }));
              }(e3, t3, r3, i2, s2);
            });
          }, t2.loneHover = function(e3, t3) {
            var r3 = true;
            Array.isArray(e3) || (r3 = false, e3 = [e3]);
            var a2 = t3.gd, i2 = U(a2), o2 = q(a2), l2 = E(e3.map(function(e4) {
              var r4 = e4._x0 || e4.x0 || e4.x || 0, n2 = e4._x1 || e4.x1 || e4.x || 0, l3 = e4._y0 || e4.y0 || e4.y || 0, s3 = e4._y1 || e4.y1 || e4.y || 0, c3 = e4.eventData;
              if (c3) {
                var u2 = Math.min(r4, n2), f2 = Math.max(r4, n2), d2 = Math.min(l3, s3), h2 = Math.max(l3, s3), v2 = e4.trace;
                if (y.traceIs(v2, "gl3d")) {
                  var g2 = a2._fullLayout[v2.scene]._scene.container, m2 = g2.offsetLeft, x2 = g2.offsetTop;
                  u2 += m2, f2 += m2, d2 += x2, h2 += x2;
                }
                c3.bbox = { x0: u2 + o2, x1: f2 + o2, y0: d2 + i2, y1: h2 + i2 }, t3.inOut_bbox && t3.inOut_bbox.push(c3.bbox);
              } else c3 = false;
              return { color: e4.color || p.defaultLine, x0: e4.x0 || e4.x || 0, x1: e4.x1 || e4.x || 0, y0: e4.y0 || e4.y || 0, y1: e4.y1 || e4.y || 0, xLabel: e4.xLabel, yLabel: e4.yLabel, zLabel: e4.zLabel, text: e4.text, name: e4.name, idealAlign: e4.idealAlign, borderColor: e4.borderColor, fontFamily: e4.fontFamily, fontSize: e4.fontSize, fontColor: e4.fontColor, fontWeight: e4.fontWeight, fontStyle: e4.fontStyle, fontVariant: e4.fontVariant, nameLength: e4.nameLength, textAlign: e4.textAlign, trace: e4.trace || { index: 0, hoverinfo: "" }, xa: { _offset: 0 }, ya: { _offset: 0 }, index: 0, hovertemplate: e4.hovertemplate || false, hovertemplateLabels: e4.hovertemplateLabels || false, eventData: c3 };
            }), { gd: a2, hovermode: "closest", rotateLabels: false, bgColor: t3.bgColor || p.background, container: n.select(t3.container), outerContainer: t3.outerContainer || t3.container }).hoverLabels, s2 = 0, c2 = 0;
            return l2.sort(function(e4, t4) {
              return e4.y0 - t4.y0;
            }).each(function(e4, r4) {
              var n2 = e4.y0 - e4.by / 2;
              e4.offset = n2 - 5 < s2 ? s2 - n2 + 5 : 0, s2 = n2 + e4.by + e4.offset, r4 === t3.anchorIndex && (c2 = e4.offset);
            }).each(function(e4) {
              e4.offset -= c2;
            }), F(l2, false, a2._fullLayout._invScaleX, a2._fullLayout._invScaleY), r3 ? l2 : l2.node();
          };
          var I = /<extra>([\s\S]*)<\/extra>/;
          function E(e3, t3) {
            var r3 = t3.gd, a2 = r3._fullLayout, i2 = t3.hovermode, l2 = t3.rotateLabels, u2 = t3.bgColor, d2 = t3.container, v2 = t3.outerContainer, g2 = t3.commonLabelOpts || {};
            if (0 === e3.length) return [[]];
            var m2 = t3.fontFamily || b.HOVERFONT, M2 = t3.fontSize || b.HOVERFONTSIZE, k2 = t3.fontWeight || a2.font.weight, A2 = t3.fontStyle || a2.font.style, L2 = t3.fontVariant || a2.font.variant, O2 = t3.fontTextcase || a2.font.textcase, D2 = t3.fontLineposition || a2.font.lineposition, P2 = t3.fontShadow || a2.font.shadow, I2 = e3[0], E2 = I2.xa, N2 = I2.ya, F2 = i2.charAt(0), H2 = F2 + "Label", B2 = I2[H2];
            if (void 0 === B2 && "multicategory" === E2.type) for (var j2 = 0; j2 < e3.length && void 0 === (B2 = e3[j2][H2]); j2++) ;
            var Y2 = G(r3, v2), V2 = Y2.top, U2 = Y2.width, q2 = Y2.height, Z = void 0 !== B2 && I2.distance <= t3.hoverdistance && ("x" === i2 || "y" === i2);
            if (Z) {
              var W, J, X = true;
              for (W = 0; W < e3.length; W++) if (X && void 0 === e3[W].zLabel && (X = false), J = e3[W].hoverinfo || e3[W].trace.hoverinfo) {
                var K = Array.isArray(J) ? J : J.split("+");
                if (-1 === K.indexOf("all") && -1 === K.indexOf(i2)) {
                  Z = false;
                  break;
                }
              }
              X && (Z = false);
            }
            var Q = d2.selectAll("g.axistext").data(Z ? [0] : []);
            Q.enter().append("g").classed("axistext", true), Q.exit().remove();
            var $ = { minX: 0, maxX: 0, minY: 0, maxY: 0 };
            if (Q.each(function() {
              var e4 = n.select(this), t4 = o.ensureSingle(e4, "path", "", function(e5) {
                e5.style({ "stroke-width": "1px" });
              }), l3 = o.ensureSingle(e4, "text", "", function(e5) {
                e5.attr("data-notex", 1);
              }), c2 = g2.bgcolor || p.defaultLine, u3 = g2.bordercolor || p.contrast(c2), d3 = p.contrast(c2), v3 = g2.font, y2 = { weight: v3.weight || k2, style: v3.style || A2, variant: v3.variant || L2, textcase: v3.textcase || O2, lineposition: v3.lineposition || D2, shadow: v3.shadow || P2, family: v3.family || m2, size: v3.size || M2, color: v3.color || d3 };
              t4.style({ fill: c2, stroke: u3 }), l3.text(B2).call(h.font, y2).call(f.positionText, 0, 0).call(f.convertToTspans, r3), e4.attr("transform", "");
              var x2, b2, _2 = G(r3, l3.node());
              if ("x" === i2) {
                var w2 = "top" === E2.side ? "-" : "";
                l3.attr("text-anchor", "middle").call(f.positionText, 0, "top" === E2.side ? V2 - _2.bottom - S - C : V2 - _2.top + S + C), x2 = E2._offset + (I2.x0 + I2.x1) / 2, b2 = N2._offset + ("top" === E2.side ? 0 : N2._length);
                var T2 = _2.width / 2 + C, z2 = x2;
                x2 < T2 ? z2 = T2 : x2 > a2.width - T2 && (z2 = a2.width - T2), t4.attr("d", "M" + (x2 - z2) + ",0L" + (x2 - z2 + S) + "," + w2 + S + "H" + T2 + "v" + w2 + (2 * C + _2.height) + "H" + -T2 + "V" + w2 + S + "H" + (x2 - z2 - S) + "Z"), x2 = z2, $.minX = x2 - T2, $.maxX = x2 + T2, "top" === E2.side ? ($.minY = b2 - (2 * C + _2.height), $.maxY = b2 - C) : ($.minY = b2 + C, $.maxY = b2 + (2 * C + _2.height));
              } else {
                var R2, F3, H3;
                "right" === N2.side ? (R2 = "start", F3 = 1, H3 = "", x2 = E2._offset + E2._length) : (R2 = "end", F3 = -1, H3 = "-", x2 = E2._offset), b2 = N2._offset + (I2.y0 + I2.y1) / 2, l3.attr("text-anchor", R2), t4.attr("d", "M0,0L" + H3 + S + "," + S + "V" + (C + _2.height / 2) + "h" + H3 + (2 * C + _2.width) + "V-" + (C + _2.height / 2) + "H" + H3 + S + "V-" + S + "Z"), $.minY = b2 - (C + _2.height / 2), $.maxY = b2 + (C + _2.height / 2), "right" === N2.side ? ($.minX = x2 + S, $.maxX = x2 + S + (2 * C + _2.width)) : ($.minX = x2 - S - (2 * C + _2.width), $.maxX = x2 - S);
                var j3, Y3 = _2.height / 2, U3 = V2 - _2.top - Y3, q3 = "clip" + a2._uid + "commonlabel" + N2._id;
                if (x2 < _2.width + 2 * C + S) {
                  j3 = "M-" + (S + C) + "-" + Y3 + "h-" + (_2.width - C) + "V" + Y3 + "h" + (_2.width - C) + "Z";
                  var Z2 = _2.width - x2 + C;
                  f.positionText(l3, Z2, U3), "end" === R2 && l3.selectAll("tspan").each(function() {
                    var e5 = n.select(this), t5 = h.tester.append("text").text(e5.text()).call(h.font, y2), a3 = G(r3, t5.node());
                    Math.round(a3.width) < Math.round(_2.width) && e5.attr("x", Z2 - a3.width), t5.remove();
                  });
                } else f.positionText(l3, F3 * (C + S), U3), j3 = null;
                var W2 = a2._topclips.selectAll("#" + q3).data(j3 ? [0] : []);
                W2.enter().append("clipPath").attr("id", q3).append("path"), W2.exit().remove(), W2.select("path").attr("d", j3), h.setClipUrl(l3, j3 ? q3 : null, r3);
              }
              e4.attr("transform", s(x2, b2));
            }), x.isUnifiedHover(i2)) {
              d2.selectAll("g.hovertext").remove();
              var ee = e3.filter(function(e4) {
                return "none" !== e4.hoverinfo;
              });
              if (0 === ee.length) return [];
              var te = a2.hoverlabel, re = te.font, ne = { showlegend: true, legend: { title: { text: B2, font: re }, font: re, bgcolor: te.bgcolor, bordercolor: te.bordercolor, borderwidth: 1, tracegroupgap: 7, traceorder: a2.legend ? a2.legend.traceorder : void 0, orientation: "v" } }, ae = { font: re };
              _(ne, ae, r3._fullData);
              var ie = ae.legend;
              ie.entries = [];
              for (var oe = 0; oe < ee.length; oe++) {
                var le = ee[oe];
                if ("none" !== le.hoverinfo) {
                  var se = R(le, true, i2, a2, B2), ce = se[0], ue = se[1];
                  le.name = ue, le.text = "" !== ue ? ue + " : " + ce : ce;
                  var fe = le.cd[le.index];
                  fe && (fe.mc && (le.mc = fe.mc), fe.mcc && (le.mc = fe.mcc), fe.mlc && (le.mlc = fe.mlc), fe.mlcc && (le.mlc = fe.mlcc), fe.mlw && (le.mlw = fe.mlw), fe.mrc && (le.mrc = fe.mrc), fe.dir && (le.dir = fe.dir)), le._distinct = true, ie.entries.push([le]);
                }
              }
              ie.entries.sort(function(e4, t4) {
                return e4[0].trace.index - t4[0].trace.index;
              }), ie.layer = d2, ie._inHover = true, ie._groupTitleFont = te.grouptitlefont, w(r3, ie);
              var de, he, pe, ve, ge = d2.select("g.legend"), me = G(r3, ge.node()), ye = me.width + 2 * C, xe = me.height + 2 * C, be = ee[0], _e = (be.x0 + be.x1) / 2, we = (be.y0 + be.y1) / 2, Te = !(y.traceIs(be.trace, "bar-like") || y.traceIs(be.trace, "box-violin"));
              "y" === F2 ? Te ? (he = we - C, de = we + C) : (he = Math.min.apply(null, ee.map(function(e4) {
                return Math.min(e4.y0, e4.y1);
              })), de = Math.max.apply(null, ee.map(function(e4) {
                return Math.max(e4.y0, e4.y1);
              }))) : he = de = o.mean(ee.map(function(e4) {
                return (e4.y0 + e4.y1) / 2;
              })) - xe / 2, "x" === F2 ? Te ? (pe = _e + C, ve = _e - C) : (pe = Math.max.apply(null, ee.map(function(e4) {
                return Math.max(e4.x0, e4.x1);
              })), ve = Math.min.apply(null, ee.map(function(e4) {
                return Math.min(e4.x0, e4.x1);
              }))) : pe = ve = o.mean(ee.map(function(e4) {
                return (e4.x0 + e4.x1) / 2;
              })) - ye / 2;
              var Me, ke, Ae = E2._offset, Le = N2._offset;
              return ve += Ae - ye, he += Le - xe, Me = (pe += Ae) + ye < U2 && pe >= 0 ? pe : ve + ye < U2 && ve >= 0 ? ve : Ae + ye < U2 ? Ae : pe - _e < _e - ve + ye ? U2 - ye : 0, Me += C, ke = (de += Le) + xe < q2 && de >= 0 ? de : he + xe < q2 && he >= 0 ? he : Le + xe < q2 ? Le : de - we < we - he + xe ? q2 - xe : 0, ke += C, ge.attr("transform", s(Me - 1, ke - 1)), ge;
            }
            var Se = d2.selectAll("g.hovertext").data(e3, function(e4) {
              return z(e4);
            });
            return Se.enter().append("g").classed("hovertext", true).each(function() {
              var e4 = n.select(this);
              e4.append("rect").call(p.fill, p.addOpacity(u2, 0.8)), e4.append("text").classed("name", true), e4.append("path").style("stroke-width", "1px"), e4.append("text").classed("nums", true).call(h.font, { weight: k2, style: A2, variant: L2, textcase: O2, lineposition: D2, shadow: P2, family: m2, size: M2 });
            }), Se.exit().remove(), Se.each(function(e4) {
              var t4 = n.select(this).attr("transform", ""), o2 = e4.color;
              Array.isArray(o2) && (o2 = o2[e4.eventData[0].pointNumber]);
              var d3 = e4.bgcolor || o2, v3 = p.combine(p.opacity(d3) ? d3 : p.defaultLine, u2), g3 = p.combine(p.opacity(o2) ? o2 : p.defaultLine, u2), y2 = e4.borderColor || p.contrast(v3), x2 = R(e4, Z, i2, a2, B2, t4), b2 = x2[0], _2 = x2[1], w2 = t4.select("text.nums").call(h.font, { family: e4.fontFamily || m2, size: e4.fontSize || M2, color: e4.fontColor || y2, weight: e4.fontWeight || k2, style: e4.fontStyle || A2, variant: e4.fontVariant || L2, textcase: e4.fontTextcase || O2, lineposition: e4.fontLineposition || D2, shadow: e4.fontShadow || P2 }).text(b2).attr("data-notex", 1).call(f.positionText, 0, 0).call(f.convertToTspans, r3), z2 = t4.select("text.name"), I3 = 0, E3 = 0;
              if (_2 && _2 !== b2) {
                z2.call(h.font, { family: e4.fontFamily || m2, size: e4.fontSize || M2, color: g3, weight: e4.fontWeight || k2, style: e4.fontStyle || A2, variant: e4.fontVariant || L2, textcase: e4.fontTextcase || O2, lineposition: e4.fontLineposition || D2, shadow: e4.fontShadow || P2 }).text(_2).attr("data-notex", 1).call(f.positionText, 0, 0).call(f.convertToTspans, r3);
                var N3 = G(r3, z2.node());
                I3 = N3.width + 2 * C, E3 = N3.height + 2 * C;
              } else z2.remove(), t4.select("rect").remove();
              t4.select("path").style({ fill: v3, stroke: y2 });
              var F3 = e4.xa._offset + (e4.x0 + e4.x1) / 2, H3 = e4.ya._offset + (e4.y0 + e4.y1) / 2, j3 = Math.abs(e4.x1 - e4.x0), Y3 = Math.abs(e4.y1 - e4.y0), W2 = G(r3, w2.node()), J2 = W2.width / a2._invScaleX, X2 = W2.height / a2._invScaleY;
              e4.ty0 = (V2 - W2.top) / a2._invScaleY, e4.bx = J2 + 2 * C, e4.by = Math.max(X2 + 2 * C, E3), e4.anchor = "start", e4.txwidth = J2, e4.tx2width = I3, e4.offset = 0;
              var K2, Q2, $2 = (J2 + S + C + I3) * a2._invScaleX;
              if (l2) e4.pos = F3, K2 = H3 + Y3 / 2 + $2 <= q2, Q2 = H3 - Y3 / 2 - $2 >= 0, "top" !== e4.idealAlign && K2 || !Q2 ? K2 ? (H3 += Y3 / 2, e4.anchor = "start") : e4.anchor = "middle" : (H3 -= Y3 / 2, e4.anchor = "end"), e4.crossPos = H3;
              else {
                if (e4.pos = H3, K2 = F3 + j3 / 2 + $2 <= U2, Q2 = F3 - j3 / 2 - $2 >= 0, "left" !== e4.idealAlign && K2 || !Q2) if (K2) F3 += j3 / 2, e4.anchor = "start";
                else {
                  e4.anchor = "middle";
                  var ee2 = $2 / 2, te2 = F3 + ee2 - U2, re2 = F3 - ee2;
                  te2 > 0 && (F3 -= te2), re2 < 0 && (F3 += -re2);
                }
                else F3 -= j3 / 2, e4.anchor = "end";
                e4.crossPos = F3;
              }
              w2.attr("text-anchor", e4.anchor), I3 && z2.attr("text-anchor", e4.anchor), t4.attr("transform", s(F3, H3) + (l2 ? c(T) : ""));
            }), { hoverLabels: Se, commonLabelBoundingBox: $ };
          }
          function R(e3, t3, r3, n2, a2, i2) {
            var l2 = "", s2 = "";
            void 0 !== e3.nameOverride && (e3.name = e3.nameOverride), e3.name && (e3.trace._meta && (e3.name = o.templateString(e3.name, e3.trace._meta)), l2 = Y(e3.name, e3.nameLength));
            var c2 = r3.charAt(0), u2 = "x" === c2 ? "y" : "x";
            void 0 !== e3.zLabel ? (void 0 !== e3.xLabel && (s2 += "x: " + e3.xLabel + "<br>"), void 0 !== e3.yLabel && (s2 += "y: " + e3.yLabel + "<br>"), "choropleth" !== e3.trace.type && "choroplethmapbox" !== e3.trace.type && "choroplethmap" !== e3.trace.type && (s2 += (s2 ? "z: " : "") + e3.zLabel)) : t3 && e3[c2 + "Label"] === a2 ? s2 = e3[u2 + "Label"] || "" : void 0 === e3.xLabel ? void 0 !== e3.yLabel && "scattercarpet" !== e3.trace.type && (s2 = e3.yLabel) : s2 = void 0 === e3.yLabel ? e3.xLabel : "(" + e3.xLabel + ", " + e3.yLabel + ")", !e3.text && 0 !== e3.text || Array.isArray(e3.text) || (s2 += (s2 ? "<br>" : "") + e3.text), void 0 !== e3.extraText && (s2 += (s2 ? "<br>" : "") + e3.extraText), i2 && "" === s2 && !e3.hovertemplate && ("" === l2 && i2.remove(), s2 = l2);
            var f2 = e3.hovertemplate || false;
            if (f2) {
              var d2 = e3.hovertemplateLabels || e3;
              e3[c2 + "Label"] !== a2 && (d2[c2 + "other"] = d2[c2 + "Val"], d2[c2 + "otherLabel"] = d2[c2 + "Label"]), s2 = (s2 = o.hovertemplateString(f2, d2, n2._d3locale, e3.eventData[0] || {}, e3.trace._meta)).replace(I, function(t4, r4) {
                return l2 = Y(r4, e3.nameLength), "";
              });
            }
            return [s2, l2];
          }
          function N(e3, t3) {
            var r3 = 0, n2 = e3.offset;
            return t3 && (n2 *= -L, r3 = e3.offset * A), { x: r3, y: n2 };
          }
          function F(e3, t3, r3, a2) {
            var i2 = function(e4) {
              return e4 * r3;
            }, o2 = function(e4) {
              return e4 * a2;
            };
            e3.each(function(e4) {
              var r4 = n.select(this);
              if (e4.del) return r4.remove();
              var a3, l2, s2, c2, u2 = r4.select("text.nums"), d2 = e4.anchor, p2 = "end" === d2 ? -1 : 1, v2 = (c2 = (s2 = (l2 = { start: 1, end: -1, middle: 0 }[(a3 = e4).anchor]) * (S + C)) + l2 * (a3.txwidth + C), "middle" === a3.anchor && (s2 -= a3.tx2width / 2, c2 += a3.txwidth / 2 + C), { alignShift: l2, textShiftX: s2, text2ShiftX: c2 }), g2 = N(e4, t3), m2 = g2.x, y2 = g2.y, x2 = "middle" === d2;
              r4.select("path").attr("d", x2 ? "M-" + i2(e4.bx / 2 + e4.tx2width / 2) + "," + o2(y2 - e4.by / 2) + "h" + i2(e4.bx) + "v" + o2(e4.by) + "h-" + i2(e4.bx) + "Z" : "M0,0L" + i2(p2 * S + m2) + "," + o2(S + y2) + "v" + o2(e4.by / 2 - S) + "h" + i2(p2 * e4.bx) + "v-" + o2(e4.by) + "H" + i2(p2 * S + m2) + "V" + o2(y2 - S) + "Z");
              var b2 = m2 + v2.textShiftX, _2 = y2 + e4.ty0 - e4.by / 2 + C, w2 = e4.textAlign || "auto";
              "auto" !== w2 && ("left" === w2 && "start" !== d2 ? (u2.attr("text-anchor", "start"), b2 = x2 ? -e4.bx / 2 - e4.tx2width / 2 + C : -e4.bx - C) : "right" === w2 && "end" !== d2 && (u2.attr("text-anchor", "end"), b2 = x2 ? e4.bx / 2 - e4.tx2width / 2 - C : e4.bx + C)), u2.call(f.positionText, i2(b2), o2(_2)), e4.tx2width && (r4.select("text.name").call(f.positionText, i2(v2.text2ShiftX + v2.alignShift * C + m2), o2(y2 + e4.ty0 - e4.by / 2 + C)), r4.select("rect").call(h.setRect, i2(v2.text2ShiftX + (v2.alignShift - 1) * e4.tx2width / 2 + m2), o2(y2 - e4.by / 2 - 1), i2(e4.tx2width), o2(e4.by + 2)));
            });
          }
          function H(e3, t3) {
            var r3 = e3.index, n2 = e3.trace || {}, i2 = e3.cd[0], l2 = e3.cd[r3] || {};
            function s2(e4) {
              return e4 || a(e4) && 0 === e4;
            }
            var c2 = Array.isArray(r3) ? function(e4, t4) {
              var a2 = o.castOption(i2, r3, e4);
              return s2(a2) ? a2 : o.extractOption({}, n2, "", t4);
            } : function(e4, t4) {
              return o.extractOption(l2, n2, e4, t4);
            };
            function u2(t4, r4, n3) {
              var a2 = c2(r4, n3);
              s2(a2) && (e3[t4] = a2);
            }
            if (u2("hoverinfo", "hi", "hoverinfo"), u2("bgcolor", "hbg", "hoverlabel.bgcolor"), u2("borderColor", "hbc", "hoverlabel.bordercolor"), u2("fontFamily", "htf", "hoverlabel.font.family"), u2("fontSize", "hts", "hoverlabel.font.size"), u2("fontColor", "htc", "hoverlabel.font.color"), u2("fontWeight", "htw", "hoverlabel.font.weight"), u2("fontStyle", "hty", "hoverlabel.font.style"), u2("fontVariant", "htv", "hoverlabel.font.variant"), u2("nameLength", "hnl", "hoverlabel.namelength"), u2("textAlign", "hta", "hoverlabel.align"), e3.posref = "y" === t3 || "closest" === t3 && "h" === n2.orientation ? e3.xa._offset + (e3.x0 + e3.x1) / 2 : e3.ya._offset + (e3.y0 + e3.y1) / 2, e3.x0 = o.constrain(e3.x0, 0, e3.xa._length), e3.x1 = o.constrain(e3.x1, 0, e3.xa._length), e3.y0 = o.constrain(e3.y0, 0, e3.ya._length), e3.y1 = o.constrain(e3.y1, 0, e3.ya._length), void 0 !== e3.xLabelVal && (e3.xLabel = "xLabel" in e3 ? e3.xLabel : g.hoverLabelText(e3.xa, e3.xLabelVal, n2.xhoverformat), e3.xVal = e3.xa.c2d(e3.xLabelVal)), void 0 !== e3.yLabelVal && (e3.yLabel = "yLabel" in e3 ? e3.yLabel : g.hoverLabelText(e3.ya, e3.yLabelVal, n2.yhoverformat), e3.yVal = e3.ya.c2d(e3.yLabelVal)), void 0 !== e3.zLabelVal && void 0 === e3.zLabel && (e3.zLabel = String(e3.zLabelVal)), !(isNaN(e3.xerr) || "log" === e3.xa.type && e3.xerr <= 0)) {
              var f2 = g.tickText(e3.xa, e3.xa.c2l(e3.xerr), "hover").text;
              void 0 !== e3.xerrneg ? e3.xLabel += " +" + f2 + " / -" + g.tickText(e3.xa, e3.xa.c2l(e3.xerrneg), "hover").text : e3.xLabel += " ± " + f2, "x" === t3 && (e3.distance += 1);
            }
            if (!(isNaN(e3.yerr) || "log" === e3.ya.type && e3.yerr <= 0)) {
              var d2 = g.tickText(e3.ya, e3.ya.c2l(e3.yerr), "hover").text;
              void 0 !== e3.yerrneg ? e3.yLabel += " +" + d2 + " / -" + g.tickText(e3.ya, e3.ya.c2l(e3.yerrneg), "hover").text : e3.yLabel += " ± " + d2, "y" === t3 && (e3.distance += 1);
            }
            var h2 = e3.hoverinfo || e3.trace.hoverinfo;
            return h2 && "all" !== h2 && (-1 === (h2 = Array.isArray(h2) ? h2 : h2.split("+")).indexOf("x") && (e3.xLabel = void 0), -1 === h2.indexOf("y") && (e3.yLabel = void 0), -1 === h2.indexOf("z") && (e3.zLabel = void 0), -1 === h2.indexOf("text") && (e3.text = void 0), -1 === h2.indexOf("name") && (e3.name = void 0)), e3;
          }
          function B(e3, t3, r3) {
            var n2, a2, o2 = r3.container, l2 = r3.fullLayout, s2 = l2._size, c2 = r3.event, u2 = !!t3.hLinePoint, f2 = !!t3.vLinePoint;
            if (o2.selectAll(".spikeline").remove(), f2 || u2) {
              var d2 = p.combine(l2.plot_bgcolor, l2.paper_bgcolor);
              if (u2) {
                var v2, m2, y2 = t3.hLinePoint;
                n2 = y2 && y2.xa, "cursor" === (a2 = y2 && y2.ya).spikesnap ? (v2 = c2.pointerX, m2 = c2.pointerY) : (v2 = n2._offset + y2.x, m2 = a2._offset + y2.y);
                var x2, b2, _2 = i.readability(y2.color, d2) < 1.5 ? p.contrast(d2) : y2.color, w2 = a2.spikemode, T2 = a2.spikethickness, M2 = a2.spikecolor || _2, k2 = g.getPxPosition(e3, a2);
                if (-1 !== w2.indexOf("toaxis") || -1 !== w2.indexOf("across")) {
                  if (-1 !== w2.indexOf("toaxis") && (x2 = k2, b2 = v2), -1 !== w2.indexOf("across")) {
                    var A2 = a2._counterDomainMin, L2 = a2._counterDomainMax;
                    "free" === a2.anchor && (A2 = Math.min(A2, a2.position), L2 = Math.max(L2, a2.position)), x2 = s2.l + A2 * s2.w, b2 = s2.l + L2 * s2.w;
                  }
                  o2.insert("line", ":first-child").attr({ x1: x2, x2: b2, y1: m2, y2: m2, "stroke-width": T2, stroke: M2, "stroke-dasharray": h.dashStyle(a2.spikedash, T2) }).classed("spikeline", true).classed("crisp", true), o2.insert("line", ":first-child").attr({ x1: x2, x2: b2, y1: m2, y2: m2, "stroke-width": T2 + 2, stroke: d2 }).classed("spikeline", true).classed("crisp", true);
                }
                -1 !== w2.indexOf("marker") && o2.insert("circle", ":first-child").attr({ cx: k2 + ("right" !== a2.side ? T2 : -T2), cy: m2, r: T2, fill: M2 }).classed("spikeline", true);
              }
              if (f2) {
                var S2, C2, O2 = t3.vLinePoint;
                n2 = O2 && O2.xa, a2 = O2 && O2.ya, "cursor" === n2.spikesnap ? (S2 = c2.pointerX, C2 = c2.pointerY) : (S2 = n2._offset + O2.x, C2 = a2._offset + O2.y);
                var D2, P2, z2 = i.readability(O2.color, d2) < 1.5 ? p.contrast(d2) : O2.color, I2 = n2.spikemode, E2 = n2.spikethickness, R2 = n2.spikecolor || z2, N2 = g.getPxPosition(e3, n2);
                if (-1 !== I2.indexOf("toaxis") || -1 !== I2.indexOf("across")) {
                  if (-1 !== I2.indexOf("toaxis") && (D2 = N2, P2 = C2), -1 !== I2.indexOf("across")) {
                    var F2 = n2._counterDomainMin, H2 = n2._counterDomainMax;
                    "free" === n2.anchor && (F2 = Math.min(F2, n2.position), H2 = Math.max(H2, n2.position)), D2 = s2.t + (1 - H2) * s2.h, P2 = s2.t + (1 - F2) * s2.h;
                  }
                  o2.insert("line", ":first-child").attr({ x1: S2, x2: S2, y1: D2, y2: P2, "stroke-width": E2, stroke: R2, "stroke-dasharray": h.dashStyle(n2.spikedash, E2) }).classed("spikeline", true).classed("crisp", true), o2.insert("line", ":first-child").attr({ x1: S2, x2: S2, y1: D2, y2: P2, "stroke-width": E2 + 2, stroke: d2 }).classed("spikeline", true).classed("crisp", true);
                }
                -1 !== I2.indexOf("marker") && o2.insert("circle", ":first-child").attr({ cx: S2, cy: N2 - ("top" !== n2.side ? E2 : -E2), r: E2, fill: R2 }).classed("spikeline", true);
              }
            }
          }
          function j(e3, t3) {
            return true;
          }
          function Y(e3, t3) {
            return f.plainText(e3 || "", { len: t3, allowedTags: ["br", "sub", "sup", "b", "i", "em", "s", "u"] });
          }
          function V(e3, t3, r3) {
            var n2 = t3[e3 + "a"], a2 = t3[e3 + "Val"], i2 = t3.cd[0];
            if ("category" === n2.type || "multicategory" === n2.type) a2 = n2._categoriesMap[a2];
            else if ("date" === n2.type) {
              var o2 = t3.trace[e3 + "periodalignment"];
              if (o2) {
                var l2 = t3.cd[t3.index], s2 = l2[e3 + "Start"];
                void 0 === s2 && (s2 = l2[e3]);
                var c2 = l2[e3 + "End"];
                void 0 === c2 && (c2 = l2[e3]);
                var u2 = c2 - s2;
                "end" === o2 ? a2 += u2 : "middle" === o2 && (a2 += u2 / 2);
              }
              a2 = n2.d2c(a2);
            }
            return i2 && i2.t && i2.t.posLetter === n2._id && ("group" !== r3.boxmode && "group" !== r3.violinmode || (a2 += i2.t.dPos)), a2;
          }
          function U(e3) {
            return e3.offsetTop + e3.clientTop;
          }
          function q(e3) {
            return e3.offsetLeft + e3.clientLeft;
          }
          function G(e3, t3) {
            var r3 = e3._fullLayout, n2 = t3.getBoundingClientRect(), a2 = n2.left, i2 = n2.top, l2 = a2 + n2.width, s2 = i2 + n2.height, c2 = o.apply3DTransform(r3._invTransform)(a2, i2), u2 = o.apply3DTransform(r3._invTransform)(l2, s2), f2 = c2[0], d2 = c2[1], h2 = u2[0], p2 = u2[1];
            return { x: f2, y: d2, width: h2 - f2, height: p2 - d2, top: Math.min(d2, p2), left: Math.min(f2, h2), right: Math.max(f2, h2), bottom: Math.max(d2, p2) };
          }
        }, 6430: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766), i = r2(6040).isUnifiedHover;
          e2.exports = function(e3, t3, r3, o) {
            o = o || {};
            var l = t3.legend;
            function s(e4) {
              o.font[e4] || (o.font[e4] = l ? t3.legend.font[e4] : t3.font[e4]);
            }
            t3 && i(t3.hovermode) && (o.font || (o.font = {}), s("size"), s("family"), s("color"), s("weight"), s("style"), s("variant"), l ? (o.bgcolor || (o.bgcolor = a.combine(t3.legend.bgcolor, t3.paper_bgcolor)), o.bordercolor || (o.bordercolor = t3.legend.bordercolor)) : o.bgcolor || (o.bgcolor = t3.paper_bgcolor)), r3("hoverlabel.bgcolor", o.bgcolor), r3("hoverlabel.bordercolor", o.bordercolor), r3("hoverlabel.namelength", o.namelength), n.coerceFont(r3, "hoverlabel.font", o.font), r3("hoverlabel.align", o.align);
          };
        }, 5265: function(e2, t2, r2) {
          var n = r2(4809), a = r2(6811);
          e2.exports = function(e3, t3) {
            function r3(r4, i) {
              return void 0 !== t3[r4] ? t3[r4] : n.coerce(e3, t3, a, r4, i);
            }
            return r3("clickmode"), r3("hoversubplots"), r3("hovermode");
          };
        }, 2141: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = r2(4751), o = r2(6040), l = r2(6811), s = r2(8103);
          e2.exports = { moduleType: "component", name: "fx", constants: r2(5988), schema: { layout: l }, attributes: r2(192), layoutAttributes: l, supplyLayoutGlobalDefaults: r2(5358), supplyDefaults: r2(3239), supplyLayoutDefaults: r2(8412), calc: r2(3552), getDistanceFunction: o.getDistanceFunction, getClosest: o.getClosest, inbox: o.inbox, quadrature: o.quadrature, appendArrayPointValue: o.appendArrayPointValue, castHoverOption: function(e3, t3, r3) {
            return a.castOption(e3, t3, "hoverlabel." + r3);
          }, castHoverinfo: function(e3, t3, r3) {
            return a.castOption(e3, r3, "hoverinfo", function(r4) {
              return a.coerceHoverinfo({ hoverinfo: r4 }, { _module: e3._module }, t3);
            });
          }, hover: s.hover, unhover: i.unhover, loneHover: s.loneHover, loneUnhover: function(e3) {
            var t3 = a.isD3Selection(e3) ? e3 : n.select(e3);
            t3.selectAll("g.hovertext").remove(), t3.selectAll(".spikeline").remove();
          }, click: r2(4225) };
        }, 6811: function(e2, t2, r2) {
          var n = r2(5988), a = r2(337), i = a({ editType: "none" });
          i.family.dflt = n.HOVERFONT, i.size.dflt = n.HOVERFONTSIZE, e2.exports = { clickmode: { valType: "flaglist", flags: ["event", "select"], dflt: "event", editType: "plot", extras: ["none"] }, dragmode: { valType: "enumerated", values: ["zoom", "pan", "select", "lasso", "drawclosedpath", "drawopenpath", "drawline", "drawrect", "drawcircle", "orbit", "turntable", false], dflt: "zoom", editType: "modebar" }, hovermode: { valType: "enumerated", values: ["x", "y", "closest", false, "x unified", "y unified"], dflt: "closest", editType: "modebar" }, hoversubplots: { valType: "enumerated", values: ["single", "overlaying", "axis"], dflt: "overlaying", editType: "none" }, hoverdistance: { valType: "integer", min: -1, dflt: 20, editType: "none" }, spikedistance: { valType: "integer", min: -1, dflt: -1, editType: "none" }, hoverlabel: { bgcolor: { valType: "color", editType: "none" }, bordercolor: { valType: "color", editType: "none" }, font: i, grouptitlefont: a({ editType: "none" }), align: { valType: "enumerated", values: ["left", "right", "auto"], dflt: "auto", editType: "none" }, namelength: { valType: "integer", min: -1, dflt: 15, editType: "none" }, editType: "none" }, selectdirection: { valType: "enumerated", values: ["h", "v", "d", "any"], dflt: "any", editType: "none" } };
        }, 8412: function(e2, t2, r2) {
          var n = r2(4809), a = r2(6811), i = r2(5265), o = r2(6430);
          e2.exports = function(e3, t3) {
            function r3(r4, i2) {
              return n.coerce(e3, t3, a, r4, i2);
            }
            i(e3, t3) && (r3("hoverdistance"), r3("spikedistance")), "select" === r3("dragmode") && r3("selectdirection");
            var l = t3._has("mapbox"), s = t3._has("map"), c = t3._has("geo"), u = t3._basePlotModules.length;
            "zoom" === t3.dragmode && ((l || s || c) && 1 === u || (l || s) && c && 2 === u) && (t3.dragmode = "pan"), o(e3, t3, r3), n.coerceFont(r3, "hoverlabel.grouptitlefont", t3.hoverlabel.font);
          };
        }, 5358: function(e2, t2, r2) {
          var n = r2(4809), a = r2(6430), i = r2(6811);
          e2.exports = function(e3, t3) {
            a(e3, t3, function(r3, a2) {
              return n.coerce(e3, t3, i, r3, a2);
            });
          };
        }, 3595: function(e2, t2, r2) {
          var n = r2(4809), a = r2(694).counter, i = r2(3792).u, o = r2(4826).idRegex, l = r2(8032), s = { rows: { valType: "integer", min: 1, editType: "plot" }, roworder: { valType: "enumerated", values: ["top to bottom", "bottom to top"], dflt: "top to bottom", editType: "plot" }, columns: { valType: "integer", min: 1, editType: "plot" }, subplots: { valType: "info_array", freeLength: true, dimensions: 2, items: { valType: "enumerated", values: [a("xy").toString(), ""], editType: "plot" }, editType: "plot" }, xaxes: { valType: "info_array", freeLength: true, items: { valType: "enumerated", values: [o.x.toString(), ""], editType: "plot" }, editType: "plot" }, yaxes: { valType: "info_array", freeLength: true, items: { valType: "enumerated", values: [o.y.toString(), ""], editType: "plot" }, editType: "plot" }, pattern: { valType: "enumerated", values: ["independent", "coupled"], dflt: "coupled", editType: "plot" }, xgap: { valType: "number", min: 0, max: 1, editType: "plot" }, ygap: { valType: "number", min: 0, max: 1, editType: "plot" }, domain: i({ name: "grid", editType: "plot", noGridCell: true }, {}), xside: { valType: "enumerated", values: ["bottom", "bottom plot", "top plot", "top"], dflt: "bottom plot", editType: "plot" }, yside: { valType: "enumerated", values: ["left", "left plot", "right plot", "right"], dflt: "left plot", editType: "plot" }, editType: "plot" };
          function c(e3, t3, r3) {
            var n2 = t3[r3 + "axes"], a2 = Object.keys((e3._splomAxes || {})[r3] || {});
            return Array.isArray(n2) ? n2 : a2.length ? a2 : void 0;
          }
          function u(e3, t3, r3, n2, a2, i2) {
            var o2 = t3(e3 + "gap", r3), l2 = t3("domain." + e3);
            t3(e3 + "side", n2);
            for (var s2 = new Array(a2), c2 = l2[0], u2 = (l2[1] - c2) / (a2 - o2), f2 = u2 * (1 - o2), d = 0; d < a2; d++) {
              var h = c2 + u2 * d;
              s2[i2 ? a2 - 1 - d : d] = [h, h + f2];
            }
            return s2;
          }
          function f(e3, t3, r3, n2, a2) {
            var i2, o2 = new Array(r3);
            function l2(e4, r4) {
              -1 !== t3.indexOf(r4) && void 0 === n2[r4] ? (o2[e4] = r4, n2[r4] = e4) : o2[e4] = "";
            }
            if (Array.isArray(e3)) for (i2 = 0; i2 < r3; i2++) l2(i2, e3[i2]);
            else for (l2(0, a2), i2 = 1; i2 < r3; i2++) l2(i2, a2 + (i2 + 1));
            return o2;
          }
          e2.exports = { moduleType: "component", name: "grid", schema: { layout: { grid: s } }, layoutAttributes: s, sizeDefaults: function(e3, t3) {
            var r3 = e3.grid || {}, a2 = c(t3, r3, "x"), i2 = c(t3, r3, "y");
            if (e3.grid || a2 || i2) {
              var o2, f2, d = Array.isArray(r3.subplots) && Array.isArray(r3.subplots[0]), h = Array.isArray(a2), p = Array.isArray(i2), v = h && a2 !== r3.xaxes && p && i2 !== r3.yaxes;
              d ? (o2 = r3.subplots.length, f2 = r3.subplots[0].length) : (p && (o2 = i2.length), h && (f2 = a2.length));
              var g = l.newContainer(t3, "grid"), m = M("rows", o2), y = M("columns", f2);
              if (m * y > 1) {
                d || h || p || "independent" === M("pattern") && (d = true), g._hasSubplotGrid = d;
                var x, b, _ = "top to bottom" === M("roworder"), w = d ? 0.2 : 0.1, T = d ? 0.3 : 0.1;
                v && t3._splomGridDflt && (x = t3._splomGridDflt.xside, b = t3._splomGridDflt.yside), g._domains = { x: u("x", M, w, x, y), y: u("y", M, T, b, m, _) };
              } else delete t3.grid;
            }
            function M(e4, t4) {
              return n.coerce(r3, g, s, e4, t4);
            }
          }, contentDefaults: function(e3, t3) {
            var r3 = t3.grid;
            if (r3 && r3._domains) {
              var n2, a2, i2, o2, l2, s2, u2, d = e3.grid || {}, h = t3._subplots, p = r3._hasSubplotGrid, v = r3.rows, g = r3.columns, m = "independent" === r3.pattern, y = r3._axisMap = {};
              if (p) {
                var x = d.subplots || [];
                s2 = r3.subplots = new Array(v);
                var b = 1;
                for (n2 = 0; n2 < v; n2++) {
                  var _ = s2[n2] = new Array(g), w = x[n2] || [];
                  for (a2 = 0; a2 < g; a2++) if (m ? (l2 = 1 === b ? "xy" : "x" + b + "y" + b, b++) : l2 = w[a2], _[a2] = "", -1 !== h.cartesian.indexOf(l2)) {
                    if (u2 = l2.indexOf("y"), i2 = l2.slice(0, u2), o2 = l2.slice(u2), void 0 !== y[i2] && y[i2] !== a2 || void 0 !== y[o2] && y[o2] !== n2) continue;
                    _[a2] = l2, y[i2] = a2, y[o2] = n2;
                  }
                }
              } else {
                var T = c(t3, d, "x"), M = c(t3, d, "y");
                r3.xaxes = f(T, h.xaxis, g, y, "x"), r3.yaxes = f(M, h.yaxis, v, y, "y");
              }
              var k = r3._anchors = {}, A = "top to bottom" === r3.roworder;
              for (var L in y) {
                var S, C, O, D = L.charAt(0), P = r3[D + "side"];
                if (P.length < 8) k[L] = "free";
                else if ("x" === D) {
                  if ("t" === P.charAt(0) === A ? (S = 0, C = 1, O = v) : (S = v - 1, C = -1, O = -1), p) {
                    var z = y[L];
                    for (n2 = S; n2 !== O; n2 += C) if ((l2 = s2[n2][z]) && (u2 = l2.indexOf("y"), l2.slice(0, u2) === L)) {
                      k[L] = l2.slice(u2);
                      break;
                    }
                  } else for (n2 = S; n2 !== O; n2 += C) if (o2 = r3.yaxes[n2], -1 !== h.cartesian.indexOf(L + o2)) {
                    k[L] = o2;
                    break;
                  }
                } else if ("l" === P.charAt(0) ? (S = 0, C = 1, O = g) : (S = g - 1, C = -1, O = -1), p) {
                  var I = y[L];
                  for (n2 = S; n2 !== O; n2 += C) if ((l2 = s2[I][n2]) && (u2 = l2.indexOf("y"), l2.slice(u2) === L)) {
                    k[L] = l2.slice(0, u2);
                    break;
                  }
                } else for (n2 = S; n2 !== O; n2 += C) if (i2 = r3.xaxes[n2], -1 !== h.cartesian.indexOf(i2 + L)) {
                  k[L] = i2;
                  break;
                }
              }
            }
          } };
        }, 7260: function(e2, t2, r2) {
          var n = r2(4826), a = r2(8032).templatedArray;
          r2(5081), e2.exports = a("image", { visible: { valType: "boolean", dflt: true, editType: "arraydraw" }, source: { valType: "string", editType: "arraydraw" }, layer: { valType: "enumerated", values: ["below", "above"], dflt: "above", editType: "arraydraw" }, sizex: { valType: "number", dflt: 0, editType: "arraydraw" }, sizey: { valType: "number", dflt: 0, editType: "arraydraw" }, sizing: { valType: "enumerated", values: ["fill", "contain", "stretch"], dflt: "contain", editType: "arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw" }, x: { valType: "any", dflt: 0, editType: "arraydraw" }, y: { valType: "any", dflt: 0, editType: "arraydraw" }, xanchor: { valType: "enumerated", values: ["left", "center", "right"], dflt: "left", editType: "arraydraw" }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "top", editType: "arraydraw" }, xref: { valType: "enumerated", values: ["paper", n.idRegex.x.toString()], dflt: "paper", editType: "arraydraw" }, yref: { valType: "enumerated", values: ["paper", n.idRegex.y.toString()], dflt: "paper", editType: "arraydraw" }, editType: "arraydraw" });
        }, 9443: function(e2, t2, r2) {
          var n = r2(721), a = r2(8083);
          e2.exports = function(e3, t3, r3, i) {
            t3 = t3 || {};
            var o = "log" === r3 && "linear" === t3.type, l = "linear" === r3 && "log" === t3.type;
            if (o || l) {
              for (var s, c, u = e3._fullLayout.images, f = t3._id.charAt(0), d = 0; d < u.length; d++) if (c = "images[" + d + "].", (s = u[d])[f + "ref"] === t3._id) {
                var h = s[f], p = s["size" + f], v = null, g = null;
                if (o) {
                  v = a(h, t3.range);
                  var m = p / Math.pow(10, v) / 2;
                  g = 2 * Math.log(m + Math.sqrt(1 + m * m)) / Math.LN10;
                } else g = (v = Math.pow(10, h)) * (Math.pow(10, p / 2) - Math.pow(10, -p / 2));
                n(v) ? n(g) || (g = null) : (v = null, g = null), i(c + f, v), i(c + "size" + f, g);
              }
            }
          };
        }, 507: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(9008), o = r2(7260);
          function l(e3, t3, r3) {
            function i2(r4, a2) {
              return n.coerce(e3, t3, o, r4, a2);
            }
            var l2 = i2("source");
            if (!i2("visible", !!l2)) return t3;
            i2("layer"), i2("xanchor"), i2("yanchor"), i2("sizex"), i2("sizey"), i2("sizing"), i2("opacity");
            for (var s = { _fullLayout: r3 }, c = ["x", "y"], u = 0; u < 2; u++) {
              var f = c[u], d = a.coerceRef(e3, t3, s, f, "paper", void 0);
              "paper" !== d && a.getFromId(s, d)._imgIndices.push(t3._index), a.coercePosition(t3, s, i2, d, f, 0);
            }
            return t3;
          }
          e2.exports = function(e3, t3) {
            i(e3, t3, { name: "images", handleItemDefaults: l });
          };
        }, 2211: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2203), i = r2(9714), o = r2(5975), l = r2(2972);
          e2.exports = function(e3) {
            var t3, r3, s = e3._fullLayout, c = [], u = {}, f = [];
            for (r3 = 0; r3 < s.images.length; r3++) {
              var d = s.images[r3];
              if (d.visible) if ("below" === d.layer && "paper" !== d.xref && "paper" !== d.yref) {
                t3 = o.ref2id(d.xref) + o.ref2id(d.yref);
                var h = s._plots[t3];
                if (!h) {
                  f.push(d);
                  continue;
                }
                h.mainplot && (t3 = h.mainplot.id), u[t3] || (u[t3] = []), u[t3].push(d);
              } else "above" === d.layer ? c.push(d) : f.push(d);
            }
            var p = { left: { sizing: "xMin", offset: 0 }, center: { sizing: "xMid", offset: -0.5 }, right: { sizing: "xMax", offset: -1 } }, v = { top: { sizing: "YMin", offset: 0 }, middle: { sizing: "YMid", offset: -0.5 }, bottom: { sizing: "YMax", offset: -1 } };
            function g(t4) {
              var r4 = n.select(this);
              if (this._imgSrc !== t4.source) if (r4.attr("xmlns", l.svg), t4.source && "data:" === t4.source.slice(0, 5)) r4.attr("xlink:href", t4.source), this._imgSrc = t4.source;
              else {
                var a2 = new Promise((function(e4) {
                  var n2 = new Image();
                  function a3() {
                    r4.remove(), e4();
                  }
                  this.img = n2, n2.setAttribute("crossOrigin", "anonymous"), n2.onerror = a3, n2.onload = function() {
                    var t5 = document.createElement("canvas");
                    t5.width = this.width, t5.height = this.height, t5.getContext("2d", { willReadFrequently: true }).drawImage(this, 0, 0);
                    var n3 = t5.toDataURL("image/png");
                    r4.attr("xlink:href", n3), e4();
                  }, r4.on("error", a3), n2.src = t4.source, this._imgSrc = t4.source;
                }).bind(this));
                e3._promises.push(a2);
              }
            }
            function m(t4) {
              var r4, o2, l2 = n.select(this), c2 = i.getFromId(e3, t4.xref), u2 = i.getFromId(e3, t4.yref), f2 = "domain" === i.getRefType(t4.xref), d2 = "domain" === i.getRefType(t4.yref), h2 = s._size;
              r4 = void 0 !== c2 ? "string" == typeof t4.xref && f2 ? c2._length * t4.sizex : Math.abs(c2.l2p(t4.sizex) - c2.l2p(0)) : t4.sizex * h2.w, o2 = void 0 !== u2 ? "string" == typeof t4.yref && d2 ? u2._length * t4.sizey : Math.abs(u2.l2p(t4.sizey) - u2.l2p(0)) : t4.sizey * h2.h;
              var g2, m2, y2 = r4 * p[t4.xanchor].offset, x2 = o2 * v[t4.yanchor].offset, b2 = p[t4.xanchor].sizing + v[t4.yanchor].sizing;
              switch (g2 = void 0 !== c2 ? "string" == typeof t4.xref && f2 ? c2._length * t4.x + c2._offset : c2.r2p(t4.x) + c2._offset : t4.x * h2.w + h2.l, g2 += y2, m2 = void 0 !== u2 ? "string" == typeof t4.yref && d2 ? u2._length * (1 - t4.y) + u2._offset : u2.r2p(t4.y) + u2._offset : h2.h - t4.y * h2.h + h2.t, m2 += x2, t4.sizing) {
                case "fill":
                  b2 += " slice";
                  break;
                case "stretch":
                  b2 = "none";
              }
              l2.attr({ x: g2, y: m2, width: r4, height: o2, preserveAspectRatio: b2, opacity: t4.opacity });
              var _2 = (c2 && "domain" !== i.getRefType(t4.xref) ? c2._id : "") + (u2 && "domain" !== i.getRefType(t4.yref) ? u2._id : "");
              a.setClipUrl(l2, _2 ? "clip" + s._uid + _2 : null, e3);
            }
            var y = s._imageLowerLayer.selectAll("image").data(f), x = s._imageUpperLayer.selectAll("image").data(c);
            y.enter().append("image"), x.enter().append("image"), y.exit().remove(), x.exit().remove(), y.each(function(e4) {
              g.bind(this)(e4), m.bind(this)(e4);
            }), x.each(function(e4) {
              g.bind(this)(e4), m.bind(this)(e4);
            });
            var b = Object.keys(s._plots);
            for (r3 = 0; r3 < b.length; r3++) {
              t3 = b[r3];
              var _ = s._plots[t3];
              if (_.imagelayer) {
                var w = _.imagelayer.selectAll("image").data(u[t3] || []);
                w.enter().append("image"), w.exit().remove(), w.each(function(e4) {
                  g.bind(this)(e4), m.bind(this)(e4);
                });
              }
            }
          };
        }, 5553: function(e2, t2, r2) {
          e2.exports = { moduleType: "component", name: "images", layoutAttributes: r2(7260), supplyLayoutDefaults: r2(507), includeBasePlot: r2(706)("images"), draw: r2(2211), convertCoords: r2(9443) };
        }, 6405: function(e2, t2, r2) {
          var n = r2(337), a = r2(229);
          e2.exports = { _isSubplotObj: true, visible: { valType: "boolean", dflt: true, editType: "legend" }, bgcolor: { valType: "color", editType: "legend" }, bordercolor: { valType: "color", dflt: a.defaultLine, editType: "legend" }, borderwidth: { valType: "number", min: 0, dflt: 0, editType: "legend" }, font: n({ editType: "legend" }), grouptitlefont: n({ editType: "legend" }), orientation: { valType: "enumerated", values: ["v", "h"], dflt: "v", editType: "legend" }, traceorder: { valType: "flaglist", flags: ["reversed", "grouped"], extras: ["normal"], editType: "legend" }, tracegroupgap: { valType: "number", min: 0, dflt: 10, editType: "legend" }, entrywidth: { valType: "number", min: 0, editType: "legend" }, entrywidthmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "pixels", editType: "legend" }, indentation: { valType: "number", min: -15, dflt: 0, editType: "legend" }, itemsizing: { valType: "enumerated", values: ["trace", "constant"], dflt: "trace", editType: "legend" }, itemwidth: { valType: "number", min: 30, dflt: 30, editType: "legend" }, itemclick: { valType: "enumerated", values: ["toggle", "toggleothers", false], dflt: "toggle", editType: "legend" }, itemdoubleclick: { valType: "enumerated", values: ["toggle", "toggleothers", false], dflt: "toggleothers", editType: "legend" }, groupclick: { valType: "enumerated", values: ["toggleitem", "togglegroup"], dflt: "togglegroup", editType: "legend" }, x: { valType: "number", editType: "legend" }, xref: { valType: "enumerated", dflt: "paper", values: ["container", "paper"], editType: "layoutstyle" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left", editType: "legend" }, y: { valType: "number", editType: "legend" }, yref: { valType: "enumerated", dflt: "paper", values: ["container", "paper"], editType: "layoutstyle" }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], editType: "legend" }, uirevision: { valType: "any", editType: "none" }, valign: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "middle", editType: "legend" }, title: { text: { valType: "string", dflt: "", editType: "legend" }, font: n({ editType: "legend" }), side: { valType: "enumerated", values: ["top", "left", "top left", "top center", "top right"], editType: "legend" }, editType: "legend" }, editType: "legend" };
        }, 2783: function(e2) {
          e2.exports = { scrollBarWidth: 6, scrollBarMinHeight: 20, scrollBarColor: "#808BA4", scrollBarMargin: 4, scrollBarEnterAttrs: { rx: 20, ry: 3, width: 0, height: 0 }, titlePad: 2, itemGap: 5 };
        }, 3970: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809), i = r2(8032), o = r2(9829), l = r2(6405), s = r2(6704), c = r2(7599);
          function u(e3, t3, r3, u2) {
            var f = t3[e3] || {}, d = i.newContainer(r3, e3);
            function h(e4, t4) {
              return a.coerce(f, d, l, e4, t4);
            }
            var p = a.coerceFont(h, "font", r3.font);
            if (h("bgcolor", r3.paper_bgcolor), h("bordercolor"), h("visible")) {
              for (var v, g = function(e4, t4) {
                var r4 = v._input, n2 = v;
                return a.coerce(r4, n2, o, e4, t4);
              }, m = r3.font || {}, y = a.coerceFont(h, "grouptitlefont", m, { overrideDflt: { size: Math.round(1.1 * m.size) } }), x = 0, b = false, _ = "normal", w = (r3.shapes || []).filter(function(e4) {
                return e4.showlegend;
              }), T = u2.concat(w).filter(function(t4) {
                return e3 === (t4.legend || "legend");
              }), M = 0; M < T.length; M++) if ((v = T[M]).visible) {
                var k = v._isShape;
                (v.showlegend || v._dfltShowLegend && !(v._module && v._module.attributes && v._module.attributes.showlegend && false === v._module.attributes.showlegend.dflt)) && (x++, v.showlegend && (b = true, (!k && n.traceIs(v, "pie-like") || true === v._input.showlegend) && x++), a.coerceFont(g, "legendgrouptitle.font", y)), (!k && n.traceIs(v, "bar") && "stack" === r3.barmode || -1 !== ["tonextx", "tonexty"].indexOf(v.fill)) && (_ = c.isGrouped({ traceorder: _ }) ? "grouped+reversed" : "reversed"), void 0 !== v.legendgroup && "" !== v.legendgroup && (_ = c.isReversed({ traceorder: _ }) ? "reversed+grouped" : "grouped");
              }
              var A = a.coerce(t3, r3, s, "showlegend", b && x > ("legend" === e3 ? 1 : 0));
              if (false === A && (r3[e3] = void 0), (false !== A || f.uirevision) && (h("uirevision", r3.uirevision), false !== A)) {
                h("borderwidth");
                var L, S, C, O = "h" === h("orientation"), D = "paper" === h("yref"), P = "paper" === h("xref"), z = "left";
                if (O ? (L = 0, n.getComponentMethod("rangeslider", "isVisible")(t3.xaxis) ? D ? (S = 1.1, C = "bottom") : (S = 1, C = "top") : D ? (S = -0.1, C = "top") : (S = 0, C = "bottom")) : (S = 1, C = "auto", P ? L = 1.02 : (L = 1, z = "right")), a.coerce(f, d, { x: { valType: "number", editType: "legend", min: P ? -2 : 0, max: P ? 3 : 1, dflt: L } }, "x"), a.coerce(f, d, { y: { valType: "number", editType: "legend", min: D ? -2 : 0, max: D ? 3 : 1, dflt: S } }, "y"), h("traceorder", _), c.isGrouped(r3[e3]) && h("tracegroupgap"), h("entrywidth"), h("entrywidthmode"), h("indentation"), h("itemsizing"), h("itemwidth"), h("itemclick"), h("itemdoubleclick"), h("groupclick"), h("xanchor", z), h("yanchor", C), h("valign"), a.noneOrAll(f, d, ["x", "y"]), h("title.text")) {
                  h("title.side", O ? "left" : "top");
                  var I = a.extendFlat({}, p, { size: a.bigFont(p.size) });
                  a.coerceFont(h, "title.font", I);
                }
              }
            }
          }
          e2.exports = function(e3, t3, r3) {
            var n2, i2 = r3.slice(), o2 = t3.shapes;
            if (o2) for (n2 = 0; n2 < o2.length; n2++) {
              var l2 = o2[n2];
              if (l2.showlegend) {
                var s2 = { _input: l2._input, visible: l2.visible, showlegend: l2.showlegend, legend: l2.legend };
                i2.push(s2);
              }
            }
            var c2 = ["legend"];
            for (n2 = 0; n2 < i2.length; n2++) a.pushUnique(c2, i2[n2].legend);
            for (t3._legends = [], n2 = 0; n2 < c2.length; n2++) {
              var f = c2[n2];
              u(f, e3, t3, i2), t3[f] && t3[f].visible && (t3[f]._id = f), t3._legends.push(f);
            }
          };
        }, 6134: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = r2(4122), o = r2(3626), l = r2(8596), s = r2(4751), c = r2(2203), u = r2(8766), f = r2(635), d = r2(2165), h = r2(2783), p = r2(4530), v = p.LINE_SPACING, g = p.FROM_TL, m = p.FROM_BR, y = r2(851), x = r2(4375), b = r2(7599), _ = 1, w = /^legend[0-9]*$/;
          function T(e3, t3) {
            var r3, l2, d2 = t3 || {}, p2 = e3._fullLayout, w2 = P(d2), T2 = d2._inHover;
            if (T2 ? (l2 = d2.layer, r3 = "hover") : (l2 = p2._infolayer, r3 = w2), l2) {
              var L2;
              if (r3 += p2._uid, e3._legendMouseDownTime || (e3._legendMouseDownTime = 0), T2) {
                if (!d2.entries) return;
                L2 = y(d2.entries, d2);
              } else {
                for (var z = (e3.calcdata || []).slice(), I = p2.shapes, E = 0; E < I.length; E++) {
                  var R = I[E];
                  if (R.showlegend) {
                    var N = { _isShape: true, _fullInput: R, index: R._index, name: R.name || R.label.text || "shape " + R._index, legend: R.legend, legendgroup: R.legendgroup, legendgrouptitle: R.legendgrouptitle, legendrank: R.legendrank, legendwidth: R.legendwidth, showlegend: R.showlegend, visible: R.visible, opacity: R.opacity, mode: "line" === R.type ? "lines" : "markers", line: R.line, marker: { line: R.line, color: R.fillcolor, size: 12, symbol: "rect" === R.type ? "square" : "circle" === R.type ? "circle" : "hexagon2" } };
                    z.push([{ trace: N }]);
                  }
                }
                L2 = p2.showlegend && y(z, d2, p2._legends.length > 1);
              }
              var F = p2.hiddenlabels || [];
              if (!(T2 || p2.showlegend && L2.length)) return l2.selectAll("." + w2).remove(), p2._topdefs.select("#" + r3).remove(), i.autoMargin(e3, w2);
              var H = a.ensureSingle(l2, "g", w2, function(e4) {
                T2 || e4.attr("pointer-events", "all");
              }), B = a.ensureSingleById(p2._topdefs, "clipPath", r3, function(e4) {
                e4.append("rect");
              }), j = a.ensureSingle(H, "rect", "bg", function(e4) {
                e4.attr("shape-rendering", "crispEdges");
              });
              j.call(u.stroke, d2.bordercolor).call(u.fill, d2.bgcolor).style("stroke-width", d2.borderwidth + "px");
              var Y, V = a.ensureSingle(H, "g", "scrollbox"), U = d2.title;
              d2._titleWidth = 0, d2._titleHeight = 0, U.text ? ((Y = a.ensureSingle(V, "text", w2 + "titletext")).attr("text-anchor", "start").call(c.font, U.font).text(U.text), C(Y, V, e3, d2, _)) : V.selectAll("." + w2 + "titletext").remove();
              var q = a.ensureSingle(H, "rect", "scrollbar", function(e4) {
                e4.attr(h.scrollBarEnterAttrs).call(u.fill, h.scrollBarColor);
              }), G = V.selectAll("g.groups").data(L2);
              G.enter().append("g").attr("class", "groups"), G.exit().remove();
              var Z = G.selectAll("g.traces").data(a.identity);
              Z.enter().append("g").attr("class", "traces"), Z.exit().remove(), Z.style("opacity", function(e4) {
                var t4 = e4[0].trace;
                return o.traceIs(t4, "pie-like") ? -1 !== F.indexOf(e4[0].label) ? 0.5 : 1 : "legendonly" === t4.visible ? 0.5 : 1;
              }).each(function() {
                n.select(this).call(A, e3, d2);
              }).call(x, e3, d2).each(function() {
                T2 || n.select(this).call(S, e3, w2);
              }), a.syncOrAsync([i.previousPromises, function() {
                return function(e4, t4, r4, a2) {
                  var i2 = e4._fullLayout, o2 = P(a2);
                  a2 || (a2 = i2[o2]);
                  var l3 = i2._size, s2 = b.isVertical(a2), u2 = b.isGrouped(a2), f2 = "fraction" === a2.entrywidthmode, d3 = a2.borderwidth, p3 = 2 * d3, v2 = h.itemGap, g2 = a2.indentation + a2.itemwidth + 2 * v2, m2 = 2 * (d3 + v2), y2 = D(a2), x2 = a2.y < 0 || 0 === a2.y && "top" === y2, _2 = a2.y > 1 || 1 === a2.y && "bottom" === y2, w3 = a2.tracegroupgap, T3 = {};
                  a2._maxHeight = Math.max(x2 || _2 ? i2.height / 2 : l3.h, 30);
                  var k2 = 0;
                  a2._width = 0, a2._height = 0;
                  var A2 = function(e5) {
                    var t5 = 0, r5 = 0, n2 = e5.title.side;
                    return n2 && (-1 !== n2.indexOf("left") && (t5 = e5._titleWidth), -1 !== n2.indexOf("top") && (r5 = e5._titleHeight)), [t5, r5];
                  }(a2);
                  if (s2) r4.each(function(e5) {
                    var t5 = e5[0].height;
                    c.setTranslate(this, d3 + A2[0], d3 + A2[1] + a2._height + t5 / 2 + v2), a2._height += t5, a2._width = Math.max(a2._width, e5[0].width);
                  }), k2 = g2 + a2._width, a2._width += v2 + g2 + p3, a2._height += m2, u2 && (t4.each(function(e5, t5) {
                    c.setTranslate(this, 0, t5 * a2.tracegroupgap);
                  }), a2._height += (a2._lgroupsLength - 1) * a2.tracegroupgap);
                  else {
                    var L3 = O(a2), S2 = a2.x < 0 || 0 === a2.x && "right" === L3, C2 = a2.x > 1 || 1 === a2.x && "left" === L3, z2 = _2 || x2, I2 = i2.width / 2;
                    a2._maxWidth = Math.max(S2 ? z2 && "left" === L3 ? l3.l + l3.w : I2 : C2 ? z2 && "right" === L3 ? l3.r + l3.w : I2 : l3.w, 2 * g2);
                    var E2 = 0, R2 = 0;
                    r4.each(function(e5) {
                      var t5 = M(e5, a2, g2);
                      E2 = Math.max(E2, t5), R2 += t5;
                    }), k2 = null;
                    var N2 = 0;
                    if (u2) {
                      var F2 = 0, H2 = 0, B2 = 0;
                      t4.each(function() {
                        var e5 = 0, t5 = 0;
                        n.select(this).selectAll("g.traces").each(function(r6) {
                          var n2 = M(r6, a2, g2), i3 = r6[0].height;
                          c.setTranslate(this, A2[0], A2[1] + d3 + v2 + i3 / 2 + t5), t5 += i3, e5 = Math.max(e5, n2), T3[r6[0].trace.legendgroup] = e5;
                        });
                        var r5 = e5 + v2;
                        H2 > 0 && r5 + d3 + H2 > a2._maxWidth ? (N2 = Math.max(N2, H2), H2 = 0, B2 += F2 + w3, F2 = t5) : F2 = Math.max(F2, t5), c.setTranslate(this, H2, B2), H2 += r5;
                      }), a2._width = Math.max(N2, H2) + d3, a2._height = B2 + F2 + m2;
                    } else {
                      var j2 = r4.size(), Y2 = R2 + p3 + (j2 - 1) * v2 < a2._maxWidth, V2 = 0, U2 = 0, q2 = 0, G2 = 0;
                      r4.each(function(e5) {
                        var t5 = e5[0].height, r5 = M(e5, a2, g2), n2 = Y2 ? r5 : E2;
                        f2 || (n2 += v2), n2 + d3 + U2 - v2 >= a2._maxWidth && (N2 = Math.max(N2, G2), U2 = 0, q2 += V2, a2._height += V2, V2 = 0), c.setTranslate(this, A2[0] + d3 + U2, A2[1] + d3 + q2 + t5 / 2 + v2), G2 = U2 + r5 + v2, U2 += n2, V2 = Math.max(V2, t5);
                      }), Y2 ? (a2._width = U2 + p3, a2._height = V2 + m2) : (a2._width = Math.max(N2, G2) + p3, a2._height += V2 + m2);
                    }
                  }
                  a2._width = Math.ceil(Math.max(a2._width + A2[0], a2._titleWidth + 2 * (d3 + h.titlePad))), a2._height = Math.ceil(Math.max(a2._height + A2[1], a2._titleHeight + 2 * (d3 + h.itemGap))), a2._effHeight = Math.min(a2._height, a2._maxHeight);
                  var Z2 = e4._context.edits, W = Z2.legendText || Z2.legendPosition;
                  r4.each(function(e5) {
                    var t5 = n.select(this).select("." + o2 + "toggle"), r5 = e5[0].height, i3 = e5[0].trace.legendgroup, l4 = M(e5, a2, g2);
                    u2 && "" !== i3 && (l4 = T3[i3]);
                    var d4 = W ? g2 : k2 || l4;
                    s2 || f2 || (d4 += v2 / 2), c.setRect(t5, 0, -r5 / 2, d4, r5);
                  });
                }(e3, G, Z, d2);
              }, function() {
                var t4, u2, y2, x2, b2 = p2._size, _2 = d2.borderwidth, M2 = "paper" === d2.xref, A2 = "paper" === d2.yref;
                if (U.text && function(e4, t5, r4) {
                  if ("top center" === t5.title.side || "top right" === t5.title.side) {
                    var n2 = t5.title.font.size * v, a2 = 0, i2 = e4.node(), o2 = c.bBox(i2).width;
                    "top center" === t5.title.side ? a2 = 0.5 * (t5._width - 2 * r4 - 2 * h.titlePad - o2) : "top right" === t5.title.side && (a2 = t5._width - 2 * r4 - 2 * h.titlePad - o2), f.positionText(e4, r4 + h.titlePad + a2, r4 + n2);
                  }
                }(Y, d2, _2), !T2) {
                  var L3, S2;
                  L3 = M2 ? b2.l + b2.w * d2.x - g[O(d2)] * d2._width : p2.width * d2.x - g[O(d2)] * d2._width, S2 = A2 ? b2.t + b2.h * (1 - d2.y) - g[D(d2)] * d2._effHeight : p2.height * (1 - d2.y) - g[D(d2)] * d2._effHeight;
                  var C2 = function(e4, t5, r4, n2) {
                    var a2 = e4._fullLayout, o2 = a2[t5], l3 = O(o2), s2 = D(o2), c2 = "paper" === o2.xref, u3 = "paper" === o2.yref;
                    e4._fullLayout._reservedMargin[t5] = {};
                    var f2 = o2.y < 0.5 ? "b" : "t", d3 = o2.x < 0.5 ? "l" : "r", h2 = { r: a2.width - r4, l: r4 + o2._width, b: a2.height - n2, t: n2 + o2._effHeight };
                    if (c2 && u3) return i.autoMargin(e4, t5, { x: o2.x, y: o2.y, l: o2._width * g[l3], r: o2._width * m[l3], b: o2._effHeight * m[s2], t: o2._effHeight * g[s2] });
                    c2 ? e4._fullLayout._reservedMargin[t5][f2] = h2[f2] : u3 || "v" === o2.orientation ? e4._fullLayout._reservedMargin[t5][d3] = h2[d3] : e4._fullLayout._reservedMargin[t5][f2] = h2[f2];
                  }(e3, w2, L3, S2);
                  if (C2) return;
                  if (p2.margin.autoexpand) {
                    var P2 = L3, z2 = S2;
                    L3 = M2 ? a.constrain(L3, 0, p2.width - d2._width) : P2, S2 = A2 ? a.constrain(S2, 0, p2.height - d2._effHeight) : z2, L3 !== P2 && a.log("Constrain " + w2 + ".x to make legend fit inside graph"), S2 !== z2 && a.log("Constrain " + w2 + ".y to make legend fit inside graph");
                  }
                  c.setTranslate(H, L3, S2);
                }
                if (q.on(".drag", null), H.on("wheel", null), T2 || d2._height <= d2._maxHeight || e3._context.staticPlot) {
                  var I2 = d2._effHeight;
                  T2 && (I2 = d2._height), j.attr({ width: d2._width - _2, height: I2 - _2, x: _2 / 2, y: _2 / 2 }), c.setTranslate(V, 0, 0), B.select("rect").attr({ width: d2._width - 2 * _2, height: I2 - 2 * _2, x: _2, y: _2 }), c.setClipUrl(V, r3, e3), c.setRect(q, 0, 0, 0, 0), delete d2._scrollY;
                } else {
                  var E2, R2, N2, F2 = Math.max(h.scrollBarMinHeight, d2._effHeight * d2._effHeight / d2._height), G2 = d2._effHeight - F2 - 2 * h.scrollBarMargin, Z2 = d2._height - d2._effHeight, W = G2 / Z2, J = Math.min(d2._scrollY || 0, Z2);
                  j.attr({ width: d2._width - 2 * _2 + h.scrollBarWidth + h.scrollBarMargin, height: d2._effHeight - _2, x: _2 / 2, y: _2 / 2 }), B.select("rect").attr({ width: d2._width - 2 * _2 + h.scrollBarWidth + h.scrollBarMargin, height: d2._effHeight - 2 * _2, x: _2, y: _2 + J }), c.setClipUrl(V, r3, e3), Q(J, F2, W), H.on("wheel", function() {
                    Q(J = a.constrain(d2._scrollY + n.event.deltaY / G2 * Z2, 0, Z2), F2, W), 0 !== J && J !== Z2 && n.event.preventDefault();
                  });
                  var X = n.behavior.drag().on("dragstart", function() {
                    var e4 = n.event.sourceEvent;
                    E2 = "touchstart" === e4.type ? e4.changedTouches[0].clientY : e4.clientY, N2 = J;
                  }).on("drag", function() {
                    var e4 = n.event.sourceEvent;
                    2 === e4.buttons || e4.ctrlKey || (R2 = "touchmove" === e4.type ? e4.changedTouches[0].clientY : e4.clientY, J = function(e5, t5, r4) {
                      var n2 = (r4 - t5) / W + e5;
                      return a.constrain(n2, 0, Z2);
                    }(N2, E2, R2), Q(J, F2, W));
                  });
                  q.call(X);
                  var K = n.behavior.drag().on("dragstart", function() {
                    var e4 = n.event.sourceEvent;
                    "touchstart" === e4.type && (E2 = e4.changedTouches[0].clientY, N2 = J);
                  }).on("drag", function() {
                    var e4 = n.event.sourceEvent;
                    "touchmove" === e4.type && (R2 = e4.changedTouches[0].clientY, J = function(e5, t5, r4) {
                      var n2 = (t5 - r4) / W + e5;
                      return a.constrain(n2, 0, Z2);
                    }(N2, E2, R2), Q(J, F2, W));
                  });
                  V.call(K);
                }
                function Q(t5, r4, n2) {
                  d2._scrollY = e3._fullLayout[w2]._scrollY = t5, c.setTranslate(V, 0, -t5), c.setRect(q, d2._width, h.scrollBarMargin + t5 * n2, h.scrollBarWidth, r4), B.select("rect").attr("y", _2 + t5);
                }
                e3._context.edits.legendPosition && (H.classed("cursor-move", true), s.init({ element: H.node(), gd: e3, prepFn: function(e4) {
                  if (e4.target !== q.node()) {
                    var t5 = c.getTranslate(H);
                    y2 = t5.x, x2 = t5.y;
                  }
                }, moveFn: function(e4, r4) {
                  if (void 0 !== y2 && void 0 !== x2) {
                    var n2 = y2 + e4, a2 = x2 + r4;
                    c.setTranslate(H, n2, a2), t4 = s.align(n2, d2._width, b2.l, b2.l + b2.w, d2.xanchor), u2 = s.align(a2 + d2._height, -d2._height, b2.t + b2.h, b2.t, d2.yanchor);
                  }
                }, doneFn: function() {
                  if (void 0 !== t4 && void 0 !== u2) {
                    var r4 = {};
                    r4[w2 + ".x"] = t4, r4[w2 + ".y"] = u2, o.call("_guiRelayout", e3, r4);
                  }
                }, clickFn: function(t5, r4) {
                  var n2 = l2.selectAll("g.traces").filter(function() {
                    var e4 = this.getBoundingClientRect();
                    return r4.clientX >= e4.left && r4.clientX <= e4.right && r4.clientY >= e4.top && r4.clientY <= e4.bottom;
                  });
                  n2.size() > 0 && k(e3, H, n2, t5, r4);
                } }));
              }], e3);
            }
          }
          function M(e3, t3, r3) {
            var n2 = e3[0], a2 = n2.width, i2 = t3.entrywidthmode, o2 = n2.trace.legendwidth || t3.entrywidth;
            return "fraction" === i2 ? t3._maxWidth * o2 : r3 + (o2 || a2);
          }
          function k(e3, t3, r3, n2, a2) {
            var i2 = r3.data()[0][0].trace, s2 = { event: a2, node: r3.node(), curveNumber: i2.index, expandedIndex: i2._expandedIndex, data: e3.data, layout: e3.layout, frames: e3._transitionData._frames, config: e3._context, fullData: e3._fullData, fullLayout: e3._fullLayout };
            i2._group && (s2.group = i2._group), o.traceIs(i2, "pie-like") && (s2.label = r3.datum()[0].label);
            var c2 = l.triggerHandler(e3, "plotly_legendclick", s2);
            if (1 === n2) {
              if (false === c2) return;
              t3._clickTimeout = setTimeout(function() {
                e3._fullLayout && d(r3, e3, n2);
              }, e3._context.doubleClickDelay);
            } else 2 === n2 && (t3._clickTimeout && clearTimeout(t3._clickTimeout), e3._legendMouseDownTime = 0, false !== l.triggerHandler(e3, "plotly_legenddoubleclick", s2) && false !== c2 && d(r3, e3, n2));
          }
          function A(e3, t3, r3) {
            var n2, i2, l2 = P(r3), s2 = e3.data()[0][0], u2 = s2.trace, d2 = o.traceIs(u2, "pie-like"), p2 = !r3._inHover && t3._context.edits.legendText && !d2, v2 = r3._maxNameLength;
            s2.groupTitle ? (n2 = s2.groupTitle.text, i2 = s2.groupTitle.font) : (i2 = r3.font, r3.entries ? n2 = s2.text : (n2 = d2 ? s2.label : u2.name, u2._meta && (n2 = a.templateString(n2, u2._meta))));
            var g2 = a.ensureSingle(e3, "text", l2 + "text");
            g2.attr("text-anchor", "start").call(c.font, i2).text(p2 ? L(n2, v2) : n2);
            var m2 = r3.indentation + r3.itemwidth + 2 * h.itemGap;
            f.positionText(g2, m2, 0), p2 ? g2.call(f.makeEditable, { gd: t3, text: n2 }).call(C, e3, t3, r3).on("edit", function(n3) {
              this.text(L(n3, v2)).call(C, e3, t3, r3);
              var i3 = s2.trace._fullInput || {}, l3 = {};
              if (o.hasTransform(i3, "groupby")) {
                var c2 = o.getTransformIndices(i3, "groupby"), f2 = c2[c2.length - 1], d3 = a.keyedContainer(i3, "transforms[" + f2 + "].styles", "target", "value.name");
                d3.set(s2.trace._group, n3), l3 = d3.constructUpdate();
              } else l3.name = n3;
              return i3._isShape ? o.call("_guiRelayout", t3, "shapes[" + u2.index + "].name", l3.name) : o.call("_guiRestyle", t3, l3, u2.index);
            }) : C(g2, e3, t3, r3);
          }
          function L(e3, t3) {
            var r3 = Math.max(4, t3);
            if (e3 && e3.trim().length >= r3 / 2) return e3;
            for (var n2 = r3 - (e3 = e3 || "").length; n2 > 0; n2--) e3 += " ";
            return e3;
          }
          function S(e3, t3, r3) {
            var i2, o2 = t3._context.doubleClickDelay, l2 = 1, s2 = a.ensureSingle(e3, "rect", r3 + "toggle", function(e4) {
              t3._context.staticPlot || e4.style("cursor", "pointer").attr("pointer-events", "all"), e4.call(u.fill, "rgba(0,0,0,0)");
            });
            t3._context.staticPlot || (s2.on("mousedown", function() {
              (i2 = (/* @__PURE__ */ new Date()).getTime()) - t3._legendMouseDownTime < o2 ? l2 += 1 : (l2 = 1, t3._legendMouseDownTime = i2);
            }), s2.on("mouseup", function() {
              if (!t3._dragged && !t3._editing) {
                var a2 = t3._fullLayout[r3];
                (/* @__PURE__ */ new Date()).getTime() - t3._legendMouseDownTime > o2 && (l2 = Math.max(l2 - 1, 1)), k(t3, a2, e3, l2, n.event);
              }
            }));
          }
          function C(e3, t3, r3, n2, a2) {
            n2._inHover && e3.attr("data-notex", true), f.convertToTspans(e3, r3, function() {
              !function(e4, t4, r4, n3) {
                var a3 = e4.data()[0][0];
                if (r4._inHover || !a3 || a3.trace.showlegend) {
                  var i2 = e4.select("g[class*=math-group]"), o2 = i2.node(), l2 = P(r4);
                  r4 || (r4 = t4._fullLayout[l2]);
                  var s2, u2, d2 = r4.borderwidth, p2 = (n3 === _ ? r4.title.font : a3.groupTitle ? a3.groupTitle.font : r4.font).size * v;
                  if (o2) {
                    var g2 = c.bBox(o2);
                    s2 = g2.height, u2 = g2.width, n3 === _ ? c.setTranslate(i2, d2, d2 + 0.75 * s2) : c.setTranslate(i2, 0, 0.25 * s2);
                  } else {
                    var m2 = "." + l2 + (n3 === _ ? "title" : "") + "text", y2 = e4.select(m2), x2 = f.lineCount(y2), b2 = y2.node();
                    if (s2 = p2 * x2, u2 = b2 ? c.bBox(b2).width : 0, n3 === _) "left" === r4.title.side && (u2 += 2 * h.itemGap), f.positionText(y2, d2 + h.titlePad, d2 + p2);
                    else {
                      var w2 = 2 * h.itemGap + r4.indentation + r4.itemwidth;
                      a3.groupTitle && (w2 = h.itemGap, u2 -= r4.indentation + r4.itemwidth), f.positionText(y2, w2, -p2 * ((x2 - 1) / 2 - 0.3));
                    }
                  }
                  n3 === _ ? (r4._titleWidth = u2, r4._titleHeight = s2) : (a3.lineHeight = p2, a3.height = Math.max(s2, 16) + 3, a3.width = u2);
                } else e4.remove();
              }(t3, r3, n2, a2);
            });
          }
          function O(e3) {
            return a.isRightAnchor(e3) ? "right" : a.isCenterAnchor(e3) ? "center" : "left";
          }
          function D(e3) {
            return a.isBottomAnchor(e3) ? "bottom" : a.isMiddleAnchor(e3) ? "middle" : "top";
          }
          function P(e3) {
            return e3._id || "legend";
          }
          e2.exports = function(e3, t3) {
            if (t3) T(e3, t3);
            else {
              var r3 = e3._fullLayout, a2 = r3._legends;
              r3._infolayer.selectAll('[class^="legend"]').each(function() {
                var e4 = n.select(this), t4 = e4.attr("class").split(" ")[0];
                t4.match(w) && -1 === a2.indexOf(t4) && e4.remove();
              });
              for (var i2 = 0; i2 < a2.length; i2++) {
                var o2 = a2[i2];
                T(e3, e3._fullLayout[o2]);
              }
            }
          };
        }, 851: function(e2, t2, r2) {
          var n = r2(3626), a = r2(7599);
          e2.exports = function(e3, t3, r3) {
            var i, o, l = t3._inHover, s = a.isGrouped(t3), c = a.isReversed(t3), u = {}, f = [], d = false, h = {}, p = 0, v = 0;
            function g(e4, n2, i2) {
              if (false !== t3.visible && (!r3 || e4 === t3._id)) if ("" !== n2 && a.isGrouped(t3)) -1 === f.indexOf(n2) ? (f.push(n2), d = true, u[n2] = [i2]) : u[n2].push(i2);
              else {
                var o2 = "~~i" + p;
                f.push(o2), u[o2] = [i2], p++;
              }
            }
            for (i = 0; i < e3.length; i++) {
              var m = e3[i], y = m[0], x = y.trace, b = x.legend, _ = x.legendgroup;
              if (l || x.visible && x.showlegend) if (n.traceIs(x, "pie-like")) for (h[_] || (h[_] = {}), o = 0; o < m.length; o++) {
                var w = m[o].label;
                h[_][w] || (g(b, _, { label: w, color: m[o].color, i: m[o].i, trace: x, pts: m[o].pts }), h[_][w] = true, v = Math.max(v, (w || "").length));
              }
              else g(b, _, y), v = Math.max(v, (x.name || "").length);
            }
            if (!f.length) return [];
            var T = !d || !s, M = [];
            for (i = 0; i < f.length; i++) {
              var k = u[f[i]];
              T ? M.push(k[0]) : M.push(k);
            }
            for (T && (M = [M]), i = 0; i < M.length; i++) {
              var A = 1 / 0;
              for (o = 0; o < M[i].length; o++) {
                var L = M[i][o].trace.legendrank;
                A > L && (A = L);
              }
              M[i][0]._groupMinRank = A, M[i][0]._preGroupSort = i;
            }
            var S = function(e4, t4) {
              return e4.trace.legendrank - t4.trace.legendrank || e4._preSort - t4._preSort;
            };
            for (M.forEach(function(e4, t4) {
              e4[0]._preGroupSort = t4;
            }), M.sort(function(e4, t4) {
              return e4[0]._groupMinRank - t4[0]._groupMinRank || e4[0]._preGroupSort - t4[0]._preGroupSort;
            }), i = 0; i < M.length; i++) {
              M[i].forEach(function(e4, t4) {
                e4._preSort = t4;
              }), M[i].sort(S);
              var C = M[i][0].trace, O = null;
              for (o = 0; o < M[i].length; o++) {
                var D = M[i][o].trace.legendgrouptitle;
                if (D && D.text) {
                  O = D, l && (D.font = t3._groupTitleFont);
                  break;
                }
              }
              if (c && M[i].reverse(), O) {
                var P = false;
                for (o = 0; o < M[i].length; o++) if (n.traceIs(M[i][o].trace, "pie-like")) {
                  P = true;
                  break;
                }
                M[i].unshift({ i: -1, groupTitle: O, noClick: P, trace: { showlegend: C.showlegend, legendgroup: C.legendgroup, visible: "toggleitem" === t3.groupclick || C.visible } });
              }
              for (o = 0; o < M[i].length; o++) M[i][o] = [M[i][o]];
            }
            return t3._lgroupsLength = M.length, t3._maxNameLength = v, M;
          };
        }, 2165: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809), i = a.pushUnique, o = true;
          e2.exports = function(e3, t3, r3) {
            var l = t3._fullLayout;
            if (!t3._dragged && !t3._editing) {
              var s, c = l.legend.itemclick, u = l.legend.itemdoubleclick, f = l.legend.groupclick;
              if (1 === r3 && "toggle" === c && "toggleothers" === u && o && t3.data && t3._context.showTips ? (a.notifier(a._(t3, "Double-click on legend to isolate one trace"), "long"), o = false) : o = false, 1 === r3 ? s = c : 2 === r3 && (s = u), s) {
                var d = "togglegroup" === f, h = l.hiddenlabels ? l.hiddenlabels.slice() : [], p = e3.data()[0][0];
                if (!p.groupTitle || !p.noClick) {
                  var v = t3._fullData, g = (l.shapes || []).filter(function(e4) {
                    return e4.showlegend;
                  }), m = v.concat(g), y = p.trace;
                  y._isShape && (y = y._fullInput);
                  var x, b, _, w, T, M = y.legendgroup, k = {}, A = [], L = [], S = [], C = (l.shapes || []).map(function(e4) {
                    return e4._input;
                  }), O = false, D = y.legend, P = y._fullInput;
                  if (P && P._isShape || !n.traceIs(y, "pie-like")) {
                    var z, I = M && M.length, E = [];
                    if (I) for (x = 0; x < m.length; x++) (z = m[x]).visible && z.legendgroup === M && E.push(x);
                    if ("toggle" === s) {
                      var R;
                      switch (y.visible) {
                        case true:
                          R = "legendonly";
                          break;
                        case false:
                          R = false;
                          break;
                        case "legendonly":
                          R = true;
                      }
                      if (I) if (d) for (x = 0; x < m.length; x++) {
                        var N = m[x];
                        false !== N.visible && N.legendgroup === M && ee(N, R);
                      }
                      else ee(y, R);
                      else ee(y, R);
                    } else if ("toggleothers" === s) {
                      var F, H, B, j, Y = true;
                      for (x = 0; x < m.length; x++) if (F = (j = m[x]) === y, H = true !== j.showlegend, !(F || H || I && j.legendgroup === M || j.legend !== D || true !== j.visible || n.traceIs(j, "notLegendIsolatable"))) {
                        Y = false;
                        break;
                      }
                      for (x = 0; x < m.length; x++) if (false !== (j = m[x]).visible && j.legend === D && !n.traceIs(j, "notLegendIsolatable")) switch (y.visible) {
                        case "legendonly":
                          ee(j, true);
                          break;
                        case true:
                          B = !!Y || "legendonly", F = j === y, H = true !== j.showlegend && !j.legendgroup, ee(j, !!(F || I && j.legendgroup === M || H) || B);
                      }
                    }
                    for (x = 0; x < L.length; x++) if (_ = L[x]) {
                      var V = _.constructUpdate(), U = Object.keys(V);
                      for (b = 0; b < U.length; b++) w = U[b], (k[w] = k[w] || [])[S[x]] = V[w];
                    }
                    for (T = Object.keys(k), x = 0; x < T.length; x++) for (w = T[x], b = 0; b < A.length; b++) k[w].hasOwnProperty(b) || (k[w][b] = void 0);
                    O ? n.call("_guiUpdate", t3, k, { shapes: C }, A) : n.call("_guiRestyle", t3, k, A);
                  } else {
                    var q = p.label, G = h.indexOf(q);
                    if ("toggle" === s) -1 === G ? h.push(q) : h.splice(G, 1);
                    else if ("toggleothers" === s) {
                      var Z = -1 !== G, W = [];
                      for (x = 0; x < t3.calcdata.length; x++) {
                        var J = t3.calcdata[x];
                        for (b = 0; b < J.length; b++) {
                          var X = J[b].label;
                          D === J[0].trace.legend && q !== X && (-1 === h.indexOf(X) && (Z = true), i(h, X), W.push(X));
                        }
                      }
                      if (!Z) for (var K = 0; K < W.length; K++) {
                        var Q = h.indexOf(W[K]);
                        -1 !== Q && h.splice(Q, 1);
                      }
                    }
                    n.call("_guiRelayout", t3, "hiddenlabels", h);
                  }
                }
              }
            }
            function $(e4, t4) {
              var r4 = A.indexOf(e4), n2 = k.visible;
              return n2 || (n2 = k.visible = []), -1 === A.indexOf(e4) && (A.push(e4), r4 = A.length - 1), n2[r4] = t4, r4;
            }
            function ee(e4, t4) {
              if (!p.groupTitle || d) {
                var r4, i2 = e4._fullInput || e4, o2 = i2._isShape, l2 = i2.index;
                if (void 0 === l2 && (l2 = i2._index), n.hasTransform(i2, "groupby")) {
                  var s2 = L[l2];
                  if (!s2) {
                    var c2 = n.getTransformIndices(i2, "groupby"), u2 = c2[c2.length - 1];
                    s2 = a.keyedContainer(i2, "transforms[" + u2 + "].styles", "target", "value.visible"), L[l2] = s2;
                  }
                  var f2 = s2.get(e4._group);
                  void 0 === f2 && (f2 = true), false !== f2 && s2.set(e4._group, t4), S[l2] = $(l2, false !== i2.visible);
                } else {
                  var h2 = false !== i2.visible && t4;
                  o2 ? (r4 = h2, C[l2].visible = r4, O = true) : $(l2, h2);
                }
              }
            }
          };
        }, 7599: function(e2, t2) {
          t2.isGrouped = function(e3) {
            return -1 !== (e3.traceorder || "").indexOf("grouped");
          }, t2.isVertical = function(e3) {
            return "h" !== e3.orientation;
          }, t2.isReversed = function(e3) {
            return -1 !== (e3.traceorder || "").indexOf("reversed");
          };
        }, 2494: function(e2, t2, r2) {
          e2.exports = { moduleType: "component", name: "legend", layoutAttributes: r2(6405), supplyLayoutDefaults: r2(3970), draw: r2(6134), style: r2(4375) };
        }, 4375: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4809), o = i.strTranslate, l = r2(2203), s = r2(8766), c = r2(5477).extractOpts, u = r2(4726), f = r2(2891), d = r2(7252).castOption, h = r2(2783);
          function p(e3, t3) {
            return (t3 ? "radial" : "horizontal") + (e3 ? "" : "reversed");
          }
          function v(e3) {
            var t3 = e3[0].trace, r3 = t3.contours, n2 = u.hasLines(t3), a2 = u.hasMarkers(t3), i2 = t3.visible && t3.fill && "none" !== t3.fill, o2 = false, l2 = false;
            if (r3) {
              var s2 = r3.coloring;
              "lines" === s2 ? o2 = true : n2 = "none" === s2 || "heatmap" === s2 || r3.showlines, "constraint" === r3.type ? i2 = "=" !== r3._operation : "fill" !== s2 && "heatmap" !== s2 || (l2 = true);
            }
            return { showMarker: a2, showLine: n2, showFill: i2, showGradientLine: o2, showGradientFill: l2, anyLine: n2 || o2, anyFill: i2 || l2 };
          }
          function g(e3, t3, r3) {
            return e3 && i.isArrayOrTypedArray(e3) ? t3 : e3 > r3 ? r3 : e3;
          }
          e2.exports = function(e3, t3, r3) {
            var m = t3._fullLayout;
            r3 || (r3 = m.legend);
            var y = "constant" === r3.itemsizing, x = r3.itemwidth, b = (x + 2 * h.itemGap) / 2, _ = o(b, 0), w = function(e4, t4, r4, n2) {
              var a2;
              if (e4 + 1) a2 = e4;
              else {
                if (!(t4 && t4.width > 0)) return 0;
                a2 = t4.width;
              }
              return y ? n2 : Math.min(a2, r4);
            };
            function T(e4, i2, o2) {
              var u2 = e4[0].trace, f2 = u2.marker || {}, d2 = f2.line || {}, h2 = f2.cornerradius ? "M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z" : "M6,6H-6V-6H6Z", p2 = o2 ? u2.visible && u2.type === o2 : a.traceIs(u2, "bar"), v2 = n.select(i2).select("g.legendpoints").selectAll("path.legend" + o2).data(p2 ? [e4] : []);
              v2.enter().append("path").classed("legend" + o2, true).attr("d", h2).attr("transform", _), v2.exit().remove(), v2.each(function(e5) {
                var a2 = n.select(this), i3 = e5[0], o3 = w(i3.mlw, f2.line, 5, 2);
                a2.style("stroke-width", o3 + "px");
                var h3 = i3.mcc;
                if (!r3._inHover && "mc" in i3) {
                  var p3 = c(f2), v3 = p3.mid;
                  void 0 === v3 && (v3 = (p3.max + p3.min) / 2), h3 = l.tryColorscale(f2, "")(v3);
                }
                var m2 = h3 || i3.mc || f2.color, y2 = f2.pattern, x2 = y2 && l.getPatternAttr(y2.shape, 0, "");
                if (x2) {
                  var b2 = l.getPatternAttr(y2.bgcolor, 0, null), _2 = l.getPatternAttr(y2.fgcolor, 0, null), T2 = y2.fgopacity, M2 = g(y2.size, 8, 10), k = g(y2.solidity, 0.5, 1), A = "legend-" + u2.uid;
                  a2.call(l.pattern, "legend", t3, A, x2, M2, k, h3, y2.fillmode, b2, _2, T2);
                } else a2.call(s.fill, m2);
                o3 && s.stroke(a2, i3.mlc || d2.color);
              });
            }
            function M(e4, r4, o2) {
              var l2 = e4[0], s2 = l2.trace, c2 = o2 ? s2.visible && s2.type === o2 : a.traceIs(s2, o2), u2 = n.select(r4).select("g.legendpoints").selectAll("path.legend" + o2).data(c2 ? [e4] : []);
              if (u2.enter().append("path").classed("legend" + o2, true).attr("d", "M6,6H-6V-6H6Z").attr("transform", _), u2.exit().remove(), u2.size()) {
                var h2 = s2.marker || {}, p2 = w(d(h2.line.width, l2.pts), h2.line, 5, 2), v2 = "pieLike", g2 = i.minExtend(s2, { marker: { line: { width: p2 } } }, v2), m2 = i.minExtend(l2, { trace: g2 }, v2);
                f(u2, m2, g2, t3);
              }
            }
            e3.each(function(e4) {
              var t4 = n.select(this), a2 = i.ensureSingle(t4, "g", "layers");
              a2.style("opacity", e4[0].trace.opacity);
              var l2 = r3.indentation, s2 = r3.valign, c2 = e4[0].lineHeight, u2 = e4[0].height;
              if ("middle" === s2 && 0 === l2 || !c2 || !u2) a2.attr("transform", null);
              else {
                var f2 = { top: 1, bottom: -1 }[s2] * (0.5 * (c2 - u2 + 3)) || 0, d2 = r3.indentation;
                a2.attr("transform", o(d2, f2));
              }
              a2.selectAll("g.legendfill").data([e4]).enter().append("g").classed("legendfill", true), a2.selectAll("g.legendlines").data([e4]).enter().append("g").classed("legendlines", true);
              var h2 = a2.selectAll("g.legendsymbols").data([e4]);
              h2.enter().append("g").classed("legendsymbols", true), h2.selectAll("g.legendpoints").data([e4]).enter().append("g").classed("legendpoints", true);
            }).each(function(e4) {
              var r4, a2 = e4[0].trace, o2 = [];
              if (a2.visible) switch (a2.type) {
                case "histogram2d":
                case "heatmap":
                  o2 = [["M-15,-2V4H15V-2Z"]], r4 = true;
                  break;
                case "choropleth":
                case "choroplethmapbox":
                case "choroplethmap":
                  o2 = [["M-6,-6V6H6V-6Z"]], r4 = true;
                  break;
                case "densitymapbox":
                case "densitymap":
                  o2 = [["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]], r4 = "radial";
                  break;
                case "cone":
                  o2 = [["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"], ["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"], ["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]], r4 = false;
                  break;
                case "streamtube":
                  o2 = [["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"], ["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"], ["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]], r4 = false;
                  break;
                case "surface":
                  o2 = [["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"], ["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]], r4 = true;
                  break;
                case "mesh3d":
                  o2 = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"]], r4 = false;
                  break;
                case "volume":
                  o2 = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"]], r4 = true;
                  break;
                case "isosurface":
                  o2 = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]], r4 = false;
              }
              var u2 = n.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(o2);
              u2.enter().append("path").classed("legend3dandfriends", true).attr("transform", _).style("stroke-miterlimit", 1), u2.exit().remove(), u2.each(function(e5, o3) {
                var u3, f2 = n.select(this), d2 = c(a2), h2 = d2.colorscale, v2 = d2.reversescale;
                if (h2) {
                  if (!r4) {
                    var g2 = h2.length;
                    u3 = 0 === o3 ? h2[v2 ? g2 - 1 : 0][1] : 1 === o3 ? h2[v2 ? 0 : g2 - 1][1] : h2[Math.floor((g2 - 1) / 2)][1];
                  }
                } else {
                  var m2 = a2.vertexcolor || a2.facecolor || a2.color;
                  u3 = i.isArrayOrTypedArray(m2) ? m2[o3] || m2[0] : m2;
                }
                f2.attr("d", e5[0]), u3 ? f2.call(s.fill, u3) : f2.call(function(e6) {
                  if (e6.size()) {
                    var n2 = "legendfill-" + a2.uid;
                    l.gradient(e6, t3, n2, p(v2, "radial" === r4), h2, "fill");
                  }
                });
              });
            }).each(function(e4) {
              var t4 = e4[0].trace, r4 = "waterfall" === t4.type;
              if (e4[0]._distinct && r4) {
                var a2 = e4[0].trace[e4[0].dir].marker;
                return e4[0].mc = a2.color, e4[0].mlw = a2.line.width, e4[0].mlc = a2.line.color, T(e4, this, "waterfall");
              }
              var i2 = [];
              t4.visible && r4 && (i2 = e4[0].hasTotals ? [["increasing", "M-6,-6V6H0Z"], ["totals", "M6,6H0L-6,-6H-0Z"], ["decreasing", "M6,6V-6H0Z"]] : [["increasing", "M-6,-6V6H6Z"], ["decreasing", "M6,6V-6H-6Z"]]);
              var o2 = n.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(i2);
              o2.enter().append("path").classed("legendwaterfall", true).attr("transform", _).style("stroke-miterlimit", 1), o2.exit().remove(), o2.each(function(e5) {
                var r5 = n.select(this), a3 = t4[e5[0]].marker, i3 = w(void 0, a3.line, 5, 2);
                r5.attr("d", e5[1]).style("stroke-width", i3 + "px").call(s.fill, a3.color), i3 && r5.call(s.stroke, a3.line.color);
              });
            }).each(function(e4) {
              T(e4, this, "funnel");
            }).each(function(e4) {
              T(e4, this);
            }).each(function(e4) {
              var r4 = e4[0].trace, o2 = n.select(this).select("g.legendpoints").selectAll("path.legendbox").data(r4.visible && a.traceIs(r4, "box-violin") ? [e4] : []);
              o2.enter().append("path").classed("legendbox", true).attr("d", "M6,6H-6V-6H6Z").attr("transform", _), o2.exit().remove(), o2.each(function() {
                var e5 = n.select(this);
                if ("all" !== r4.boxpoints && "all" !== r4.points || 0 !== s.opacity(r4.fillcolor) || 0 !== s.opacity((r4.line || {}).color)) {
                  var a2 = w(void 0, r4.line, 5, 2);
                  e5.style("stroke-width", a2 + "px").call(s.fill, r4.fillcolor), a2 && s.stroke(e5, r4.line.color);
                } else {
                  var c2 = i.minExtend(r4, { marker: { size: y ? 12 : i.constrain(r4.marker.size, 2, 16), sizeref: 1, sizemin: 1, sizemode: "diameter" } });
                  o2.call(l.pointStyle, c2, t3);
                }
              });
            }).each(function(e4) {
              M(e4, this, "funnelarea");
            }).each(function(e4) {
              M(e4, this, "pie");
            }).each(function(e4) {
              var r4, a2, o2 = v(e4), s2 = o2.showFill, f2 = o2.showLine, d2 = o2.showGradientLine, h2 = o2.showGradientFill, g2 = o2.anyFill, m2 = o2.anyLine, y2 = e4[0], b2 = y2.trace, _2 = c(b2), T2 = _2.colorscale, M2 = _2.reversescale, k = u.hasMarkers(b2) || !g2 ? "M5,0" : m2 ? "M5,-2" : "M5,-3", A = n.select(this), L = A.select(".legendfill").selectAll("path").data(s2 || h2 ? [e4] : []);
              if (L.enter().append("path").classed("js-fill", true), L.exit().remove(), L.attr("d", k + "h" + x + "v6h-" + x + "z").call(function(e5) {
                if (e5.size()) if (s2) l.fillGroupStyle(e5, t3, true);
                else {
                  var r5 = "legendfill-" + b2.uid;
                  l.gradient(e5, t3, r5, p(M2), T2, "fill");
                }
              }), f2 || d2) {
                var S = w(void 0, b2.line, 10, 5);
                a2 = i.minExtend(b2, { line: { width: S } }), r4 = [i.minExtend(y2, { trace: a2 })];
              }
              var C = A.select(".legendlines").selectAll("path").data(f2 || d2 ? [r4] : []);
              C.enter().append("path").classed("js-line", true), C.exit().remove(), C.attr("d", k + (d2 ? "l" + x + ",0.0001" : "h" + x)).call(f2 ? l.lineGroupStyle : function(e5) {
                if (e5.size()) {
                  var r5 = "legendline-" + b2.uid;
                  l.lineGroupStyle(e5), l.gradient(e5, t3, r5, p(M2), T2, "stroke");
                }
              });
            }).each(function(e4) {
              var r4, a2, o2 = v(e4), s2 = o2.anyFill, c2 = o2.anyLine, f2 = o2.showLine, d2 = o2.showMarker, h2 = e4[0], p2 = h2.trace, g2 = !d2 && !c2 && !s2 && u.hasText(p2);
              function m2(e5, t4, r5, n2) {
                var a3 = i.nestedProperty(p2, e5).get(), o3 = i.isArrayOrTypedArray(a3) && t4 ? t4(a3) : a3;
                if (y && o3 && void 0 !== n2 && (o3 = n2), r5) {
                  if (o3 < r5[0]) return r5[0];
                  if (o3 > r5[1]) return r5[1];
                }
                return o3;
              }
              function x2(e5) {
                return h2._distinct && h2.index && e5[h2.index] ? e5[h2.index] : e5[0];
              }
              if (d2 || g2 || f2) {
                var b2 = {}, w2 = {};
                if (d2) {
                  b2.mc = m2("marker.color", x2), b2.mx = m2("marker.symbol", x2), b2.mo = m2("marker.opacity", i.mean, [0.2, 1]), b2.mlc = m2("marker.line.color", x2), b2.mlw = m2("marker.line.width", i.mean, [0, 5], 2), w2.marker = { sizeref: 1, sizemin: 1, sizemode: "diameter" };
                  var T2 = m2("marker.size", i.mean, [2, 16], 12);
                  b2.ms = T2, w2.marker.size = T2;
                }
                f2 && (w2.line = { width: m2("line.width", x2, [0, 10], 5) }), g2 && (b2.tx = "Aa", b2.tp = m2("textposition", x2), b2.ts = 10, b2.tc = m2("textfont.color", x2), b2.tf = m2("textfont.family", x2), b2.tw = m2("textfont.weight", x2), b2.ty = m2("textfont.style", x2), b2.tv = m2("textfont.variant", x2), b2.tC = m2("textfont.textcase", x2), b2.tE = m2("textfont.lineposition", x2), b2.tS = m2("textfont.shadow", x2)), r4 = [i.minExtend(h2, b2)], (a2 = i.minExtend(p2, w2)).selectedpoints = null, a2.texttemplate = null;
              }
              var M2 = n.select(this).select("g.legendpoints"), k = M2.selectAll("path.scatterpts").data(d2 ? r4 : []);
              k.enter().insert("path", ":first-child").classed("scatterpts", true).attr("transform", _), k.exit().remove(), k.call(l.pointStyle, a2, t3), d2 && (r4[0].mrc = 3);
              var A = M2.selectAll("g.pointtext").data(g2 ? r4 : []);
              A.enter().append("g").classed("pointtext", true).append("text").attr("transform", _), A.exit().remove(), A.selectAll("text").call(l.textPointStyle, a2, t3);
            }).each(function(e4) {
              var t4 = e4[0].trace, r4 = n.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(t4.visible && "candlestick" === t4.type ? [e4, e4] : []);
              r4.enter().append("path").classed("legendcandle", true).attr("d", function(e5, t5) {
                return t5 ? "M-15,0H-8M-8,6V-6H8Z" : "M15,0H8M8,-6V6H-8Z";
              }).attr("transform", _).style("stroke-miterlimit", 1), r4.exit().remove(), r4.each(function(e5, r5) {
                var a2 = n.select(this), i2 = t4[r5 ? "increasing" : "decreasing"], o2 = w(void 0, i2.line, 5, 2);
                a2.style("stroke-width", o2 + "px").call(s.fill, i2.fillcolor), o2 && s.stroke(a2, i2.line.color);
              });
            }).each(function(e4) {
              var t4 = e4[0].trace, r4 = n.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(t4.visible && "ohlc" === t4.type ? [e4, e4] : []);
              r4.enter().append("path").classed("legendohlc", true).attr("d", function(e5, t5) {
                return t5 ? "M-15,0H0M-8,-6V0" : "M15,0H0M8,6V0";
              }).attr("transform", _).style("stroke-miterlimit", 1), r4.exit().remove(), r4.each(function(e5, r5) {
                var a2 = n.select(this), i2 = t4[r5 ? "increasing" : "decreasing"], o2 = w(void 0, i2.line, 5, 2);
                a2.style("fill", "none").call(l.dashLine, i2.line.dash, o2), o2 && s.stroke(a2, i2.line.color);
              });
            });
          };
        }, 308: function(e2, t2, r2) {
          r2(7632), e2.exports = { editType: "modebar", orientation: { valType: "enumerated", values: ["v", "h"], dflt: "h", editType: "modebar" }, bgcolor: { valType: "color", editType: "modebar" }, color: { valType: "color", editType: "modebar" }, activecolor: { valType: "color", editType: "modebar" }, uirevision: { valType: "any", editType: "none" }, add: { valType: "string", arrayOk: true, dflt: "", editType: "modebar" }, remove: { valType: "string", arrayOk: true, dflt: "", editType: "modebar" } };
        }, 5832: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4122), i = r2(5975), o = r2(5188), l = r2(8231).eraseActiveShape, s = r2(4809), c = s._, u = e2.exports = {};
          function f(e3, t3) {
            var r3, a2, o2 = t3.currentTarget, l2 = o2.getAttribute("data-attr"), s2 = o2.getAttribute("data-val") || true, c2 = e3._fullLayout, u2 = {}, f2 = i.list(e3, null, true), d2 = c2._cartesianSpikesEnabled;
            if ("zoom" === l2) {
              var h2, p2 = "in" === s2 ? 0.5 : 2, v2 = (1 + p2) / 2, g2 = (1 - p2) / 2;
              for (a2 = 0; a2 < f2.length; a2++) if (!(r3 = f2[a2]).fixedrange) if (h2 = r3._name, "auto" === s2) u2[h2 + ".autorange"] = true;
              else if ("reset" === s2) void 0 === r3._rangeInitial0 && void 0 === r3._rangeInitial1 ? u2[h2 + ".autorange"] = true : void 0 === r3._rangeInitial0 ? (u2[h2 + ".autorange"] = r3._autorangeInitial, u2[h2 + ".range"] = [null, r3._rangeInitial1]) : void 0 === r3._rangeInitial1 ? (u2[h2 + ".range"] = [r3._rangeInitial0, null], u2[h2 + ".autorange"] = r3._autorangeInitial) : u2[h2 + ".range"] = [r3._rangeInitial0, r3._rangeInitial1], void 0 !== r3._showSpikeInitial && (u2[h2 + ".showspikes"] = r3._showSpikeInitial, "on" !== d2 || r3._showSpikeInitial || (d2 = "off"));
              else {
                var m2 = [r3.r2l(r3.range[0]), r3.r2l(r3.range[1])], y2 = [v2 * m2[0] + g2 * m2[1], v2 * m2[1] + g2 * m2[0]];
                u2[h2 + ".range[0]"] = r3.l2r(y2[0]), u2[h2 + ".range[1]"] = r3.l2r(y2[1]);
              }
            } else "hovermode" !== l2 || "x" !== s2 && "y" !== s2 || (s2 = c2._isHoriz ? "y" : "x", o2.setAttribute("data-val", s2)), u2[l2] = s2;
            c2._cartesianSpikesEnabled = d2, n.call("_guiRelayout", e3, u2);
          }
          function d(e3, t3) {
            for (var r3 = t3.currentTarget, a2 = r3.getAttribute("data-attr"), i2 = r3.getAttribute("data-val") || true, o2 = e3._fullLayout._subplots.gl3d || [], l2 = {}, s2 = a2.split("."), c2 = 0; c2 < o2.length; c2++) l2[o2[c2] + "." + s2[1]] = i2;
            var u2 = "pan" === i2 ? i2 : "zoom";
            l2.dragmode = u2, n.call("_guiRelayout", e3, l2);
          }
          function h(e3, t3) {
            for (var r3 = t3.currentTarget.getAttribute("data-attr"), a2 = "resetLastSave" === r3, i2 = "resetDefault" === r3, o2 = e3._fullLayout, l2 = o2._subplots.gl3d || [], s2 = {}, c2 = 0; c2 < l2.length; c2++) {
              var u2, f2 = l2[c2], d2 = f2 + ".camera", h2 = f2 + ".aspectratio", p2 = f2 + ".aspectmode", v2 = o2[f2]._scene;
              a2 ? (s2[d2 + ".up"] = v2.viewInitial.up, s2[d2 + ".eye"] = v2.viewInitial.eye, s2[d2 + ".center"] = v2.viewInitial.center, u2 = true) : i2 && (s2[d2 + ".up"] = null, s2[d2 + ".eye"] = null, s2[d2 + ".center"] = null, u2 = true), u2 && (s2[h2 + ".x"] = v2.viewInitial.aspectratio.x, s2[h2 + ".y"] = v2.viewInitial.aspectratio.y, s2[h2 + ".z"] = v2.viewInitial.aspectratio.z, s2[p2] = v2.viewInitial.aspectmode);
            }
            n.call("_guiRelayout", e3, s2);
          }
          function p(e3, t3) {
            var r3 = t3.currentTarget, n2 = r3._previousVal, a2 = e3._fullLayout, i2 = a2._subplots.gl3d || [], o2 = ["xaxis", "yaxis", "zaxis"], l2 = {}, s2 = {};
            if (n2) s2 = n2, r3._previousVal = null;
            else {
              for (var c2 = 0; c2 < i2.length; c2++) {
                var u2 = i2[c2], f2 = a2[u2], d2 = u2 + ".hovermode";
                l2[d2] = f2.hovermode, s2[d2] = false;
                for (var h2 = 0; h2 < 3; h2++) {
                  var p2 = o2[h2], v2 = u2 + "." + p2 + ".showspikes";
                  s2[v2] = false, l2[v2] = f2[p2].showspikes;
                }
              }
              r3._previousVal = l2;
            }
            return s2;
          }
          function v(e3, t3) {
            for (var r3 = t3.currentTarget, a2 = r3.getAttribute("data-attr"), i2 = r3.getAttribute("data-val") || true, o2 = e3._fullLayout, l2 = o2._subplots.geo || [], s2 = 0; s2 < l2.length; s2++) {
              var c2 = l2[s2], u2 = o2[c2];
              if ("zoom" === a2) {
                var f2 = u2.projection.scale, d2 = "in" === i2 ? 2 * f2 : 0.5 * f2;
                n.call("_guiRelayout", e3, c2 + ".projection.scale", d2);
              }
            }
            "reset" === a2 && _(e3, "geo");
          }
          function g(e3) {
            var t3 = e3._fullLayout;
            return !t3.hovermode && (t3._has("cartesian") ? t3._isHoriz ? "y" : "x" : "closest");
          }
          function m(e3) {
            var t3 = g(e3);
            n.call("_guiRelayout", e3, "hovermode", t3);
          }
          function y(e3, t3) {
            b(e3, t3, "mapbox");
          }
          function x(e3, t3) {
            b(e3, t3, "map");
          }
          function b(e3, t3, r3) {
            for (var a2 = t3.currentTarget.getAttribute("data-val"), i2 = e3._fullLayout, o2 = i2._subplots[r3] || [], l2 = {}, s2 = 0; s2 < o2.length; s2++) {
              var c2 = o2[s2], u2 = i2[c2].zoom, f2 = "in" === a2 ? 1.05 * u2 : u2 / 1.05;
              l2[c2 + ".zoom"] = f2;
            }
            n.call("_guiRelayout", e3, l2);
          }
          function _(e3, t3) {
            for (var r3 = e3._fullLayout, a2 = r3._subplots[t3] || [], i2 = {}, o2 = 0; o2 < a2.length; o2++) for (var l2 = a2[o2], s2 = r3[l2]._subplot.viewInitial, c2 = Object.keys(s2), u2 = 0; u2 < c2.length; u2++) {
              var f2 = c2[u2];
              i2[l2 + "." + f2] = s2[f2];
            }
            n.call("_guiRelayout", e3, i2);
          }
          u.toImage = { name: "toImage", title: function(e3) {
            var t3 = (e3._context.toImageButtonOptions || {}).format || "png";
            return c(e3, "png" === t3 ? "Download plot as a png" : "Download plot");
          }, icon: o.camera, click: function(e3) {
            var t3 = e3._context.toImageButtonOptions, r3 = { format: t3.format || "png" };
            s.notifier(c(e3, "Taking snapshot - this may take a few seconds"), "long"), "svg" !== r3.format && s.isIE() && (s.notifier(c(e3, "IE only supports svg.  Changing format to svg."), "long"), r3.format = "svg"), ["filename", "width", "height", "scale"].forEach(function(e4) {
              e4 in t3 && (r3[e4] = t3[e4]);
            }), n.call("downloadImage", e3, r3).then(function(t4) {
              s.notifier(c(e3, "Snapshot succeeded") + " - " + t4, "long");
            }).catch(function() {
              s.notifier(c(e3, "Sorry, there was a problem downloading your snapshot!"), "long");
            });
          } }, u.sendDataToCloud = { name: "sendDataToCloud", title: function(e3) {
            return c(e3, "Edit in Chart Studio");
          }, icon: o.disk, click: function(e3) {
            a.sendDataToCloud(e3);
          } }, u.editInChartStudio = { name: "editInChartStudio", title: function(e3) {
            return c(e3, "Edit in Chart Studio");
          }, icon: o.pencil, click: function(e3) {
            a.sendDataToCloud(e3);
          } }, u.zoom2d = { name: "zoom2d", _cat: "zoom", title: function(e3) {
            return c(e3, "Zoom");
          }, attr: "dragmode", val: "zoom", icon: o.zoombox, click: f }, u.pan2d = { name: "pan2d", _cat: "pan", title: function(e3) {
            return c(e3, "Pan");
          }, attr: "dragmode", val: "pan", icon: o.pan, click: f }, u.select2d = { name: "select2d", _cat: "select", title: function(e3) {
            return c(e3, "Box Select");
          }, attr: "dragmode", val: "select", icon: o.selectbox, click: f }, u.lasso2d = { name: "lasso2d", _cat: "lasso", title: function(e3) {
            return c(e3, "Lasso Select");
          }, attr: "dragmode", val: "lasso", icon: o.lasso, click: f }, u.drawclosedpath = { name: "drawclosedpath", title: function(e3) {
            return c(e3, "Draw closed freeform");
          }, attr: "dragmode", val: "drawclosedpath", icon: o.drawclosedpath, click: f }, u.drawopenpath = { name: "drawopenpath", title: function(e3) {
            return c(e3, "Draw open freeform");
          }, attr: "dragmode", val: "drawopenpath", icon: o.drawopenpath, click: f }, u.drawline = { name: "drawline", title: function(e3) {
            return c(e3, "Draw line");
          }, attr: "dragmode", val: "drawline", icon: o.drawline, click: f }, u.drawrect = { name: "drawrect", title: function(e3) {
            return c(e3, "Draw rectangle");
          }, attr: "dragmode", val: "drawrect", icon: o.drawrect, click: f }, u.drawcircle = { name: "drawcircle", title: function(e3) {
            return c(e3, "Draw circle");
          }, attr: "dragmode", val: "drawcircle", icon: o.drawcircle, click: f }, u.eraseshape = { name: "eraseshape", title: function(e3) {
            return c(e3, "Erase active shape");
          }, icon: o.eraseshape, click: l }, u.zoomIn2d = { name: "zoomIn2d", _cat: "zoomin", title: function(e3) {
            return c(e3, "Zoom in");
          }, attr: "zoom", val: "in", icon: o.zoom_plus, click: f }, u.zoomOut2d = { name: "zoomOut2d", _cat: "zoomout", title: function(e3) {
            return c(e3, "Zoom out");
          }, attr: "zoom", val: "out", icon: o.zoom_minus, click: f }, u.autoScale2d = { name: "autoScale2d", _cat: "autoscale", title: function(e3) {
            return c(e3, "Autoscale");
          }, attr: "zoom", val: "auto", icon: o.autoscale, click: f }, u.resetScale2d = { name: "resetScale2d", _cat: "resetscale", title: function(e3) {
            return c(e3, "Reset axes");
          }, attr: "zoom", val: "reset", icon: o.home, click: f }, u.hoverClosestCartesian = { name: "hoverClosestCartesian", _cat: "hoverclosest", title: function(e3) {
            return c(e3, "Show closest data on hover");
          }, attr: "hovermode", val: "closest", icon: o.tooltip_basic, gravity: "ne", click: f }, u.hoverCompareCartesian = { name: "hoverCompareCartesian", _cat: "hoverCompare", title: function(e3) {
            return c(e3, "Compare data on hover");
          }, attr: "hovermode", val: function(e3) {
            return e3._fullLayout._isHoriz ? "y" : "x";
          }, icon: o.tooltip_compare, gravity: "ne", click: f }, u.zoom3d = { name: "zoom3d", _cat: "zoom", title: function(e3) {
            return c(e3, "Zoom");
          }, attr: "scene.dragmode", val: "zoom", icon: o.zoombox, click: d }, u.pan3d = { name: "pan3d", _cat: "pan", title: function(e3) {
            return c(e3, "Pan");
          }, attr: "scene.dragmode", val: "pan", icon: o.pan, click: d }, u.orbitRotation = { name: "orbitRotation", title: function(e3) {
            return c(e3, "Orbital rotation");
          }, attr: "scene.dragmode", val: "orbit", icon: o["3d_rotate"], click: d }, u.tableRotation = { name: "tableRotation", title: function(e3) {
            return c(e3, "Turntable rotation");
          }, attr: "scene.dragmode", val: "turntable", icon: o["z-axis"], click: d }, u.resetCameraDefault3d = { name: "resetCameraDefault3d", _cat: "resetCameraDefault", title: function(e3) {
            return c(e3, "Reset camera to default");
          }, attr: "resetDefault", icon: o.home, click: h }, u.resetCameraLastSave3d = { name: "resetCameraLastSave3d", _cat: "resetCameraLastSave", title: function(e3) {
            return c(e3, "Reset camera to last save");
          }, attr: "resetLastSave", icon: o.movie, click: h }, u.hoverClosest3d = { name: "hoverClosest3d", _cat: "hoverclosest", title: function(e3) {
            return c(e3, "Toggle show closest data on hover");
          }, attr: "hovermode", val: null, toggle: true, icon: o.tooltip_basic, gravity: "ne", click: function(e3, t3) {
            var r3 = p(e3, t3);
            n.call("_guiRelayout", e3, r3);
          } }, u.zoomInGeo = { name: "zoomInGeo", _cat: "zoomin", title: function(e3) {
            return c(e3, "Zoom in");
          }, attr: "zoom", val: "in", icon: o.zoom_plus, click: v }, u.zoomOutGeo = { name: "zoomOutGeo", _cat: "zoomout", title: function(e3) {
            return c(e3, "Zoom out");
          }, attr: "zoom", val: "out", icon: o.zoom_minus, click: v }, u.resetGeo = { name: "resetGeo", _cat: "reset", title: function(e3) {
            return c(e3, "Reset");
          }, attr: "reset", val: null, icon: o.autoscale, click: v }, u.hoverClosestGeo = { name: "hoverClosestGeo", _cat: "hoverclosest", title: function(e3) {
            return c(e3, "Toggle show closest data on hover");
          }, attr: "hovermode", val: null, toggle: true, icon: o.tooltip_basic, gravity: "ne", click: m }, u.hoverClosestGl2d = { name: "hoverClosestGl2d", _cat: "hoverclosest", title: function(e3) {
            return c(e3, "Toggle show closest data on hover");
          }, attr: "hovermode", val: null, toggle: true, icon: o.tooltip_basic, gravity: "ne", click: m }, u.hoverClosestPie = { name: "hoverClosestPie", _cat: "hoverclosest", title: function(e3) {
            return c(e3, "Toggle show closest data on hover");
          }, attr: "hovermode", val: "closest", icon: o.tooltip_basic, gravity: "ne", click: m }, u.resetViewSankey = { name: "resetSankeyGroup", title: function(e3) {
            return c(e3, "Reset view");
          }, icon: o.home, click: function(e3) {
            for (var t3 = { "node.groups": [], "node.x": [], "node.y": [] }, r3 = 0; r3 < e3._fullData.length; r3++) {
              var a2 = e3._fullData[r3]._viewInitial;
              t3["node.groups"].push(a2.node.groups.slice()), t3["node.x"].push(a2.node.x.slice()), t3["node.y"].push(a2.node.y.slice());
            }
            n.call("restyle", e3, t3);
          } }, u.toggleHover = { name: "toggleHover", title: function(e3) {
            return c(e3, "Toggle show closest data on hover");
          }, attr: "hovermode", val: null, toggle: true, icon: o.tooltip_basic, gravity: "ne", click: function(e3, t3) {
            var r3 = p(e3, t3);
            r3.hovermode = g(e3), n.call("_guiRelayout", e3, r3);
          } }, u.resetViews = { name: "resetViews", title: function(e3) {
            return c(e3, "Reset views");
          }, icon: o.home, click: function(e3, t3) {
            var r3 = t3.currentTarget;
            r3.setAttribute("data-attr", "zoom"), r3.setAttribute("data-val", "reset"), f(e3, t3), r3.setAttribute("data-attr", "resetLastSave"), h(e3, t3), _(e3, "geo"), _(e3, "mapbox"), _(e3, "map");
          } }, u.toggleSpikelines = { name: "toggleSpikelines", title: function(e3) {
            return c(e3, "Toggle Spike Lines");
          }, icon: o.spikeline, attr: "_cartesianSpikesEnabled", val: "on", click: function(e3) {
            var t3 = e3._fullLayout, r3 = t3._cartesianSpikesEnabled;
            t3._cartesianSpikesEnabled = "on" === r3 ? "off" : "on", n.call("_guiRelayout", e3, function(e4) {
              for (var t4 = "on" === e4._fullLayout._cartesianSpikesEnabled, r4 = i.list(e4, null, true), n2 = {}, a2 = 0; a2 < r4.length; a2++) {
                var o2 = r4[a2];
                n2[o2._name + ".showspikes"] = !!t4 || o2._showSpikeInitial;
              }
              return n2;
            }(e3));
          } }, u.resetViewMapbox = { name: "resetViewMapbox", _cat: "resetView", title: function(e3) {
            return c(e3, "Reset view");
          }, attr: "reset", icon: o.home, click: function(e3) {
            _(e3, "mapbox");
          } }, u.resetViewMap = { name: "resetViewMap", _cat: "resetView", title: function(e3) {
            return c(e3, "Reset view");
          }, attr: "reset", icon: o.home, click: function(e3) {
            _(e3, "map");
          } }, u.zoomInMapbox = { name: "zoomInMapbox", _cat: "zoomin", title: function(e3) {
            return c(e3, "Zoom in");
          }, attr: "zoom", val: "in", icon: o.zoom_plus, click: y }, u.zoomInMap = { name: "zoomInMap", _cat: "zoomin", title: function(e3) {
            return c(e3, "Zoom in");
          }, attr: "zoom", val: "in", icon: o.zoom_plus, click: x }, u.zoomOutMapbox = { name: "zoomOutMapbox", _cat: "zoomout", title: function(e3) {
            return c(e3, "Zoom out");
          }, attr: "zoom", val: "out", icon: o.zoom_minus, click: y }, u.zoomOutMap = { name: "zoomOutMap", _cat: "zoomout", title: function(e3) {
            return c(e3, "Zoom out");
          }, attr: "zoom", val: "out", icon: o.zoom_minus, click: x };
        }, 7632: function(e2, t2, r2) {
          var n = r2(5832), a = Object.keys(n), i = ["drawline", "drawopenpath", "drawclosedpath", "drawcircle", "drawrect", "eraseshape"], o = ["v1hovermode", "hoverclosest", "hovercompare", "togglehover", "togglespikelines"].concat(i), l = [];
          a.forEach(function(e3) {
            !function(e4) {
              if (-1 === o.indexOf(e4._cat || e4.name)) {
                var t3 = e4.name, r3 = (e4._cat || e4.name).toLowerCase();
                -1 === l.indexOf(t3) && l.push(t3), -1 === l.indexOf(r3) && l.push(r3);
              }
            }(n[e3]);
          }), l.sort(), e2.exports = { DRAW_MODES: i, backButtons: o, foreButtons: l };
        }, 64: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766), i = r2(8032), o = r2(308);
          e2.exports = function(e3, t3) {
            var r3 = e3.modebar || {}, l = i.newContainer(t3, "modebar");
            function s(e4, t4) {
              return n.coerce(r3, l, o, e4, t4);
            }
            s("orientation"), s("bgcolor", a.addOpacity(t3.paper_bgcolor, 0.5));
            var c = a.contrast(a.rgb(t3.modebar.bgcolor));
            s("color", a.addOpacity(c, 0.3)), s("activecolor", a.addOpacity(c, 0.7)), s("uirevision", t3.uirevision), s("add"), s("remove");
          };
        }, 5433: function(e2, t2, r2) {
          e2.exports = { moduleType: "component", name: "modebar", layoutAttributes: r2(308), supplyLayoutDefaults: r2(64), manage: r2(5442) };
        }, 5442: function(e2, t2, r2) {
          var n = r2(5975), a = r2(4726), i = r2(3626), o = r2(6040).isUnifiedHover, l = r2(5393), s = r2(5832), c = r2(7632).DRAW_MODES, u = r2(4809).extendDeep;
          e2.exports = function(e3) {
            var t3 = e3._fullLayout, r3 = e3._context, f = t3._modeBar;
            if (r3.displayModeBar || r3.watermark) {
              if (!Array.isArray(r3.modeBarButtonsToRemove)) throw new Error(["*modeBarButtonsToRemove* configuration options", "must be an array."].join(" "));
              if (!Array.isArray(r3.modeBarButtonsToAdd)) throw new Error(["*modeBarButtonsToAdd* configuration options", "must be an array."].join(" "));
              var d, h = r3.modeBarButtons;
              d = Array.isArray(h) && h.length ? function(e4) {
                for (var t4 = u([], e4), r4 = 0; r4 < t4.length; r4++) for (var n2 = t4[r4], a2 = 0; a2 < n2.length; a2++) {
                  var i2 = n2[a2];
                  if ("string" == typeof i2) {
                    if (void 0 === s[i2]) throw new Error(["*modeBarButtons* configuration options", "invalid button name"].join(" "));
                    t4[r4][a2] = s[i2];
                  }
                }
                return t4;
              }(h) : !r3.displayModeBar && r3.watermark ? [] : function(e4) {
                var t4 = e4._fullLayout, r4 = e4._fullData, l2 = e4._context;
                function u2(e5, t5) {
                  if ("string" == typeof t5) {
                    if (t5.toLowerCase() === e5.toLowerCase()) return true;
                  } else {
                    var r5 = t5.name, n2 = t5._cat || t5.name;
                    if (r5 === e5 || n2 === e5.toLowerCase()) return true;
                  }
                  return false;
                }
                var f2 = t4.modebar.add;
                "string" == typeof f2 && (f2 = [f2]);
                var d2 = t4.modebar.remove;
                "string" == typeof d2 && (d2 = [d2]);
                var h2 = l2.modeBarButtonsToAdd.concat(f2.filter(function(e5) {
                  for (var t5 = 0; t5 < l2.modeBarButtonsToRemove.length; t5++) if (u2(e5, l2.modeBarButtonsToRemove[t5])) return false;
                  return true;
                })), p = l2.modeBarButtonsToRemove.concat(d2.filter(function(e5) {
                  for (var t5 = 0; t5 < l2.modeBarButtonsToAdd.length; t5++) if (u2(e5, l2.modeBarButtonsToAdd[t5])) return false;
                  return true;
                })), v = t4._has("cartesian"), g = t4._has("gl3d"), m = t4._has("geo"), y = t4._has("pie"), x = t4._has("funnelarea"), b = t4._has("gl2d"), _ = t4._has("ternary"), w = t4._has("mapbox"), T = t4._has("map"), M = t4._has("polar"), k = t4._has("smith"), A = t4._has("sankey"), L = function(e5) {
                  for (var t5 = n.list({ _fullLayout: e5 }, null, true), r5 = 0; r5 < t5.length; r5++) if (!t5[r5].fixedrange) return false;
                  return true;
                }(t4), S = o(t4.hovermode), C = [];
                function O(e5) {
                  if (e5.length) {
                    for (var t5 = [], r5 = 0; r5 < e5.length; r5++) {
                      for (var n2 = e5[r5], a2 = s[n2], i2 = a2.name.toLowerCase(), o2 = (a2._cat || a2.name).toLowerCase(), l3 = false, c2 = 0; c2 < p.length; c2++) {
                        var u3 = p[c2].toLowerCase();
                        if (u3 === i2 || u3 === o2) {
                          l3 = true;
                          break;
                        }
                      }
                      l3 || t5.push(s[n2]);
                    }
                    C.push(t5);
                  }
                }
                var D = ["toImage"];
                l2.showEditInChartStudio ? D.push("editInChartStudio") : l2.showSendToCloud && D.push("sendDataToCloud"), O(D);
                var P = [], z = [], I = [], E = [];
                (v || b || y || x || _) + m + g + w + T + M + k > 1 ? (z = ["toggleHover"], I = ["resetViews"]) : m ? (P = ["zoomInGeo", "zoomOutGeo"], z = ["hoverClosestGeo"], I = ["resetGeo"]) : g ? (z = ["hoverClosest3d"], I = ["resetCameraDefault3d", "resetCameraLastSave3d"]) : w ? (P = ["zoomInMapbox", "zoomOutMapbox"], z = ["toggleHover"], I = ["resetViewMapbox"]) : T ? (P = ["zoomInMap", "zoomOutMap"], z = ["toggleHover"], I = ["resetViewMap"]) : b ? z = ["hoverClosestGl2d"] : y ? z = ["hoverClosestPie"] : A ? (z = ["hoverClosestCartesian", "hoverCompareCartesian"], I = ["resetViewSankey"]) : z = ["toggleHover"], v && z.push("toggleSpikelines", "hoverClosestCartesian", "hoverCompareCartesian"), (function(e5) {
                  for (var t5 = 0; t5 < e5.length; t5++) if (!i.traceIs(e5[t5], "noHover")) return false;
                  return true;
                }(r4) || S) && (z = []), !v && !b || L || (P = ["zoomIn2d", "zoomOut2d", "autoScale2d"], "resetViews" !== I[0] && (I = ["resetScale2d"])), g ? E = ["zoom3d", "pan3d", "orbitRotation", "tableRotation"] : (v || b) && !L || _ ? E = ["zoom2d", "pan2d"] : w || T || m ? E = ["pan2d"] : M && (E = ["zoom2d"]), function(e5) {
                  for (var t5 = false, r5 = 0; r5 < e5.length && !t5; r5++) {
                    var n2 = e5[r5];
                    n2._module && n2._module.selectPoints && (i.traceIs(n2, "scatter-like") ? (a.hasMarkers(n2) || a.hasText(n2)) && (t5 = true) : i.traceIs(n2, "box-violin") && "all" !== n2.boxpoints && "all" !== n2.points || (t5 = true));
                  }
                  return t5;
                }(r4) && E.push("select2d", "lasso2d");
                var R = [], N = function(e5) {
                  -1 === R.indexOf(e5) && -1 !== z.indexOf(e5) && R.push(e5);
                };
                if (Array.isArray(h2)) {
                  for (var F = [], H = 0; H < h2.length; H++) {
                    var B = h2[H];
                    "string" == typeof B ? (B = B.toLowerCase(), -1 !== c.indexOf(B) ? (t4._has("mapbox") || t4._has("map") || t4._has("cartesian")) && E.push(B) : "togglespikelines" === B ? N("toggleSpikelines") : "togglehover" === B ? N("toggleHover") : "hovercompare" === B ? N("hoverCompareCartesian") : "hoverclosest" === B ? (N("hoverClosestCartesian"), N("hoverClosestGeo"), N("hoverClosest3d"), N("hoverClosestGl2d"), N("hoverClosestPie")) : "v1hovermode" === B && (N("hoverClosestCartesian"), N("hoverCompareCartesian"), N("hoverClosestGeo"), N("hoverClosest3d"), N("hoverClosestGl2d"), N("hoverClosestPie"))) : F.push(B);
                  }
                  h2 = F;
                }
                return O(E), O(P.concat(I)), O(R), function(e5, t5) {
                  if (t5.length) if (Array.isArray(t5[0])) for (var r5 = 0; r5 < t5.length; r5++) e5.push(t5[r5]);
                  else e5.push(t5);
                  return e5;
                }(C, h2);
              }(e3), f ? f.update(e3, d) : t3._modeBar = l(e3, d);
            } else f && (f.destroy(), delete t3._modeBar);
          };
        }, 5393: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(4809), o = r2(5188), l = r2(9697).version, s = new DOMParser();
          function c(e3) {
            this.container = e3.container, this.element = document.createElement("div"), this.update(e3.graphInfo, e3.buttons), this.container.appendChild(this.element);
          }
          var u = c.prototype;
          u.update = function(e3, t3) {
            this.graphInfo = e3;
            var r3 = this.graphInfo._context, n2 = this.graphInfo._fullLayout, a2 = "modebar-" + n2._uid;
            this.element.setAttribute("id", a2), this._uid = a2, this.element.className = "modebar", "hover" === r3.displayModeBar && (this.element.className += " modebar--hover ease-bg"), "v" === n2.modebar.orientation && (this.element.className += " vertical", t3 = t3.reverse());
            var o2 = n2.modebar, l2 = "hover" === r3.displayModeBar ? ".js-plotly-plot .plotly:hover " : "";
            i.deleteRelatedStyleRule(a2), i.addRelatedStyleRule(a2, l2 + "#" + a2 + " .modebar-group", "background-color: " + o2.bgcolor), i.addRelatedStyleRule(a2, "#" + a2 + " .modebar-btn .icon path", "fill: " + o2.color), i.addRelatedStyleRule(a2, "#" + a2 + " .modebar-btn:hover .icon path", "fill: " + o2.activecolor), i.addRelatedStyleRule(a2, "#" + a2 + " .modebar-btn.active .icon path", "fill: " + o2.activecolor);
            var s2 = !this.hasButtons(t3), c2 = this.hasLogo !== r3.displaylogo, u2 = this.locale !== r3.locale;
            if (this.locale = r3.locale, (s2 || c2 || u2) && (this.removeAllButtons(), this.updateButtons(t3), r3.watermark || r3.displaylogo)) {
              var f = this.getLogo();
              r3.watermark && (f.className = f.className + " watermark"), "v" === n2.modebar.orientation ? this.element.insertBefore(f, this.element.childNodes[0]) : this.element.appendChild(f), this.hasLogo = true;
            }
            this.updateActiveButton();
          }, u.updateButtons = function(e3) {
            var t3 = this;
            this.buttons = e3, this.buttonElements = [], this.buttonsNames = [], this.buttons.forEach(function(e4) {
              var r3 = t3.createGroup();
              e4.forEach(function(e5) {
                var n2 = e5.name;
                if (!n2) throw new Error("must provide button 'name' in button config");
                if (-1 !== t3.buttonsNames.indexOf(n2)) throw new Error("button name '" + n2 + "' is taken");
                t3.buttonsNames.push(n2);
                var a2 = t3.createButton(e5);
                t3.buttonElements.push(a2), r3.appendChild(a2);
              }), t3.element.appendChild(r3);
            });
          }, u.createGroup = function() {
            var e3 = document.createElement("div");
            return e3.className = "modebar-group", e3;
          }, u.createButton = function(e3) {
            var t3 = this, r3 = document.createElement("a");
            r3.setAttribute("rel", "tooltip"), r3.className = "modebar-btn";
            var a2 = e3.title;
            void 0 === a2 ? a2 = e3.name : "function" == typeof a2 && (a2 = a2(this.graphInfo)), (a2 || 0 === a2) && r3.setAttribute("data-title", a2), void 0 !== e3.attr && r3.setAttribute("data-attr", e3.attr);
            var i2 = e3.val;
            if (void 0 !== i2 && ("function" == typeof i2 && (i2 = i2(this.graphInfo)), r3.setAttribute("data-val", i2)), "function" != typeof e3.click) throw new Error("must provide button 'click' function in button config");
            r3.addEventListener("click", function(r4) {
              e3.click(t3.graphInfo, r4), t3.updateActiveButton(r4.currentTarget);
            }), r3.setAttribute("data-toggle", e3.toggle || false), e3.toggle && n.select(r3).classed("active", true);
            var l2 = e3.icon;
            return "function" == typeof l2 ? r3.appendChild(l2()) : r3.appendChild(this.createIcon(l2 || o.question)), r3.setAttribute("data-gravity", e3.gravity || "n"), r3;
          }, u.createIcon = function(e3) {
            var t3, r3 = a(e3.height) ? Number(e3.height) : e3.ascent - e3.descent, n2 = "http://www.w3.org/2000/svg";
            if (e3.path) {
              (t3 = document.createElementNS(n2, "svg")).setAttribute("viewBox", [0, 0, e3.width, r3].join(" ")), t3.setAttribute("class", "icon");
              var i2 = document.createElementNS(n2, "path");
              i2.setAttribute("d", e3.path), e3.transform ? i2.setAttribute("transform", e3.transform) : void 0 !== e3.ascent && i2.setAttribute("transform", "matrix(1 0 0 -1 0 " + e3.ascent + ")"), t3.appendChild(i2);
            }
            return e3.svg && (t3 = s.parseFromString(e3.svg, "application/xml").childNodes[0]), t3.setAttribute("height", "1em"), t3.setAttribute("width", "1em"), t3;
          }, u.updateActiveButton = function(e3) {
            var t3 = this.graphInfo._fullLayout, r3 = void 0 !== e3 ? e3.getAttribute("data-attr") : null;
            this.buttonElements.forEach(function(e4) {
              var a2 = e4.getAttribute("data-val") || true, o2 = e4.getAttribute("data-attr"), l2 = "true" === e4.getAttribute("data-toggle"), s2 = n.select(e4);
              if (l2) o2 === r3 && s2.classed("active", !s2.classed("active"));
              else {
                var c2 = null === o2 ? o2 : i.nestedProperty(t3, o2).get();
                s2.classed("active", c2 === a2);
              }
            });
          }, u.hasButtons = function(e3) {
            var t3 = this.buttons;
            if (!t3) return false;
            if (e3.length !== t3.length) return false;
            for (var r3 = 0; r3 < e3.length; ++r3) {
              if (e3[r3].length !== t3[r3].length) return false;
              for (var n2 = 0; n2 < e3[r3].length; n2++) if (e3[r3][n2].name !== t3[r3][n2].name) return false;
            }
            return true;
          }, u.getLogo = function() {
            var e3 = this.createGroup(), t3 = document.createElement("a");
            return t3.href = "https://plotly.com/", t3.target = "_blank", t3.setAttribute("data-title", i._(this.graphInfo, "Produced with Plotly.js") + " (v" + l + ")"), t3.className = "modebar-btn plotlyjsicon modebar-btn--logo", t3.appendChild(this.createIcon(o.newplotlylogo)), e3.appendChild(t3), e3;
          }, u.removeAllButtons = function() {
            for (; this.element.firstChild; ) this.element.removeChild(this.element.firstChild);
            this.hasLogo = false;
          }, u.destroy = function() {
            i.removeElement(this.container.querySelector(".modebar")), i.deleteRelatedStyleRule(this._uid);
          }, e2.exports = function(e3, t3) {
            var r3 = e3._fullLayout, a2 = new c({ graphInfo: e3, container: r3._modebardiv.node(), buttons: t3 });
            return r3._privateplot && n.select(a2.element).append("span").classed("badge-private float--left", true).text("PRIVATE"), a2;
          };
        }, 1032: function(e2, t2, r2) {
          var n = r2(337), a = r2(229), i = (0, r2(8032).templatedArray)("button", { visible: { valType: "boolean", dflt: true, editType: "plot" }, step: { valType: "enumerated", values: ["month", "year", "day", "hour", "minute", "second", "all"], dflt: "month", editType: "plot" }, stepmode: { valType: "enumerated", values: ["backward", "todate"], dflt: "backward", editType: "plot" }, count: { valType: "number", min: 0, dflt: 1, editType: "plot" }, label: { valType: "string", editType: "plot" }, editType: "plot" });
          e2.exports = { visible: { valType: "boolean", editType: "plot" }, buttons: i, x: { valType: "number", min: -2, max: 3, editType: "plot" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left", editType: "plot" }, y: { valType: "number", min: -2, max: 3, editType: "plot" }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "bottom", editType: "plot" }, font: n({ editType: "plot" }), bgcolor: { valType: "color", dflt: a.lightLine, editType: "plot" }, activecolor: { valType: "color", editType: "plot" }, bordercolor: { valType: "color", dflt: a.defaultLine, editType: "plot" }, borderwidth: { valType: "number", min: 0, dflt: 0, editType: "plot" }, editType: "plot" };
        }, 8508: function(e2) {
          e2.exports = { yPad: 0.02, minButtonWidth: 30, rx: 3, ry: 3, lightAmount: 25, darkAmount: 10 };
        }, 6255: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766), i = r2(8032), o = r2(9008), l = r2(1032), s = r2(8508);
          function c(e3, t3, r3, a2) {
            var i2 = a2.calendar;
            function o2(r4, a3) {
              return n.coerce(e3, t3, l.buttons, r4, a3);
            }
            if (o2("visible")) {
              var s2 = o2("step");
              "all" !== s2 && (!i2 || "gregorian" === i2 || "month" !== s2 && "year" !== s2 ? o2("stepmode") : t3.stepmode = "backward", o2("count")), o2("label");
            }
          }
          e2.exports = function(e3, t3, r3, u, f) {
            var d = e3.rangeselector || {}, h = i.newContainer(t3, "rangeselector");
            function p(e4, t4) {
              return n.coerce(d, h, l, e4, t4);
            }
            if (p("visible", o(d, h, { name: "buttons", handleItemDefaults: c, calendar: f }).length > 0)) {
              var v = function(e4, t4, r4) {
                for (var n2 = r4.filter(function(r5) {
                  return t4[r5].anchor === e4._id;
                }), a2 = 0, i2 = 0; i2 < n2.length; i2++) {
                  var o2 = t4[n2[i2]].domain;
                  o2 && (a2 = Math.max(o2[1], a2));
                }
                return [e4.domain[0], a2 + s.yPad];
              }(t3, r3, u);
              p("x", v[0]), p("y", v[1]), n.noneOrAll(e3, t3, ["x", "y"]), p("xanchor"), p("yanchor"), n.coerceFont(p, "font", r3.font);
              var g = p("bgcolor");
              p("activecolor", a.contrast(g, s.lightAmount, s.darkAmount)), p("bordercolor"), p("borderwidth");
            }
          };
        }, 5431: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4122), o = r2(8766), l = r2(2203), s = r2(4809), c = s.strTranslate, u = r2(635), f = r2(5975), d = r2(4530), h = d.LINE_SPACING, p = d.FROM_TL, v = d.FROM_BR, g = r2(8508), m = r2(6383);
          function y(e3) {
            return e3._id;
          }
          function x(e3, t3, r3) {
            var n2 = s.ensureSingle(e3, "rect", "selector-rect", function(e4) {
              e4.attr("shape-rendering", "crispEdges");
            });
            n2.attr({ rx: g.rx, ry: g.ry }), n2.call(o.stroke, t3.bordercolor).call(o.fill, function(e4, t4) {
              return t4._isActive || t4._isHovered ? e4.activecolor : e4.bgcolor;
            }(t3, r3)).style("stroke-width", t3.borderwidth + "px");
          }
          function b(e3, t3, r3, n2) {
            var a2, i2;
            s.ensureSingle(e3, "text", "selector-text", function(e4) {
              e4.attr("text-anchor", "middle");
            }).call(l.font, t3.font).text((a2 = r3, i2 = n2._fullLayout._meta, a2.label ? i2 ? s.templateString(a2.label, i2) : a2.label : "all" === a2.step ? "all" : a2.count + a2.step.charAt(0))).call(function(e4) {
              u.convertToTspans(e4, n2);
            });
          }
          e2.exports = function(e3) {
            var t3 = e3._fullLayout._infolayer.selectAll(".rangeselector").data(function(e4) {
              for (var t4 = f.list(e4, "x", true), r3 = [], n2 = 0; n2 < t4.length; n2++) {
                var a2 = t4[n2];
                a2.rangeselector && a2.rangeselector.visible && r3.push(a2);
              }
              return r3;
            }(e3), y);
            t3.enter().append("g").classed("rangeselector", true), t3.exit().remove(), t3.style({ cursor: "pointer", "pointer-events": "all" }), t3.each(function(t4) {
              var r3 = n.select(this), o2 = t4, f2 = o2.rangeselector, d2 = r3.selectAll("g.button").data(s.filterVisible(f2.buttons));
              d2.enter().append("g").classed("button", true), d2.exit().remove(), d2.each(function(t5) {
                var r4 = n.select(this), i2 = m(o2, t5);
                t5._isActive = function(e4, t6, r5) {
                  if ("all" === t6.step) return true === e4.autorange;
                  var n2 = Object.keys(r5);
                  return e4.range[0] === r5[n2[0]] && e4.range[1] === r5[n2[1]];
                }(o2, t5, i2), r4.call(x, f2, t5), r4.call(b, f2, t5, e3), r4.on("click", function() {
                  e3._dragged || a.call("_guiRelayout", e3, i2);
                }), r4.on("mouseover", function() {
                  t5._isHovered = true, r4.call(x, f2, t5);
                }), r4.on("mouseout", function() {
                  t5._isHovered = false, r4.call(x, f2, t5);
                });
              }), function(e4, t5, r4, a2, o3) {
                var f3 = 0, d3 = 0, m2 = r4.borderwidth;
                t5.each(function() {
                  var e5 = n.select(this).select(".selector-text"), t6 = r4.font.size * h, a3 = Math.max(t6 * u.lineCount(e5), 16) + 3;
                  d3 = Math.max(d3, a3);
                }), t5.each(function() {
                  var e5 = n.select(this), t6 = e5.select(".selector-rect"), a3 = e5.select(".selector-text"), i2 = a3.node() && l.bBox(a3.node()).width, o4 = r4.font.size * h, s2 = u.lineCount(a3), p2 = Math.max(i2 + 10, g.minButtonWidth);
                  e5.attr("transform", c(m2 + f3, m2)), t6.attr({ x: 0, y: 0, width: p2, height: d3 }), u.positionText(a3, p2 / 2, d3 / 2 - (s2 - 1) * o4 / 2 + 3), f3 += p2 + 5;
                });
                var y2 = e4._fullLayout._size, x2 = y2.l + y2.w * r4.x, b2 = y2.t + y2.h * (1 - r4.y), _ = "left";
                s.isRightAnchor(r4) && (x2 -= f3, _ = "right"), s.isCenterAnchor(r4) && (x2 -= f3 / 2, _ = "center");
                var w = "top";
                s.isBottomAnchor(r4) && (b2 -= d3, w = "bottom"), s.isMiddleAnchor(r4) && (b2 -= d3 / 2, w = "middle"), f3 = Math.ceil(f3), d3 = Math.ceil(d3), x2 = Math.round(x2), b2 = Math.round(b2), i.autoMargin(e4, a2 + "-range-selector", { x: r4.x, y: r4.y, l: f3 * p[_], r: f3 * v[_], b: d3 * v[w], t: d3 * p[w] }), o3.attr("transform", c(x2, b2));
              }(e3, d2, f2, o2._name, r3);
            });
          };
        }, 6383: function(e2, t2, r2) {
          var n = r2(936), a = r2(4809).titleCase;
          e2.exports = function(e3, t3) {
            var r3 = e3._name, i = {};
            if ("all" === t3.step) i[r3 + ".autorange"] = true;
            else {
              var o = function(e4, t4) {
                var r4, i2 = e4.range, o2 = new Date(e4.r2l(i2[1])), l = t4.step, s = n["utc" + a(l)], c = t4.count;
                switch (t4.stepmode) {
                  case "backward":
                    r4 = e4.l2r(+s.offset(o2, -c));
                    break;
                  case "todate":
                    var u = s.offset(o2, -c);
                    r4 = e4.l2r(+s.ceil(u));
                }
                return [r4, i2[1]];
              }(e3, t3);
              i[r3 + ".range[0]"] = o[0], i[r3 + ".range[1]"] = o[1];
            }
            return i;
          };
        }, 4453: function(e2, t2, r2) {
          e2.exports = { moduleType: "component", name: "rangeselector", schema: { subplots: { xaxis: { rangeselector: r2(1032) } } }, layoutAttributes: r2(1032), handleDefaults: r2(6255), draw: r2(5431) };
        }, 3608: function(e2, t2, r2) {
          var n = r2(229);
          e2.exports = { bgcolor: { valType: "color", dflt: n.background, editType: "plot" }, bordercolor: { valType: "color", dflt: n.defaultLine, editType: "plot" }, borderwidth: { valType: "integer", dflt: 0, min: 0, editType: "plot" }, autorange: { valType: "boolean", dflt: true, editType: "calc", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, range: { valType: "info_array", items: [{ valType: "any", editType: "calc", impliedEdits: { "^autorange": false } }, { valType: "any", editType: "calc", impliedEdits: { "^autorange": false } }], editType: "calc", impliedEdits: { autorange: false } }, thickness: { valType: "number", dflt: 0.15, min: 0, max: 1, editType: "plot" }, visible: { valType: "boolean", dflt: true, editType: "calc" }, editType: "calc" };
        }, 6223: function(e2, t2, r2) {
          var n = r2(5975).list, a = r2(2919).getAutoRange, i = r2(604);
          e2.exports = function(e3) {
            for (var t3 = n(e3, "x", true), r3 = 0; r3 < t3.length; r3++) {
              var o = t3[r3], l = o[i.name];
              l && l.visible && l.autorange && (l._input.autorange = true, l._input.range = l.range = a(e3, o));
            }
          };
        }, 604: function(e2) {
          e2.exports = { name: "rangeslider", containerClassName: "rangeslider-container", bgClassName: "rangeslider-bg", rangePlotClassName: "rangeslider-rangeplot", maskMinClassName: "rangeslider-mask-min", maskMaxClassName: "rangeslider-mask-max", slideBoxClassName: "rangeslider-slidebox", grabberMinClassName: "rangeslider-grabber-min", grabAreaMinClassName: "rangeslider-grabarea-min", handleMinClassName: "rangeslider-handle-min", grabberMaxClassName: "rangeslider-grabber-max", grabAreaMaxClassName: "rangeslider-grabarea-max", handleMaxClassName: "rangeslider-handle-max", maskMinOppAxisClassName: "rangeslider-mask-min-opp-axis", maskMaxOppAxisClassName: "rangeslider-mask-max-opp-axis", maskColor: "rgba(0,0,0,0.4)", maskOppAxisColor: "rgba(0,0,0,0.2)", slideBoxFill: "transparent", slideBoxCursor: "ew-resize", grabAreaFill: "transparent", grabAreaCursor: "col-resize", grabAreaWidth: 10, handleWidth: 4, handleRadius: 1, handleStrokeWidth: 1, extraPad: 15 };
        }, 1295: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8032), i = r2(5975), o = r2(3608), l = r2(6249);
          e2.exports = function(e3, t3, r3) {
            var s = e3[r3], c = t3[r3];
            if (s.rangeslider || t3._requestRangeslider[c._id]) {
              n.isPlainObject(s.rangeslider) || (s.rangeslider = {});
              var u, f, d = s.rangeslider, h = a.newContainer(c, "rangeslider");
              if (_("visible")) {
                _("bgcolor", t3.plot_bgcolor), _("bordercolor"), _("borderwidth"), _("thickness"), _("autorange", !c.isValidRange(d.range)), _("range");
                var p = t3._subplots;
                if (p) for (var v = p.cartesian.filter(function(e4) {
                  return e4.substr(0, e4.indexOf("y")) === i.name2id(r3);
                }).map(function(e4) {
                  return e4.substr(e4.indexOf("y"), e4.length);
                }), g = n.simpleMap(v, i.id2name), m = 0; m < g.length; m++) {
                  var y = g[m];
                  u = d[y] || {}, f = a.newContainer(h, y, "yaxis");
                  var x, b = t3[y];
                  u.range && b.isValidRange(u.range) && (x = "fixed"), "match" !== w("rangemode", x) && w("range", b.range.slice());
                }
                h._input = d;
              }
            }
            function _(e4, t4) {
              return n.coerce(d, h, o, e4, t4);
            }
            function w(e4, t4) {
              return n.coerce(u, f, l, e4, t4);
            }
          };
        }, 8887: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4122), o = r2(4809), l = o.strTranslate, s = r2(2203), c = r2(8766), u = r2(7240), f = r2(84), d = r2(5975), h = r2(4751), p = r2(7983), v = r2(604);
          function g(e3) {
            return "number" == typeof e3.clientX ? e3.clientX : e3.touches && e3.touches.length > 0 ? e3.touches[0].clientX : 0;
          }
          function m(e3, t3, r3, n2) {
            var a2 = o.ensureSingle(e3, "rect", v.bgClassName, function(e4) {
              e4.attr({ x: 0, y: 0, "shape-rendering": "crispEdges" });
            }), i2 = n2.borderwidth % 2 == 0 ? n2.borderwidth : n2.borderwidth - 1, u2 = -n2._offsetShift, f2 = s.crispRound(t3, n2.borderwidth);
            a2.attr({ width: n2._width + i2, height: n2._height + i2, transform: l(u2, u2), "stroke-width": f2 }).call(c.stroke, n2.bordercolor).call(c.fill, n2.bgcolor);
          }
          function y(e3, t3, r3, n2) {
            var a2 = t3._fullLayout;
            o.ensureSingleById(a2._topdefs, "clipPath", n2._clipId, function(e4) {
              e4.append("rect").attr({ x: 0, y: 0 });
            }).select("rect").attr({ width: n2._width, height: n2._height });
          }
          function x(e3, t3, r3, a2) {
            var l2, c2 = t3.calcdata, u2 = e3.selectAll("g." + v.rangePlotClassName).data(r3._subplotsWith, o.identity);
            u2.enter().append("g").attr("class", function(e4) {
              return v.rangePlotClassName + " " + e4;
            }).call(s.setClipUrl, a2._clipId, t3), u2.order(), u2.exit().remove(), u2.each(function(e4, o2) {
              var s2 = n.select(this), u3 = 0 === o2, h2 = d.getFromId(t3, e4, "y"), p2 = h2._name, v2 = a2[p2], g2 = { data: [], layout: { xaxis: { type: r3.type, domain: [0, 1], range: a2.range.slice(), calendar: r3.calendar }, width: a2._width, height: a2._height, margin: { t: 0, b: 0, l: 0, r: 0 } }, _context: t3._context };
              r3.rangebreaks && (g2.layout.xaxis.rangebreaks = r3.rangebreaks), g2.layout[p2] = { type: h2.type, domain: [0, 1], range: "match" !== v2.rangemode ? v2.range.slice() : h2.range.slice(), calendar: h2.calendar }, h2.rangebreaks && (g2.layout[p2].rangebreaks = h2.rangebreaks), i.supplyDefaults(g2);
              var m2 = g2._fullLayout.xaxis, y2 = g2._fullLayout[p2];
              m2.clearCalc(), m2.setScale(), y2.clearCalc(), y2.setScale();
              var x2 = { id: e4, plotgroup: s2, xaxis: m2, yaxis: y2, isRangePlot: true };
              u3 ? l2 = x2 : (x2.mainplot = "xy", x2.mainplotinfo = l2), f.rangePlot(t3, x2, function(e5, t4) {
                for (var r4 = [], n2 = 0; n2 < e5.length; n2++) {
                  var a3 = e5[n2], i2 = a3[0].trace;
                  i2.xaxis + i2.yaxis === t4 && r4.push(a3);
                }
                return r4;
              }(c2, e4));
            });
          }
          function b(e3, t3, r3, n2, a2) {
            o.ensureSingle(e3, "rect", v.maskMinClassName, function(e4) {
              e4.attr({ x: 0, y: 0, "shape-rendering": "crispEdges" });
            }).attr("height", n2._height).call(c.fill, v.maskColor), o.ensureSingle(e3, "rect", v.maskMaxClassName, function(e4) {
              e4.attr({ y: 0, "shape-rendering": "crispEdges" });
            }).attr("height", n2._height).call(c.fill, v.maskColor), "match" !== a2.rangemode && (o.ensureSingle(e3, "rect", v.maskMinOppAxisClassName, function(e4) {
              e4.attr({ y: 0, "shape-rendering": "crispEdges" });
            }).attr("width", n2._width).call(c.fill, v.maskOppAxisColor), o.ensureSingle(e3, "rect", v.maskMaxOppAxisClassName, function(e4) {
              e4.attr({ y: 0, "shape-rendering": "crispEdges" });
            }).attr("width", n2._width).style("border-top", v.maskOppBorder).call(c.fill, v.maskOppAxisColor));
          }
          function _(e3, t3, r3, n2) {
            t3._context.staticPlot || o.ensureSingle(e3, "rect", v.slideBoxClassName, function(e4) {
              e4.attr({ y: 0, cursor: v.slideBoxCursor, "shape-rendering": "crispEdges" });
            }).attr({ height: n2._height, fill: v.slideBoxFill });
          }
          function w(e3, t3, r3, n2) {
            var a2 = o.ensureSingle(e3, "g", v.grabberMinClassName), i2 = o.ensureSingle(e3, "g", v.grabberMaxClassName), l2 = { x: 0, width: v.handleWidth, rx: v.handleRadius, fill: c.background, stroke: c.defaultLine, "stroke-width": v.handleStrokeWidth, "shape-rendering": "crispEdges" }, s2 = { y: Math.round(n2._height / 4), height: Math.round(n2._height / 2) };
            o.ensureSingle(a2, "rect", v.handleMinClassName, function(e4) {
              e4.attr(l2);
            }).attr(s2), o.ensureSingle(i2, "rect", v.handleMaxClassName, function(e4) {
              e4.attr(l2);
            }).attr(s2);
            var u2 = { width: v.grabAreaWidth, x: 0, y: 0, fill: v.grabAreaFill, cursor: t3._context.staticPlot ? void 0 : v.grabAreaCursor };
            o.ensureSingle(a2, "rect", v.grabAreaMinClassName, function(e4) {
              e4.attr(u2);
            }).attr("height", n2._height), o.ensureSingle(i2, "rect", v.grabAreaMaxClassName, function(e4) {
              e4.attr(u2);
            }).attr("height", n2._height);
          }
          e2.exports = function(e3) {
            for (var t3 = e3._fullLayout, r3 = t3._rangeSliderData, i2 = 0; i2 < r3.length; i2++) {
              var s2 = r3[i2][v.name];
              s2._clipId = s2._id + "-" + t3._uid;
            }
            var c2 = t3._infolayer.selectAll("g." + v.containerClassName).data(r3, function(e4) {
              return e4._name;
            });
            c2.exit().each(function(e4) {
              var r4 = e4[v.name];
              t3._topdefs.select("#" + r4._clipId).remove();
            }).remove(), 0 !== r3.length && (c2.enter().append("g").classed(v.containerClassName, true).attr("pointer-events", "all"), c2.each(function(r4) {
              var i3 = n.select(this), s3 = r4[v.name], c3 = t3[d.id2name(r4.anchor)], f2 = s3[d.id2name(r4.anchor)];
              if (s3.range) {
                var T, M = o.simpleMap(s3.range, r4.r2l), k = o.simpleMap(r4.range, r4.r2l);
                T = k[0] < k[1] ? [Math.min(M[0], k[0]), Math.max(M[1], k[1])] : [Math.max(M[0], k[0]), Math.min(M[1], k[1])], s3.range = s3._input.range = o.simpleMap(T, r4.l2r);
              }
              r4.cleanRange("rangeslider.range");
              var A = t3._size, L = r4.domain;
              s3._width = A.w * (L[1] - L[0]);
              var S = Math.round(A.l + A.w * L[0]), C = Math.round(A.t + A.h * (1 - r4._counterDomainMin) + ("bottom" === r4.side ? r4._depth : 0) + s3._offsetShift + v.extraPad);
              i3.attr("transform", l(S, C)), s3._rl = o.simpleMap(s3.range, r4.r2l);
              var O = s3._rl[0], D = s3._rl[1], P = D - O;
              if (s3.p2d = function(e4) {
                return e4 / s3._width * P + O;
              }, s3.d2p = function(e4) {
                return (e4 - O) / P * s3._width;
              }, r4.rangebreaks) {
                var z = r4.locateBreaks(O, D);
                if (z.length) {
                  var I, E, R = 0;
                  for (I = 0; I < z.length; I++) R += (E = z[I]).max - E.min;
                  var N = s3._width / (D - O - R), F = [-N * O];
                  for (I = 0; I < z.length; I++) E = z[I], F.push(F[F.length - 1] - N * (E.max - E.min));
                  for (s3.d2p = function(e4) {
                    for (var t4 = F[0], r5 = 0; r5 < z.length; r5++) {
                      var n2 = z[r5];
                      if (e4 >= n2.max) t4 = F[r5 + 1];
                      else if (e4 < n2.min) break;
                    }
                    return t4 + N * e4;
                  }, I = 0; I < z.length; I++) (E = z[I]).pmin = s3.d2p(E.min), E.pmax = s3.d2p(E.max);
                  s3.p2d = function(e4) {
                    for (var t4 = F[0], r5 = 0; r5 < z.length; r5++) {
                      var n2 = z[r5];
                      if (e4 >= n2.pmax) t4 = F[r5 + 1];
                      else if (e4 < n2.pmin) break;
                    }
                    return (e4 - t4) / N;
                  };
                }
              }
              if ("match" !== f2.rangemode) {
                var H = c3.r2l(f2.range[0]), B = c3.r2l(f2.range[1]) - H;
                s3.d2pOppAxis = function(e4) {
                  return (e4 - H) / B * s3._height;
                };
              }
              i3.call(m, e3, r4, s3).call(y, e3, r4, s3).call(x, e3, r4, s3).call(b, e3, r4, s3, f2).call(_, e3, r4, s3).call(w, e3, r4, s3), function(e4, t4, r5, i4) {
                if (!t4._context.staticPlot) {
                  var l2 = e4.select("rect." + v.slideBoxClassName).node(), s4 = e4.select("rect." + v.grabAreaMinClassName).node(), c4 = e4.select("rect." + v.grabAreaMaxClassName).node();
                  e4.on("mousedown", u2), e4.on("touchstart", u2);
                }
                function u2() {
                  var u3 = n.event, f3 = u3.target, d2 = g(u3), v2 = d2 - e4.node().getBoundingClientRect().left, m2 = i4.d2p(r5._rl[0]), y2 = i4.d2p(r5._rl[1]), x2 = h.coverSlip();
                  function b2(e5) {
                    var u4, h2, b3, _3 = +g(e5) - d2;
                    switch (f3) {
                      case l2:
                        if (b3 = "ew-resize", m2 + _3 > r5._length || y2 + _3 < 0) return;
                        u4 = m2 + _3, h2 = y2 + _3;
                        break;
                      case s4:
                        if (b3 = "col-resize", m2 + _3 > r5._length) return;
                        u4 = m2 + _3, h2 = y2;
                        break;
                      case c4:
                        if (b3 = "col-resize", y2 + _3 < 0) return;
                        u4 = m2, h2 = y2 + _3;
                        break;
                      default:
                        b3 = "ew-resize", u4 = v2, h2 = v2 + _3;
                    }
                    if (h2 < u4) {
                      var w2 = h2;
                      h2 = u4, u4 = w2;
                    }
                    i4._pixelMin = u4, i4._pixelMax = h2, p(n.select(x2), b3), function(e6, t5, r6, n2) {
                      function i5(e7) {
                        return r6.l2r(o.constrain(e7, n2._rl[0], n2._rl[1]));
                      }
                      var l3 = i5(n2.p2d(n2._pixelMin)), s5 = i5(n2.p2d(n2._pixelMax));
                      window.requestAnimationFrame(function() {
                        a.call("_guiRelayout", t5, r6._name + ".range", [l3, s5]);
                      });
                    }(0, t4, r5, i4);
                  }
                  function _2() {
                    x2.removeEventListener("mousemove", b2), x2.removeEventListener("mouseup", _2), this.removeEventListener("touchmove", b2), this.removeEventListener("touchend", _2), o.removeElement(x2);
                  }
                  this.addEventListener("touchmove", b2), this.addEventListener("touchend", _2), x2.addEventListener("mousemove", b2), x2.addEventListener("mouseup", _2);
                }
              }(i3, e3, r4, s3), function(e4, t4, r5, n2, a2, i4) {
                var s4 = v.handleWidth / 2;
                function c4(e5) {
                  return o.constrain(e5, 0, n2._width);
                }
                function u2(e5) {
                  return o.constrain(e5, 0, n2._height);
                }
                function f3(e5) {
                  return o.constrain(e5, -s4, n2._width + s4);
                }
                var d2 = c4(n2.d2p(r5._rl[0])), h2 = c4(n2.d2p(r5._rl[1]));
                if (e4.select("rect." + v.slideBoxClassName).attr("x", d2).attr("width", h2 - d2), e4.select("rect." + v.maskMinClassName).attr("width", d2), e4.select("rect." + v.maskMaxClassName).attr("x", h2).attr("width", n2._width - h2), "match" !== i4.rangemode) {
                  var p2 = n2._height - u2(n2.d2pOppAxis(a2._rl[1])), g2 = n2._height - u2(n2.d2pOppAxis(a2._rl[0]));
                  e4.select("rect." + v.maskMinOppAxisClassName).attr("x", d2).attr("height", p2).attr("width", h2 - d2), e4.select("rect." + v.maskMaxOppAxisClassName).attr("x", d2).attr("y", g2).attr("height", n2._height - g2).attr("width", h2 - d2), e4.select("rect." + v.slideBoxClassName).attr("y", p2).attr("height", g2 - p2);
                }
                var m2 = 0.5, y2 = Math.round(f3(d2 - s4)) - m2, x2 = Math.round(f3(h2 - s4)) + m2;
                e4.select("g." + v.grabberMinClassName).attr("transform", l(y2, m2)), e4.select("g." + v.grabberMaxClassName).attr("transform", l(x2, m2));
              }(i3, 0, r4, s3, c3, f2), "bottom" === r4.side && u.draw(e3, r4._id + "title", { propContainer: r4, propName: r4._name + ".title", placeholder: t3._dfltTitle.x, attributes: { x: r4._offset + r4._length / 2, y: C + s3._height + s3._offsetShift + 10 + 1.5 * r4.title.font.size, "text-anchor": "middle" } });
            }));
          };
        }, 400: function(e2, t2, r2) {
          var n = r2(5975), a = r2(635), i = r2(604), o = r2(4530).LINE_SPACING, l = i.name;
          function s(e3) {
            var t3 = e3 && e3[l];
            return t3 && t3.visible;
          }
          t2.isVisible = s, t2.makeData = function(e3) {
            var t3 = n.list({ _fullLayout: e3 }, "x", true), r3 = e3.margin, a2 = [];
            if (!e3._has("gl2d")) for (var i2 = 0; i2 < t3.length; i2++) {
              var o2 = t3[i2];
              if (s(o2)) {
                a2.push(o2);
                var c = o2[l];
                c._id = l + o2._id, c._height = (e3.height - r3.b - r3.t) * c.thickness, c._offsetShift = Math.floor(c.borderwidth / 2);
              }
            }
            e3._rangeSliderData = a2;
          }, t2.autoMarginOpts = function(e3, t3) {
            var r3 = e3._fullLayout, n2 = t3[l], s2 = t3._id.charAt(0), c = 0, u = 0;
            return "bottom" === t3.side && (c = t3._depth, t3.title.text !== r3._dfltTitle[s2] && (u = 1.5 * t3.title.font.size + 10 + n2._offsetShift, u += (t3.title.text.match(a.BR_TAG_ALL) || []).length * t3.title.font.size * o)), { x: 0, y: t3._counterDomainMin, l: 0, r: 0, t: 0, b: n2._height + c + Math.max(r3.margin.b, u), pad: i.extraPad + 2 * n2._offsetShift };
          };
        }, 5429: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3608), i = r2(6249), o = r2(400);
          e2.exports = { moduleType: "component", name: "rangeslider", schema: { subplots: { xaxis: { rangeslider: n.extendFlat({}, a, { yaxis: i }) } } }, layoutAttributes: r2(3608), handleDefaults: r2(1295), calcAutorange: r2(6223), draw: r2(8887), isVisible: o.isVisible, makeData: o.makeData, autoMarginOpts: o.autoMarginOpts };
        }, 6249: function(e2) {
          e2.exports = { _isSubplotObj: true, rangemode: { valType: "enumerated", values: ["auto", "fixed", "match"], dflt: "match", editType: "calc" }, range: { valType: "info_array", items: [{ valType: "any", editType: "plot" }, { valType: "any", editType: "plot" }], editType: "plot" }, editType: "calc" };
        }, 4327: function(e2, t2, r2) {
          var n = r2(222), a = r2(6640).line, i = r2(4850).T, o = r2(3049).extendFlat, l = r2(3582).overrideAll, s = r2(8032).templatedArray;
          r2(5081), e2.exports = l(s("selection", { type: { valType: "enumerated", values: ["rect", "path"] }, xref: o({}, n.xref, {}), yref: o({}, n.yref, {}), x0: { valType: "any" }, x1: { valType: "any" }, y0: { valType: "any" }, y1: { valType: "any" }, path: { valType: "string", editType: "arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.7, editType: "arraydraw" }, line: { color: a.color, width: o({}, a.width, { min: 1, dflt: 1 }), dash: o({}, i, { dflt: "dot" }) } }), "arraydraw", "from-root");
        }, 8865: function(e2) {
          e2.exports = { BENDPX: 1.5, MINSELECT: 12, SELECTDELAY: 100, SELECTID: "-select" };
        }, 2272: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(9008), o = r2(4327), l = r2(9728);
          function s(e3, t3, r3) {
            function i2(r4, a2) {
              return n.coerce(e3, t3, o, r4, a2);
            }
            var s2 = i2("path"), c = "path" !== i2("type", s2 ? "path" : "rect");
            c && delete t3.path, i2("opacity"), i2("line.color"), i2("line.width"), i2("line.dash");
            for (var u = ["x", "y"], f = 0; f < 2; f++) {
              var d, h, p, v = u[f], g = { _fullLayout: r3 }, m = a.coerceRef(e3, t3, g, v);
              if ((d = a.getFromId(g, m))._selectionIndices.push(t3._index), p = l.rangeToShapePosition(d), h = l.shapePositionToRange(d), c) {
                var y = v + "0", x = v + "1", b = e3[y], _ = e3[x];
                e3[y] = h(e3[y], true), e3[x] = h(e3[x], true), a.coercePosition(t3, g, i2, m, y), a.coercePosition(t3, g, i2, m, x);
                var w = t3[y], T = t3[x];
                void 0 !== w && void 0 !== T && (t3[y] = p(w), t3[x] = p(T), e3[y] = b, e3[x] = _);
              }
            }
            c && n.noneOrAll(e3, t3, ["x0", "x1", "y0", "y1"]);
          }
          e2.exports = function(e3, t3) {
            i(e3, t3, { name: "selections", handleItemDefaults: s });
            for (var r3 = t3.selections, n2 = 0; n2 < r3.length; n2++) {
              var a2 = r3[n2];
              a2 && void 0 === a2.path && (void 0 !== a2.x0 && void 0 !== a2.x1 && void 0 !== a2.y0 && void 0 !== a2.y1 || (t3.selections[n2] = null));
            }
          };
        }, 7028: function(e2, t2, r2) {
          var n = r2(1055).readPaths, a = r2(561), i = r2(8534).clearOutlineControllers, o = r2(8766), l = r2(2203), s = r2(8032).arrayEditor, c = r2(9728), u = c.getPathString;
          function f(e3) {
            var t3 = e3._fullLayout;
            for (var r3 in i(e3), t3._selectionLayer.selectAll("path").remove(), t3._plots) {
              var n2 = t3._plots[r3].selectionLayer;
              n2 && n2.selectAll("path").remove();
            }
            for (var a2 = 0; a2 < t3.selections.length; a2++) h(e3, a2);
          }
          function d(e3) {
            return e3._context.editSelection;
          }
          function h(e3, t3) {
            e3._fullLayout._paperdiv.selectAll('.selectionlayer [data-index="' + t3 + '"]').remove();
            var r3 = c.makeSelectionsOptionsAndPlotinfo(e3, t3), i2 = r3.options, h2 = r3.plotinfo;
            i2._input && function(r4) {
              var c2 = u(e3, i2), g = { "data-index": t3, "fill-rule": "evenodd", d: c2 }, m = i2.opacity, y = "rgba(0,0,0,0)", x = i2.line.color || o.contrast(e3._fullLayout.plot_bgcolor), b = i2.line.width, _ = i2.line.dash;
              b || (b = 5, _ = "solid");
              var w = d(e3) && e3._fullLayout._activeSelectionIndex === t3;
              w && (y = e3._fullLayout.activeselection.fillcolor, m = e3._fullLayout.activeselection.opacity);
              for (var T = [], M = 1; M >= 0; M--) {
                var k = r4.append("path").attr(g).style("opacity", M ? 0.1 : m).call(o.stroke, x).call(o.fill, y).call(l.dashLine, M ? "solid" : _, M ? 4 + b : b);
                if (p(k, e3, i2), w) {
                  var A = s(e3.layout, "selections", i2);
                  k.style({ cursor: "move" });
                  var L = { element: k.node(), plotinfo: h2, gd: e3, editHelpers: A, isActiveSelection: true }, S = n(c2, e3);
                  a(S, k, L);
                } else k.style("pointer-events", M ? "all" : "none");
                T[M] = k;
              }
              var C = T[0];
              T[1].node().addEventListener("click", function() {
                return function(e4, t4) {
                  if (d(e4)) {
                    var r5 = +t4.node().getAttribute("data-index");
                    if (r5 >= 0) {
                      if (r5 === e4._fullLayout._activeSelectionIndex) return void v(e4);
                      e4._fullLayout._activeSelectionIndex = r5, e4._fullLayout._deactivateSelection = v, f(e4);
                    }
                  }
                }(e3, C);
              });
            }(e3._fullLayout._selectionLayer);
          }
          function p(e3, t3, r3) {
            var n2 = r3.xref + r3.yref;
            l.setClipUrl(e3, "clip" + t3._fullLayout._uid + n2, t3);
          }
          function v(e3) {
            d(e3) && e3._fullLayout._activeSelectionIndex >= 0 && (i(e3), delete e3._fullLayout._activeSelectionIndex, f(e3));
          }
          e2.exports = { draw: f, drawOne: h, activateLastSelection: function(e3) {
            if (d(e3)) {
              var t3 = e3._fullLayout.selections.length - 1;
              e3._fullLayout._activeSelectionIndex = t3, e3._fullLayout._deactivateSelection = v, f(e3);
            }
          } };
        }, 2307: function(e2, t2, r2) {
          var n = r2(4850).T, a = r2(3049).extendFlat;
          e2.exports = { newselection: { mode: { valType: "enumerated", values: ["immediate", "gradual"], dflt: "immediate", editType: "none" }, line: { color: { valType: "color", editType: "none" }, width: { valType: "number", min: 1, dflt: 1, editType: "none" }, dash: a({}, n, { dflt: "dot", editType: "none" }), editType: "none" }, editType: "none" }, activeselection: { fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "none" }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "none" }, editType: "none" } };
        }, 3028: function(e2) {
          e2.exports = function(e3, t2, r2) {
            r2("newselection.mode"), r2("newselection.line.width") && (r2("newselection.line.color"), r2("newselection.line.dash")), r2("activeselection.fillcolor"), r2("activeselection.opacity");
          };
        }, 4198: function(e2, t2, r2) {
          var n = r2(414).selectMode, a = r2(8534).clearOutline, i = r2(1055), o = i.readPaths, l = i.writePaths, s = i.fixDatesForPaths;
          e2.exports = function(e3, t3) {
            if (e3.length) {
              var r3 = e3[0][0];
              if (r3) {
                var i2 = r3.getAttribute("d"), c = t3.gd, u = c._fullLayout.newselection, f = t3.plotinfo, d = f.xaxis, h = f.yaxis, p = t3.isActiveSelection, v = t3.dragmode, g = (c.layout || {}).selections || [];
                if (!n(v) && void 0 !== p) {
                  var m = c._fullLayout._activeSelectionIndex;
                  if (m < g.length) switch (c._fullLayout.selections[m].type) {
                    case "rect":
                      v = "select";
                      break;
                    case "path":
                      v = "lasso";
                  }
                }
                var y, x = o(i2, c, f, p), b = { xref: d._id, yref: h._id, opacity: u.opacity, line: { color: u.line.color, width: u.line.width, dash: u.line.dash } };
                1 === x.length && (y = x[0]), y && 5 === y.length && "select" === v ? (b.type = "rect", b.x0 = y[0][1], b.y0 = y[0][2], b.x1 = y[2][1], b.y1 = y[2][2]) : (b.type = "path", d && h && s(x, d, h), b.path = l(x), y = null), a(c);
                for (var _ = t3.editHelpers, w = (_ || {}).modifyItem, T = [], M = 0; M < g.length; M++) {
                  var k = c._fullLayout.selections[M];
                  if (k) {
                    if (T[M] = k._input, void 0 !== p && M === c._fullLayout._activeSelectionIndex) {
                      var A = b;
                      switch (k.type) {
                        case "rect":
                          w("x0", A.x0), w("x1", A.x1), w("y0", A.y0), w("y1", A.y1);
                          break;
                        case "path":
                          w("path", A.path);
                      }
                    }
                  } else T[M] = k;
                }
                return void 0 === p ? (T.push(b), T) : _ ? _.getUpdateObj() : {};
              }
            }
          };
        }, 9801: function(e2, t2, r2) {
          var n = r2(4809).strTranslate;
          function a(e3, t3) {
            switch (e3.type) {
              case "log":
                return e3.p2d(t3);
              case "date":
                return e3.p2r(t3, 0, e3.calendar);
              default:
                return e3.p2r(t3);
            }
          }
          e2.exports = { p2r: a, r2p: function(e3, t3) {
            switch (e3.type) {
              case "log":
                return e3.d2p(t3);
              case "date":
                return e3.r2p(t3, 0, e3.calendar);
              default:
                return e3.r2p(t3);
            }
          }, axValue: function(e3) {
            var t3 = "y" === e3._id.charAt(0) ? 1 : 0;
            return function(r3) {
              return a(e3, r3[t3]);
            };
          }, getTransform: function(e3) {
            return n(e3.xaxis._offset, e3.yaxis._offset);
          } };
        }, 4844: function(e2, t2, r2) {
          var n = r2(7028), a = r2(8666);
          e2.exports = { moduleType: "component", name: "selections", layoutAttributes: r2(4327), supplyLayoutDefaults: r2(2272), supplyDrawNewSelectionDefaults: r2(3028), includeBasePlot: r2(706)("selections"), draw: n.draw, drawOne: n.drawOne, reselect: a.reselect, prepSelect: a.prepSelect, clearOutline: a.clearOutline, clearSelectionsCache: a.clearSelectionsCache, selectOnClick: a.selectOnClick };
        }, 8666: function(e2, t2, r2) {
          var n = r2(1516), a = r2(2773), i = r2(3626), o = r2(2203).dashStyle, l = r2(8766), s = r2(2141), c = r2(6040).makeEventData, u = r2(414), f = u.freeMode, d = u.rectMode, h = u.drawMode, p = u.openMode, v = u.selectMode, g = r2(9728), m = r2(2956), y = r2(561), x = r2(8534).clearOutline, b = r2(1055), _ = b.handleEllipse, w = b.readPaths, T = r2(7562).newShapes, M = r2(4198), k = r2(7028).activateLastSelection, A = r2(4809), L = A.sorterAsc, S = r2(899), C = r2(4025), O = r2(5975).getFromId, D = r2(4823), P = r2(1817).redrawReglTraces, z = r2(8865), I = z.MINSELECT, E = S.filter, R = S.tester, N = r2(9801), F = N.p2r, H = N.axValue, B = N.getTransform;
          function j(e3) {
            return void 0 !== e3.subplot;
          }
          function Y(e3, t3, r3, n2, a2, i2, o2) {
            var l2, s2, c2, u2, f2, d2, h2, v2, g2, m2 = t3._hoverdata, x2 = t3._fullLayout.clickmode.indexOf("event") > -1, b2 = [];
            if (function(e4) {
              return e4 && Array.isArray(e4) && true !== e4[0].hoverOnBox;
            }(m2)) {
              G(e3, t3, i2);
              var _2 = function(e4, t4) {
                var r4, n3, a3 = e4[0], i3 = -1, o3 = [];
                for (n3 = 0; n3 < t4.length; n3++) if (r4 = t4[n3], a3.fullData._expandedIndex === r4.cd[0].trace._expandedIndex) {
                  if (true === a3.hoverOnBox) break;
                  void 0 !== a3.pointNumber ? i3 = a3.pointNumber : void 0 !== a3.binNumber && (i3 = a3.binNumber, o3 = a3.pointNumbers);
                  break;
                }
                return { pointNumber: i3, pointNumbers: o3, searchInfo: r4 };
              }(m2, l2 = J(t3, r3, n2, a2));
              if (_2.pointNumbers.length > 0 ? function(e4, t4) {
                var r4, n3, a3, i3 = [];
                for (a3 = 0; a3 < e4.length; a3++) (r4 = e4[a3]).cd[0].trace.selectedpoints && r4.cd[0].trace.selectedpoints.length > 0 && i3.push(r4);
                if (1 === i3.length && i3[0] === t4.searchInfo && (n3 = t4.searchInfo.cd[0].trace).selectedpoints.length === t4.pointNumbers.length) {
                  for (a3 = 0; a3 < t4.pointNumbers.length; a3++) if (n3.selectedpoints.indexOf(t4.pointNumbers[a3]) < 0) return false;
                  return true;
                }
                return false;
              }(l2, _2) : function(e4) {
                var t4, r4, n3 = 0;
                for (r4 = 0; r4 < e4.length; r4++) if ((t4 = e4[r4].cd[0].trace).selectedpoints) {
                  if (t4.selectedpoints.length > 1) return false;
                  if ((n3 += t4.selectedpoints.length) > 1) return false;
                }
                return 1 === n3;
              }(l2) && (d2 = K(_2))) {
                for (o2 && o2.remove(), g2 = 0; g2 < l2.length; g2++) (s2 = l2[g2])._module.selectPoints(s2, false);
                Q(t3, l2), Z(i2), x2 && de(t3);
              } else {
                for (h2 = e3.shiftKey && (void 0 !== d2 ? d2 : K(_2)), c2 = /* @__PURE__ */ function(e4, t4, r4) {
                  return { pointNumber: e4, searchInfo: t4, subtract: !!r4 };
                }(_2.pointNumber, _2.searchInfo, h2), u2 = q(i2.selectionDefs.concat([c2])), g2 = 0; g2 < l2.length; g2++) if (f2 = ee(l2[g2]._module.selectPoints(l2[g2], u2), l2[g2]), b2.length) for (var w2 = 0; w2 < f2.length; w2++) b2.push(f2[w2]);
                else b2 = f2;
                if (Q(t3, l2, v2 = { points: b2 }), c2 && i2 && i2.selectionDefs.push(c2), o2) {
                  var T2 = i2.mergedPolygons, M2 = p(i2.dragmode);
                  y(te(T2, M2), o2, i2);
                }
                x2 && fe(t3, v2);
              }
            }
          }
          function V(e3) {
            return "pointNumber" in e3 && "searchInfo" in e3;
          }
          function U(e3) {
            return { xmin: 0, xmax: 0, ymin: 0, ymax: 0, pts: [], contains: function(t3, r3, n2, a2) {
              var i2 = e3.searchInfo.cd[0].trace._expandedIndex;
              return a2.cd[0].trace._expandedIndex === i2 && n2 === e3.pointNumber;
            }, isRect: false, degenerate: false, subtract: !!e3.subtract };
          }
          function q(e3) {
            if (e3.length) {
              for (var t3 = [], r3 = V(e3[0]) ? 0 : e3[0][0][0], n2 = r3, a2 = V(e3[0]) ? 0 : e3[0][0][1], i2 = a2, o2 = 0; o2 < e3.length; o2++) if (V(e3[o2])) t3.push(U(e3[o2]));
              else {
                var l2 = R(e3[o2]);
                l2.subtract = !!e3[o2].subtract, t3.push(l2), r3 = Math.min(r3, l2.xmin), n2 = Math.max(n2, l2.xmax), a2 = Math.min(a2, l2.ymin), i2 = Math.max(i2, l2.ymax);
              }
              return { xmin: r3, xmax: n2, ymin: a2, ymax: i2, pts: [], contains: function(e4, r4, n3, a3) {
                for (var i3 = false, o3 = 0; o3 < t3.length; o3++) t3[o3].contains(e4, r4, n3, a3) && (i3 = !t3[o3].subtract);
                return i3;
              }, isRect: false, degenerate: false };
            }
          }
          function G(e3, t3, r3) {
            var n2 = t3._fullLayout, a2 = r3.plotinfo, i2 = r3.dragmode, o2 = n2._lastSelectedSubplot && n2._lastSelectedSubplot === a2.id, l2 = (e3.shiftKey || e3.altKey) && !(h(i2) && p(i2));
            o2 && l2 && a2.selection && a2.selection.selectionDefs && !r3.selectionDefs ? (r3.selectionDefs = a2.selection.selectionDefs, r3.mergedPolygons = a2.selection.mergedPolygons) : l2 && a2.selection || Z(r3), o2 || (x(t3), n2._lastSelectedSubplot = a2.id);
          }
          function Z(e3, t3) {
            var r3 = e3.dragmode, n2 = e3.plotinfo, a2 = e3.gd;
            (function(e4) {
              return e4._fullLayout._activeShapeIndex >= 0;
            })(a2) && a2._fullLayout._deactivateShape(a2), function(e4) {
              return e4._fullLayout._activeSelectionIndex >= 0;
            }(a2) && a2._fullLayout._deactivateSelection(a2);
            var o2 = a2._fullLayout._zoomlayer, l2 = h(r3), s2 = v(r3);
            if (l2 || s2) {
              var c2, u2, f2 = o2.selectAll(".select-outline-" + n2.id);
              f2 && a2._fullLayout._outlining && (l2 && (c2 = T(f2, e3)), c2 && i.call("_guiRelayout", a2, { shapes: c2 }), s2 && !j(e3) && (u2 = M(f2, e3)), u2 && (a2._fullLayout._noEmitSelectedAtStart = true, i.call("_guiRelayout", a2, { selections: u2 }).then(function() {
                t3 && k(a2);
              })), a2._fullLayout._outlining = false);
            }
            n2.selection = {}, n2.selection.selectionDefs = e3.selectionDefs = [], n2.selection.mergedPolygons = e3.mergedPolygons = [];
          }
          function W(e3) {
            return e3._id;
          }
          function J(e3, t3, r3, n2) {
            if (!e3.calcdata) return [];
            var a2, i2, o2, l2 = [], s2 = t3.map(W), c2 = r3.map(W);
            for (o2 = 0; o2 < e3.calcdata.length; o2++) if (true === (i2 = (a2 = e3.calcdata[o2])[0].trace).visible && i2._module && i2._module.selectPoints) if (!j({ subplot: n2 }) || i2.subplot !== n2 && i2.geo !== n2) if ("splom" === i2.type) {
              if (i2._xaxes[s2[0]] && i2._yaxes[c2[0]]) {
                var u2 = X(i2._module, a2, t3[0], r3[0]);
                u2.scene = e3._fullLayout._splomScenes[i2.uid], l2.push(u2);
              }
            } else if ("sankey" === i2.type) {
              var f2 = X(i2._module, a2, t3[0], r3[0]);
              l2.push(f2);
            } else {
              if (!(-1 !== s2.indexOf(i2.xaxis) || i2._xA && i2._xA.overlaying)) continue;
              if (!(-1 !== c2.indexOf(i2.yaxis) || i2._yA && i2._yA.overlaying)) continue;
              l2.push(X(i2._module, a2, O(e3, i2.xaxis), O(e3, i2.yaxis)));
            }
            else l2.push(X(i2._module, a2, t3[0], r3[0]));
            return l2;
          }
          function X(e3, t3, r3, n2) {
            return { _module: e3, cd: t3, xaxis: r3, yaxis: n2 };
          }
          function K(e3) {
            var t3 = e3.searchInfo.cd[0].trace, r3 = e3.pointNumber, n2 = e3.pointNumbers, a2 = n2.length > 0 ? n2[0] : r3;
            return !!t3.selectedpoints && t3.selectedpoints.indexOf(a2) > -1;
          }
          function Q(e3, t3, r3) {
            var n2, a2;
            for (n2 = 0; n2 < t3.length; n2++) {
              var o2 = t3[n2].cd[0].trace._fullInput, l2 = e3._fullLayout._tracePreGUI[o2.uid] || {};
              void 0 === l2.selectedpoints && (l2.selectedpoints = o2._input.selectedpoints || null);
            }
            if (r3) {
              var s2 = r3.points || [];
              for (n2 = 0; n2 < t3.length; n2++) (a2 = t3[n2].cd[0].trace)._input.selectedpoints = a2._fullInput.selectedpoints = [], a2._fullInput !== a2 && (a2.selectedpoints = []);
              for (var c2 = 0; c2 < s2.length; c2++) {
                var u2 = s2[c2], f2 = u2.data, d2 = u2.fullData, h2 = u2.pointIndex, p2 = u2.pointIndices;
                p2 ? ([].push.apply(f2.selectedpoints, p2), a2._fullInput !== a2 && [].push.apply(d2.selectedpoints, p2)) : (f2.selectedpoints.push(h2), a2._fullInput !== a2 && d2.selectedpoints.push(h2));
              }
            } else for (n2 = 0; n2 < t3.length; n2++) delete (a2 = t3[n2].cd[0].trace).selectedpoints, delete a2._input.selectedpoints, a2._fullInput !== a2 && delete a2._fullInput.selectedpoints;
            !function(e4, t4) {
              for (var r4 = false, n3 = 0; n3 < t4.length; n3++) {
                var a3 = t4[n3], o3 = a3.cd;
                i.traceIs(o3[0].trace, "regl") && (r4 = true);
                var l3 = a3._module, s3 = l3.styleOnSelect || l3.style;
                s3 && (s3(e4, o3, o3[0].node3), o3[0].nodeRangePlot3 && s3(e4, o3, o3[0].nodeRangePlot3));
              }
              r4 && (D(e4), P(e4));
            }(e3, t3);
          }
          function $(e3, t3, r3) {
            for (var a2 = (r3 ? n.difference : n.union)({ regions: e3 }, { regions: [t3] }).regions.reverse(), i2 = 0; i2 < a2.length; i2++) {
              var o2 = a2[i2];
              o2.subtract = le(o2, a2.slice(0, i2));
            }
            return a2;
          }
          function ee(e3, t3) {
            if (Array.isArray(e3)) for (var r3 = t3.cd, n2 = t3.cd[0].trace, a2 = 0; a2 < e3.length; a2++) e3[a2] = c(e3[a2], n2, r3);
            return e3;
          }
          function te(e3, t3) {
            for (var r3 = [], n2 = 0; n2 < e3.length; n2++) {
              r3[n2] = [];
              for (var a2 = 0; a2 < e3[n2].length; a2++) {
                r3[n2][a2] = [], r3[n2][a2][0] = a2 ? "L" : "M";
                for (var i2 = 0; i2 < e3[n2][a2].length; i2++) r3[n2][a2].push(e3[n2][a2][i2]);
              }
              t3 || r3[n2].push(["Z", r3[n2][0][1], r3[n2][0][2]]);
            }
            return r3;
          }
          function re(e3, t3) {
            for (var r3, n2, a2 = [], i2 = [], o2 = 0; o2 < t3.length; o2++) {
              var l2 = t3[o2];
              n2 = l2._module.selectPoints(l2, e3), i2.push(n2), r3 = ee(n2, l2), a2 = a2.concat(r3);
            }
            return a2;
          }
          function ne(e3, t3, r3, n2, a2) {
            var i2, o2, l2, s2 = !!n2;
            a2 && (i2 = a2.plotinfo, o2 = a2.xaxes[0]._id, l2 = a2.yaxes[0]._id);
            var c2 = [], u2 = [], f2 = oe(e3), d2 = e3._fullLayout;
            if (i2) {
              var p2 = d2._zoomlayer, g2 = d2.dragmode, m2 = h(g2), y2 = v(g2);
              if (m2 || y2) {
                var x2 = O(e3, o2, "x"), b2 = O(e3, l2, "y");
                if (x2 && b2) {
                  var _2 = p2.selectAll(".select-outline-" + i2.id);
                  if (_2 && e3._fullLayout._outlining && _2.length) {
                    for (var T2 = _2[0][0].getAttribute("d"), M2 = w(T2, e3, i2), k2 = [], A2 = 0; A2 < M2.length; A2++) {
                      for (var L2 = M2[A2], S2 = [], C2 = 0; C2 < L2.length; C2++) S2.push([se(x2, L2[C2][1]), se(b2, L2[C2][2])]);
                      S2.xref = o2, S2.yref = l2, S2.subtract = le(S2, k2), k2.push(S2);
                    }
                    f2 = f2.concat(k2);
                  }
                }
              }
            }
            var D2 = o2 && l2 ? [o2 + l2] : d2._subplots.cartesian;
            !function(e4) {
              var t4 = e4.calcdata;
              if (t4) for (var r4 = 0; r4 < t4.length; r4++) {
                var n3 = t4[r4][0].trace, a3 = e4._fullLayout._splomScenes;
                if (a3) {
                  var i3 = a3[n3.uid];
                  i3 && (i3.selectBatch = []);
                }
              }
            }(e3);
            for (var P2 = {}, z2 = 0; z2 < D2.length; z2++) {
              var I2 = D2[z2], E2 = I2.indexOf("y"), R2 = I2.slice(0, E2), N2 = I2.slice(E2), F2 = o2 && l2 ? r3 : void 0;
              if (F2 = ie(f2, R2, N2, F2)) {
                var H2 = n2;
                if (!s2) {
                  var B2 = O(e3, R2, "x"), j2 = O(e3, N2, "y");
                  H2 = J(e3, [B2], [j2], I2);
                  for (var Y2 = 0; Y2 < H2.length; Y2++) {
                    var V2 = H2[Y2], U2 = V2.cd[0], q2 = U2.trace;
                    if ("scattergl" === V2._module.name && !U2.t.xpx) {
                      var G2 = q2.x, Z2 = q2.y, W2 = q2._length;
                      U2.t.xpx = [], U2.t.ypx = [];
                      for (var X2 = 0; X2 < W2; X2++) U2.t.xpx[X2] = B2.c2p(G2[X2]), U2.t.ypx[X2] = j2.c2p(Z2[X2]);
                    }
                    "splom" === V2._module.name && (P2[q2.uid] || (P2[q2.uid] = true));
                  }
                }
                var K2 = re(F2, H2);
                c2 = c2.concat(K2), u2 = u2.concat(H2);
              }
            }
            var $2 = { points: c2 };
            Q(e3, u2, $2);
            var ee2 = d2.clickmode.indexOf("event") > -1 && t3;
            if (!i2 && t3) {
              var te2 = oe(e3, true);
              if (te2.length) {
                var ne2 = te2[0].xref, he = te2[0].yref;
                if (ne2 && he) {
                  var pe = ce(te2);
                  ue([O(e3, ne2, "x"), O(e3, he, "y")])($2, pe);
                }
              }
              e3._fullLayout._noEmitSelectedAtStart ? e3._fullLayout._noEmitSelectedAtStart = false : ee2 && fe(e3, $2), d2._reselect = false;
            }
            if (!i2 && d2._deselect) {
              var ve = d2._deselect;
              (function(e4, t4, r4) {
                for (var n3 = 0; n3 < r4.length; n3++) {
                  var a3 = r4[n3];
                  if (a3.xaxis && a3.xaxis._id === e4 && a3.yaxis && a3.yaxis._id === t4) return true;
                }
                return false;
              })(o2 = ve.xref, l2 = ve.yref, u2) || ae(e3, o2, l2, n2), ee2 && ($2.points.length ? fe(e3, $2) : de(e3)), d2._deselect = false;
            }
            return { eventData: $2, selectionTesters: r3 };
          }
          function ae(e3, t3, r3, n2) {
            n2 = J(e3, [O(e3, t3, "x")], [O(e3, r3, "y")], t3 + r3);
            for (var a2 = 0; a2 < n2.length; a2++) {
              var i2 = n2[a2];
              i2._module.selectPoints(i2, false);
            }
            Q(e3, n2);
          }
          function ie(e3, t3, r3, n2) {
            for (var a2, i2 = 0; i2 < e3.length; i2++) {
              var o2 = e3[i2];
              t3 === o2.xref && r3 === o2.yref && (a2 ? n2 = q(a2 = $(a2, o2, !!o2.subtract)) : (a2 = [o2], n2 = R(o2)));
            }
            return n2;
          }
          function oe(e3, t3) {
            for (var r3 = [], n2 = e3._fullLayout, a2 = n2.selections, i2 = a2.length, o2 = 0; o2 < i2; o2++) if (!t3 || o2 === n2._activeSelectionIndex) {
              var l2 = a2[o2];
              if (l2) {
                var s2, c2, u2, f2, d2, h2 = l2.xref, p2 = l2.yref, v2 = O(e3, h2, "x"), y2 = O(e3, p2, "y");
                if ("rect" === l2.type) {
                  d2 = [];
                  var x2 = se(v2, l2.x0), b2 = se(v2, l2.x1), _2 = se(y2, l2.y0), w2 = se(y2, l2.y1);
                  d2 = [[x2, _2], [x2, w2], [b2, w2], [b2, _2]], s2 = Math.min(x2, b2), c2 = Math.max(x2, b2), u2 = Math.min(_2, w2), f2 = Math.max(_2, w2), d2.xmin = s2, d2.xmax = c2, d2.ymin = u2, d2.ymax = f2, d2.xref = h2, d2.yref = p2, d2.subtract = false, d2.isRect = true, r3.push(d2);
                } else if ("path" === l2.type) for (var T2 = l2.path.split("Z"), M2 = [], k2 = 0; k2 < T2.length; k2++) {
                  var A2 = T2[k2];
                  if (A2) {
                    A2 += "Z";
                    var L2 = g.extractPathCoords(A2, m.paramIsX, "raw"), S2 = g.extractPathCoords(A2, m.paramIsY, "raw");
                    s2 = 1 / 0, c2 = -1 / 0, u2 = 1 / 0, f2 = -1 / 0, d2 = [];
                    for (var C2 = 0; C2 < L2.length; C2++) {
                      var D2 = se(v2, L2[C2]), P2 = se(y2, S2[C2]);
                      d2.push([D2, P2]), s2 = Math.min(D2, s2), c2 = Math.max(D2, c2), u2 = Math.min(P2, u2), f2 = Math.max(P2, f2);
                    }
                    d2.xmin = s2, d2.xmax = c2, d2.ymin = u2, d2.ymax = f2, d2.xref = h2, d2.yref = p2, d2.subtract = le(d2, M2), M2.push(d2), r3.push(d2);
                  }
                }
              }
            }
            return r3;
          }
          function le(e3, t3) {
            for (var r3 = false, n2 = 0; n2 < t3.length; n2++) for (var i2 = t3[n2], o2 = 0; o2 < e3.length; o2++) if (a(e3[o2], i2)) {
              r3 = !r3;
              break;
            }
            return r3;
          }
          function se(e3, t3) {
            return "date" === e3.type && (t3 = t3.replace("_", " ")), "log" === e3.type ? e3.c2p(t3) : e3.r2p(t3, null, e3.calendar);
          }
          function ce(e3) {
            for (var t3 = e3.length, r3 = [], n2 = 0; n2 < t3; n2++) {
              var a2 = e3[n2];
              r3 = (r3 = r3.concat(a2)).concat([a2[0]]);
            }
            return (i2 = r3).isRect = 5 === i2.length && i2[0][0] === i2[4][0] && i2[0][1] === i2[4][1] && i2[0][0] === i2[1][0] && i2[2][0] === i2[3][0] && i2[0][1] === i2[3][1] && i2[1][1] === i2[2][1] || i2[0][1] === i2[1][1] && i2[2][1] === i2[3][1] && i2[0][0] === i2[3][0] && i2[1][0] === i2[2][0], i2.isRect && (i2.xmin = Math.min(i2[0][0], i2[2][0]), i2.xmax = Math.max(i2[0][0], i2[2][0]), i2.ymin = Math.min(i2[0][1], i2[2][1]), i2.ymax = Math.max(i2[0][1], i2[2][1])), i2;
            var i2;
          }
          function ue(e3) {
            return function(t3, r3) {
              for (var n2, a2, i2 = 0; i2 < e3.length; i2++) {
                var o2 = e3[i2], l2 = o2._id, s2 = l2.charAt(0);
                if (r3.isRect) {
                  n2 || (n2 = {});
                  var c2 = r3[s2 + "min"], u2 = r3[s2 + "max"];
                  void 0 !== c2 && void 0 !== u2 && (n2[l2] = [F(o2, c2), F(o2, u2)].sort(L));
                } else a2 || (a2 = {}), a2[l2] = r3.map(H(o2));
              }
              n2 && (t3.range = n2), a2 && (t3.lassoPoints = a2);
            };
          }
          function fe(e3, t3) {
            t3 && (t3.selections = (e3.layout || {}).selections || []), e3.emit("plotly_selected", t3);
          }
          function de(e3) {
            e3.emit("plotly_deselect", null);
          }
          e2.exports = { reselect: ne, prepSelect: function(e3, t3, r3, n2, a2) {
            var c2 = !j(n2), u2 = f(a2), g2 = d(a2), m2 = p(a2), x2 = h(a2), b2 = v(a2), w2 = "drawcircle" === a2, T2 = "drawline" === a2 || w2, M2 = n2.gd, k2 = M2._fullLayout, L2 = b2 && "immediate" === k2.newselection.mode && c2, S2 = k2._zoomlayer, O2 = n2.element.getBoundingClientRect(), D2 = n2.plotinfo, P2 = B(D2), N2 = t3 - O2.left, F2 = r3 - O2.top;
            k2._calcInverseTransform(M2);
            var H2 = A.apply3DTransform(k2._invTransform)(N2, F2);
            N2 = H2[0], F2 = H2[1];
            var V2, U2, W2, X2, K2, ee2, ie2, oe2 = k2._invScaleX, le2 = k2._invScaleY, se2 = N2, he = F2, pe = "M" + N2 + "," + F2, ve = n2.xaxes[0], ge = n2.yaxes[0], me = ve._length, ye = ge._length, xe = e3.altKey && !(h(a2) && m2);
            G(e3, M2, n2), u2 && (V2 = E([[N2, F2]], z.BENDPX));
            var be = S2.selectAll("path.select-outline-" + D2.id).data([1]), _e = x2 ? k2.newshape : k2.newselection;
            x2 && (n2.hasText = _e.label.text || _e.label.texttemplate);
            var we = x2 && !m2 ? _e.fillcolor : "rgba(0,0,0,0)", Te = _e.line.color || (c2 ? l.contrast(M2._fullLayout.plot_bgcolor) : "#7f7f7f");
            be.enter().append("path").attr("class", "select-outline select-outline-" + D2.id).style({ opacity: x2 ? _e.opacity / 2 : 1, "stroke-dasharray": o(_e.line.dash, _e.line.width), "stroke-width": _e.line.width + "px", "shape-rendering": "crispEdges" }).call(l.stroke, Te).call(l.fill, we).attr("fill-rule", "evenodd").classed("cursor-move", !!x2).attr("transform", P2).attr("d", pe + "Z");
            var Me = S2.append("path").attr("class", "zoombox-corners").style({ fill: l.background, stroke: l.defaultLine, "stroke-width": 1 }).attr("transform", P2).attr("d", "M0,0Z");
            if (x2 && n2.hasText) {
              var ke = S2.select(".label-temp");
              ke.empty() && (ke = S2.append("g").classed("label-temp", true).classed("select-outline", true).style({ opacity: 0.8 }));
            }
            var Ae = k2._uid + z.SELECTID, Le = [], Se = J(M2, n2.xaxes, n2.yaxes, n2.subplot);
            L2 && !e3.shiftKey && (n2._clearSubplotSelections = function() {
              if (c2) {
                var e4 = ve._id, t4 = ge._id;
                ae(M2, e4, t4, Se);
                for (var r4 = (M2.layout || {}).selections || [], n3 = [], a3 = false, o2 = 0; o2 < r4.length; o2++) {
                  var l2 = k2.selections[o2];
                  l2.xref !== e4 || l2.yref !== t4 ? n3.push(r4[o2]) : a3 = true;
                }
                a3 && (M2._fullLayout._noEmitSelectedAtStart = true, i.call("_guiRelayout", M2, { selections: n3 }));
              }
            });
            var Ce = function(e4) {
              return e4.plotinfo.fillRangeItems || ue(e4.xaxes.concat(e4.yaxes));
            }(n2);
            n2.moveFn = function(e4, t4) {
              n2._clearSubplotSelections && (n2._clearSubplotSelections(), n2._clearSubplotSelections = void 0), se2 = Math.max(0, Math.min(me, oe2 * e4 + N2)), he = Math.max(0, Math.min(ye, le2 * t4 + F2));
              var r4 = Math.abs(se2 - N2), a3 = Math.abs(he - F2);
              if (g2) {
                var i2, o2, l2;
                if (b2) {
                  var s2 = k2.selectdirection;
                  switch (i2 = "any" === s2 ? a3 < Math.min(0.6 * r4, I) ? "h" : r4 < Math.min(0.6 * a3, I) ? "v" : "d" : s2) {
                    case "h":
                      o2 = w2 ? ye / 2 : 0, l2 = ye;
                      break;
                    case "v":
                      o2 = w2 ? me / 2 : 0, l2 = me;
                  }
                }
                if (x2) switch (k2.newshape.drawdirection) {
                  case "vertical":
                    i2 = "h", o2 = w2 ? ye / 2 : 0, l2 = ye;
                    break;
                  case "horizontal":
                    i2 = "v", o2 = w2 ? me / 2 : 0, l2 = me;
                    break;
                  case "ortho":
                    r4 < a3 ? (i2 = "h", o2 = F2, l2 = he) : (i2 = "v", o2 = N2, l2 = se2);
                    break;
                  default:
                    i2 = "d";
                }
                "h" === i2 ? ((X2 = T2 ? _(w2, [se2, o2], [se2, l2]) : [[N2, o2], [N2, l2], [se2, l2], [se2, o2]]).xmin = T2 ? se2 : Math.min(N2, se2), X2.xmax = T2 ? se2 : Math.max(N2, se2), X2.ymin = Math.min(o2, l2), X2.ymax = Math.max(o2, l2), Me.attr("d", "M" + X2.xmin + "," + (F2 - I) + "h-4v" + 2 * I + "h4ZM" + (X2.xmax - 1) + "," + (F2 - I) + "h4v" + 2 * I + "h-4Z")) : "v" === i2 ? ((X2 = T2 ? _(w2, [o2, he], [l2, he]) : [[o2, F2], [o2, he], [l2, he], [l2, F2]]).xmin = Math.min(o2, l2), X2.xmax = Math.max(o2, l2), X2.ymin = T2 ? he : Math.min(F2, he), X2.ymax = T2 ? he : Math.max(F2, he), Me.attr("d", "M" + (N2 - I) + "," + X2.ymin + "v-4h" + 2 * I + "v4ZM" + (N2 - I) + "," + (X2.ymax - 1) + "v4h" + 2 * I + "v-4Z")) : "d" === i2 && ((X2 = T2 ? _(w2, [N2, F2], [se2, he]) : [[N2, F2], [N2, he], [se2, he], [se2, F2]]).xmin = Math.min(N2, se2), X2.xmax = Math.max(N2, se2), X2.ymin = Math.min(F2, he), X2.ymax = Math.max(F2, he), Me.attr("d", "M0,0Z"));
              } else u2 && (V2.addPt([se2, he]), X2 = V2.filtered);
              if (n2.selectionDefs && n2.selectionDefs.length ? (W2 = $(n2.mergedPolygons, X2, xe), X2.subtract = xe, U2 = q(n2.selectionDefs.concat([X2]))) : (W2 = [X2], U2 = R(X2)), y(te(W2, m2), be, n2), b2) {
                var c3, f2 = ne(M2, false), d2 = f2.eventData ? f2.eventData.points.slice() : [];
                f2 = ne(M2, false, U2, Se, n2), U2 = f2.selectionTesters, ie2 = f2.eventData, c3 = V2 ? V2.filtered : ce(W2), C.throttle(Ae, z.SELECTDELAY, function() {
                  for (var e5 = (Le = re(U2, Se)).slice(), t5 = 0; t5 < d2.length; t5++) {
                    for (var r5 = d2[t5], n3 = false, a4 = 0; a4 < e5.length; a4++) if (e5[a4].curveNumber === r5.curveNumber && e5[a4].pointNumber === r5.pointNumber) {
                      n3 = true;
                      break;
                    }
                    n3 || e5.push(r5);
                  }
                  e5.length && (ie2 || (ie2 = {}), ie2.points = e5), Ce(ie2, c3), function(e6, t6) {
                    e6.emit("plotly_selecting", t6);
                  }(M2, ie2);
                });
              }
            }, n2.clickFn = function(e4, t4) {
              if (Me.remove(), M2._fullLayout._activeShapeIndex >= 0) M2._fullLayout._deactivateShape(M2);
              else if (!x2) {
                var r4 = k2.clickmode;
                C.done(Ae).then(function() {
                  if (C.clear(Ae), 2 === e4) {
                    for (be.remove(), K2 = 0; K2 < Se.length; K2++) (ee2 = Se[K2])._module.selectPoints(ee2, false);
                    if (Q(M2, Se), Z(n2), de(M2), Se.length) {
                      var a3 = Se[0].xaxis, o2 = Se[0].yaxis;
                      if (a3 && o2) {
                        for (var l2 = [], c3 = M2._fullLayout.selections, u3 = 0; u3 < c3.length; u3++) {
                          var f2 = c3[u3];
                          f2 && (f2.xref === a3._id && f2.yref === o2._id || l2.push(f2));
                        }
                        l2.length < c3.length && (M2._fullLayout._noEmitSelectedAtStart = true, i.call("_guiRelayout", M2, { selections: l2 }));
                      }
                    }
                  } else r4.indexOf("select") > -1 && Y(t4, M2, n2.xaxes, n2.yaxes, n2.subplot, n2, be), "event" === r4 && fe(M2, void 0);
                  s.click(M2, t4, D2.id);
                }).catch(A.error);
              }
            }, n2.doneFn = function() {
              Me.remove(), C.done(Ae).then(function() {
                C.clear(Ae), !L2 && X2 && n2.selectionDefs && (X2.subtract = xe, n2.selectionDefs.push(X2), n2.mergedPolygons.length = 0, [].push.apply(n2.mergedPolygons, W2)), (L2 || x2) && Z(n2, L2), n2.doneFnCompleted && n2.doneFnCompleted(Le), b2 && fe(M2, ie2);
              }).catch(A.error);
            };
          }, clearOutline: x, clearSelectionsCache: Z, selectOnClick: Y };
        }, 3144: function(e2, t2, r2) {
          var n = r2(222), a = r2(337), i = r2(6640).line, o = r2(4850).T, l = r2(3049).extendFlat, s = r2(8032).templatedArray, c = (r2(5081), r2(9829)), u = r2(3208).LF, f = r2(1235);
          e2.exports = s("shape", { visible: l({}, c.visible, { editType: "calc+arraydraw" }), showlegend: { valType: "boolean", dflt: false, editType: "calc+arraydraw" }, legend: l({}, c.legend, { editType: "calc+arraydraw" }), legendgroup: l({}, c.legendgroup, { editType: "calc+arraydraw" }), legendgrouptitle: { text: l({}, c.legendgrouptitle.text, { editType: "calc+arraydraw" }), font: a({ editType: "calc+arraydraw" }), editType: "calc+arraydraw" }, legendrank: l({}, c.legendrank, { editType: "calc+arraydraw" }), legendwidth: l({}, c.legendwidth, { editType: "calc+arraydraw" }), type: { valType: "enumerated", values: ["circle", "rect", "path", "line"], editType: "calc+arraydraw" }, layer: { valType: "enumerated", values: ["below", "above", "between"], dflt: "above", editType: "arraydraw" }, xref: l({}, n.xref, {}), xsizemode: { valType: "enumerated", values: ["scaled", "pixel"], dflt: "scaled", editType: "calc+arraydraw" }, xanchor: { valType: "any", editType: "calc+arraydraw" }, x0: { valType: "any", editType: "calc+arraydraw" }, x1: { valType: "any", editType: "calc+arraydraw" }, x0shift: { valType: "number", dflt: 0, min: -1, max: 1, editType: "calc" }, x1shift: { valType: "number", dflt: 0, min: -1, max: 1, editType: "calc" }, yref: l({}, n.yref, {}), ysizemode: { valType: "enumerated", values: ["scaled", "pixel"], dflt: "scaled", editType: "calc+arraydraw" }, yanchor: { valType: "any", editType: "calc+arraydraw" }, y0: { valType: "any", editType: "calc+arraydraw" }, y1: { valType: "any", editType: "calc+arraydraw" }, y0shift: { valType: "number", dflt: 0, min: -1, max: 1, editType: "calc" }, y1shift: { valType: "number", dflt: 0, min: -1, max: 1, editType: "calc" }, path: { valType: "string", editType: "calc+arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw" }, line: { color: l({}, i.color, { editType: "arraydraw" }), width: l({}, i.width, { editType: "calc+arraydraw" }), dash: l({}, o, { editType: "arraydraw" }), editType: "calc+arraydraw" }, fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw" }, fillrule: { valType: "enumerated", values: ["evenodd", "nonzero"], dflt: "evenodd", editType: "arraydraw" }, editable: { valType: "boolean", dflt: false, editType: "calc+arraydraw" }, label: { text: { valType: "string", dflt: "", editType: "arraydraw" }, texttemplate: u({}, { keys: Object.keys(f) }), font: a({ editType: "calc+arraydraw", colorEditType: "arraydraw" }), textposition: { valType: "enumerated", values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "start", "middle", "end"], editType: "arraydraw" }, textangle: { valType: "angle", dflt: "auto", editType: "calc+arraydraw" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "auto", editType: "calc+arraydraw" }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"], editType: "calc+arraydraw" }, padding: { valType: "number", dflt: 3, min: 0, editType: "arraydraw" }, editType: "arraydraw" }, editType: "arraydraw" });
        }, 4959: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(2956), o = r2(9728);
          function l(e3) {
            return c(e3.line.width, e3.xsizemode, e3.x0, e3.x1, e3.path, false);
          }
          function s(e3) {
            return c(e3.line.width, e3.ysizemode, e3.y0, e3.y1, e3.path, true);
          }
          function c(e3, t3, r3, a2, l2, s2) {
            var c2 = e3 / 2, u2 = s2;
            if ("pixel" === t3) {
              var f = l2 ? o.extractPathCoords(l2, s2 ? i.paramIsY : i.paramIsX) : [r3, a2], d = n.aggNums(Math.max, null, f), h = n.aggNums(Math.min, null, f), p = h < 0 ? Math.abs(h) + c2 : c2, v = d > 0 ? d + c2 : c2;
              return { ppad: c2, ppadplus: u2 ? p : v, ppadminus: u2 ? v : p };
            }
            return { ppad: c2 };
          }
          function u(e3, t3, r3) {
            var n2, a2, l2 = "x" === e3._id.charAt(0) ? "x" : "y", s2 = "category" === e3.type || "multicategory" === e3.type, c2 = 0, u2 = 0, f = s2 ? e3.r2c : e3.d2c;
            if ("scaled" === t3[l2 + "sizemode"] ? (n2 = t3[l2 + "0"], a2 = t3[l2 + "1"], s2 && (c2 = t3[l2 + "0shift"], u2 = t3[l2 + "1shift"])) : (n2 = t3[l2 + "anchor"], a2 = t3[l2 + "anchor"]), void 0 !== n2) return [f(n2) + c2, f(a2) + u2];
            if (t3.path) {
              var d, h, p, v, g = 1 / 0, m = -1 / 0, y = t3.path.match(i.segmentRE);
              for ("date" === e3.type && (f = o.decodeDate(f)), d = 0; d < y.length; d++) void 0 !== (h = r3[y[d].charAt(0)].drawn) && (!(p = y[d].substr(1).match(i.paramRE)) || p.length < h || ((v = f(p[h])) < g && (g = v), v > m && (m = v)));
              return m >= g ? [g, m] : void 0;
            }
          }
          e2.exports = function(e3) {
            var t3 = e3._fullLayout, r3 = n.filterVisible(t3.shapes);
            if (r3.length && e3._fullData.length) for (var o2 = 0; o2 < r3.length; o2++) {
              var c2, f, d = r3[o2];
              d._extremes = {};
              var h = a.getRefType(d.xref), p = a.getRefType(d.yref);
              "paper" !== d.xref && "domain" !== h && (f = u(c2 = a.getFromId(e3, d.xref), d, i.paramIsX)) && (d._extremes[c2._id] = a.findExtremes(c2, f, l(d))), "paper" !== d.yref && "domain" !== p && (f = u(c2 = a.getFromId(e3, d.yref), d, i.paramIsY)) && (d._extremes[c2._id] = a.findExtremes(c2, f, s(d)));
            }
          };
        }, 2956: function(e2) {
          e2.exports = { segmentRE: /[MLHVQCTSZ][^MLHVQCTSZ]*/g, paramRE: /[^\s,]+/g, paramIsX: { M: { 0: true, drawn: 0 }, L: { 0: true, drawn: 0 }, H: { 0: true, drawn: 0 }, V: {}, Q: { 0: true, 2: true, drawn: 2 }, C: { 0: true, 2: true, 4: true, drawn: 4 }, T: { 0: true, drawn: 0 }, S: { 0: true, 2: true, drawn: 2 }, Z: {} }, paramIsY: { M: { 1: true, drawn: 1 }, L: { 1: true, drawn: 1 }, H: {}, V: { 0: true, drawn: 0 }, Q: { 1: true, 3: true, drawn: 3 }, C: { 1: true, 3: true, 5: true, drawn: 5 }, T: { 1: true, drawn: 1 }, S: { 1: true, 3: true, drawn: 5 }, Z: {} }, numParams: { M: 2, L: 2, H: 1, V: 1, Q: 4, C: 6, T: 2, S: 4, Z: 0 } };
        }, 4367: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(9008), o = r2(3144), l = r2(9728);
          function s(e3, t3, r3) {
            function i2(r4, a2) {
              return n.coerce(e3, t3, o, r4, a2);
            }
            if (t3._isShape = true, i2("visible")) {
              i2("showlegend") && (i2("legend"), i2("legendwidth"), i2("legendgroup"), i2("legendgrouptitle.text"), n.coerceFont(i2, "legendgrouptitle.font"), i2("legendrank"));
              var s2 = i2("path"), c = i2("type", s2 ? "path" : "rect"), u = "path" !== c;
              u && delete t3.path, i2("editable"), i2("layer"), i2("opacity"), i2("fillcolor"), i2("fillrule"), i2("line.width") && (i2("line.color"), i2("line.dash"));
              for (var f = i2("xsizemode"), d = i2("ysizemode"), h = ["x", "y"], p = 0; p < 2; p++) {
                var v, g, m, y = h[p], x = y + "anchor", b = "x" === y ? f : d, _ = { _fullLayout: r3 }, w = a.coerceRef(e3, t3, _, y, void 0, "paper");
                if ("range" === a.getRefType(w) ? ((v = a.getFromId(_, w))._shapeIndices.push(t3._index), m = l.rangeToShapePosition(v), g = l.shapePositionToRange(v), "category" !== v.type && "multicategory" !== v.type || (i2(y + "0shift"), i2(y + "1shift"))) : g = m = n.identity, u) {
                  var T = y + "0", M = y + "1", k = e3[T], A = e3[M];
                  e3[T] = g(e3[T], true), e3[M] = g(e3[M], true), "pixel" === b ? (i2(T, 0), i2(M, 10)) : (a.coercePosition(t3, _, i2, w, T, 0.25), a.coercePosition(t3, _, i2, w, M, 0.75)), t3[T] = m(t3[T]), t3[M] = m(t3[M]), e3[T] = k, e3[M] = A;
                }
                if ("pixel" === b) {
                  var L = e3[x];
                  e3[x] = g(e3[x], true), a.coercePosition(t3, _, i2, w, x, 0.25), t3[x] = m(t3[x]), e3[x] = L;
                }
              }
              u && n.noneOrAll(e3, t3, ["x0", "x1", "y0", "y1"]);
              var S, C, O = "line" === c;
              if (u && (S = i2("label.texttemplate")), S || (C = i2("label.text")), C || S) {
                i2("label.textangle");
                var D = i2("label.textposition", O ? "middle" : "middle center");
                i2("label.xanchor"), i2("label.yanchor", function(e4, t4) {
                  return e4 ? "bottom" : -1 !== t4.indexOf("top") ? "top" : -1 !== t4.indexOf("bottom") ? "bottom" : "middle";
                }(O, D)), i2("label.padding"), n.coerceFont(i2, "label.font", r3.font);
              }
            }
          }
          e2.exports = function(e3, t3) {
            i(e3, t3, { name: "shapes", handleItemDefaults: s });
          };
        }, 4433: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(635), o = r2(2203), l = r2(1055).readPaths, s = r2(9728), c = s.getPathString, u = r2(1235), f = r2(4530).FROM_TL;
          e2.exports = function(e3, t3, r3, d) {
            if (d.selectAll(".shape-label").remove(), r3.label.text || r3.label.texttemplate) {
              var h;
              if (r3.label.texttemplate) {
                var p = {};
                if ("path" !== r3.type) {
                  var v = a.getFromId(e3, r3.xref), g = a.getFromId(e3, r3.yref);
                  for (var m in u) {
                    var y = u[m](r3, v, g);
                    void 0 !== y && (p[m] = y);
                  }
                }
                h = n.texttemplateStringForShapes(r3.label.texttemplate, {}, e3._fullLayout._d3locale, p);
              } else h = r3.label.text;
              var x, b, _, w, T = { "data-index": t3 }, M = r3.label.font, k = d.append("g").attr(T).classed("shape-label", true).append("text").attr({ "data-notex": 1 }).classed("shape-label-text", true).text(h);
              if (r3.path) {
                var A = c(e3, r3), L = l(A, e3);
                x = 1 / 0, _ = 1 / 0, b = -1 / 0, w = -1 / 0;
                for (var S = 0; S < L.length; S++) for (var C = 0; C < L[S].length; C++) for (var O = L[S][C], D = 1; D < O.length; D += 2) {
                  var P = O[D], z = O[D + 1];
                  x = Math.min(x, P), b = Math.max(b, P), _ = Math.min(_, z), w = Math.max(w, z);
                }
              } else {
                var I = a.getFromId(e3, r3.xref), E = r3.x0shift, R = r3.x1shift, N = a.getRefType(r3.xref), F = a.getFromId(e3, r3.yref), H = r3.y0shift, B = r3.y1shift, j = a.getRefType(r3.yref), Y = function(t4, r4) {
                  return s.getDataToPixel(e3, I, r4, false, N)(t4);
                }, V = function(t4, r4) {
                  return s.getDataToPixel(e3, F, r4, true, j)(t4);
                };
                x = Y(r3.x0, E), b = Y(r3.x1, R), _ = V(r3.y0, H), w = V(r3.y1, B);
              }
              var U = r3.label.textangle;
              "auto" === U && (U = "line" === r3.type ? function(e4, t4, r4, n2) {
                var a2, i2;
                return i2 = Math.abs(r4 - e4), a2 = r4 >= e4 ? t4 - n2 : n2 - t4, -180 / Math.PI * Math.atan2(a2, i2);
              }(x, _, b, w) : 0), k.call(function(t4) {
                return t4.call(o.font, M).attr({}), i.convertToTspans(t4, e3), t4;
              });
              var q = function(e4, t4, r4, n2, a2, i2, o2) {
                var l2, s2, c2, u2, d2 = a2.label.textposition, h2 = a2.label.textangle, p2 = a2.label.padding, v2 = a2.type, g2 = Math.PI / 180 * i2, m2 = Math.sin(g2), y2 = Math.cos(g2), x2 = a2.label.xanchor, b2 = a2.label.yanchor;
                if ("line" === v2) {
                  "start" === d2 ? (l2 = e4, s2 = t4) : "end" === d2 ? (l2 = r4, s2 = n2) : (l2 = (e4 + r4) / 2, s2 = (t4 + n2) / 2), "auto" === x2 && (x2 = "start" === d2 ? "auto" === h2 ? r4 > e4 ? "left" : r4 < e4 ? "right" : "center" : r4 > e4 ? "right" : r4 < e4 ? "left" : "center" : "end" === d2 ? "auto" === h2 ? r4 > e4 ? "right" : r4 < e4 ? "left" : "center" : r4 > e4 ? "left" : r4 < e4 ? "right" : "center" : "center");
                  var _2 = { bottom: -1, middle: 0, top: 1 };
                  if ("auto" === h2) {
                    var w2 = _2[b2];
                    c2 = -p2 * m2 * w2, u2 = p2 * y2 * w2;
                  } else c2 = p2 * { left: 1, center: 0, right: -1 }[x2], u2 = p2 * _2[b2];
                  l2 += c2, s2 += u2;
                } else c2 = p2 + 3, -1 !== d2.indexOf("right") ? (l2 = Math.max(e4, r4) - c2, "auto" === x2 && (x2 = "right")) : -1 !== d2.indexOf("left") ? (l2 = Math.min(e4, r4) + c2, "auto" === x2 && (x2 = "left")) : (l2 = (e4 + r4) / 2, "auto" === x2 && (x2 = "center")), s2 = -1 !== d2.indexOf("top") ? Math.min(t4, n2) : -1 !== d2.indexOf("bottom") ? Math.max(t4, n2) : (t4 + n2) / 2, u2 = p2, "bottom" === b2 ? s2 -= u2 : "top" === b2 && (s2 += u2);
                var T2 = f[b2], M2 = a2.label.font.size, k2 = o2.height;
                return { textx: l2 + (k2 * T2 - M2) * m2, texty: s2 + -(k2 * T2 - M2) * y2, xanchor: x2 };
              }(x, _, b, w, r3, U, o.bBox(k.node())), G = q.textx, Z = q.texty, W = q.xanchor;
              k.attr({ "text-anchor": { left: "start", center: "middle", right: "end" }[W], y: Z, x: G, transform: "rotate(" + U + "," + G + "," + Z + ")" }).call(i.positionText, G, Z);
            }
          };
        }, 561: function(e2, t2, r2) {
          var n = r2(4809).strTranslate, a = r2(4751), i = r2(414), o = i.drawMode, l = i.selectMode, s = r2(3626), c = r2(8766), u = r2(3391), f = u.i000, d = u.i090, h = u.i180, p = u.i270, v = r2(8534).clearOutlineControllers, g = r2(1055), m = g.pointsOnRectangle, y = g.pointsOnEllipse, x = g.writePaths, b = r2(7562).newShapes, _ = r2(7562).createShapeObj, w = r2(4198), T = r2(4433);
          function M(e3, t3) {
            var r3, n2, a2, i2 = e3[t3][1], o2 = e3[t3][2], l2 = e3.length;
            return n2 = e3[r3 = (t3 + 1) % l2][1], a2 = e3[r3][2], n2 === i2 && a2 === o2 && (n2 = e3[r3 = (t3 + 2) % l2][1], a2 = e3[r3][2]), [r3, n2, a2];
          }
          e2.exports = function e3(t3, r3, i2, u2) {
            u2 || (u2 = 0);
            var g2 = i2.gd;
            function k() {
              e3(t3, r3, i2, u2++), (y(t3[0]) || i2.hasText) && A({ redrawing: true });
            }
            function A(e4) {
              var t4 = {};
              void 0 !== i2.isActiveShape && (i2.isActiveShape = false, t4 = b(r3, i2)), void 0 !== i2.isActiveSelection && (i2.isActiveSelection = false, t4 = w(r3, i2), g2._fullLayout._reselect = true), Object.keys(t4).length && s.call((e4 || {}).redrawing ? "relayout" : "_guiRelayout", g2, t4);
            }
            var L, S, C, O, D, P = g2._fullLayout._zoomlayer, z = i2.dragmode, I = o(z), E = l(z);
            if ((I || E) && (g2._fullLayout._outlining = true), v(g2), r3.attr("d", x(t3)), u2 || !i2.isActiveShape && !i2.isActiveSelection || (D = function(e4, t4) {
              for (var r4 = 0; r4 < t4.length; r4++) {
                var n2 = t4[r4];
                e4[r4] = [];
                for (var a2 = 0; a2 < n2.length; a2++) {
                  e4[r4][a2] = [];
                  for (var i3 = 0; i3 < n2[a2].length; i3++) e4[r4][a2][i3] = n2[a2][i3];
                }
              }
              return e4;
            }([], t3), function(e4) {
              L = [];
              for (var r4 = 0; r4 < t3.length; r4++) {
                var o2 = t3[r4], l2 = m(o2), s2 = !l2 && y(o2);
                L[r4] = [];
                for (var u3 = o2.length, v2 = 0; v2 < u3; v2++) if ("Z" !== o2[v2][0] && (!s2 || v2 === f || v2 === d || v2 === h || v2 === p)) {
                  var x2, b2 = l2 && i2.isActiveSelection;
                  b2 && (x2 = M(o2, v2));
                  var _2 = o2[v2][1], w2 = o2[v2][2], T2 = e4.append(b2 ? "rect" : "circle").attr("data-i", r4).attr("data-j", v2).style({ fill: c.background, stroke: c.defaultLine, "stroke-width": 1, "shape-rendering": "crispEdges" });
                  if (b2) {
                    var k2 = x2[1] - _2, A2 = x2[2] - w2, S2 = A2 ? 5 : Math.max(Math.min(25, Math.abs(k2) - 5), 5), C2 = k2 ? 5 : Math.max(Math.min(25, Math.abs(A2) - 5), 5);
                    T2.classed(A2 ? "cursor-ew-resize" : "cursor-ns-resize", true).attr("width", S2).attr("height", C2).attr("x", _2 - S2 / 2).attr("y", w2 - C2 / 2).attr("transform", n(k2 / 2, A2 / 2));
                  } else T2.classed("cursor-grab", true).attr("r", 5).attr("cx", _2).attr("cy", w2);
                  L[r4][v2] = { element: T2.node(), gd: g2, prepFn: F, doneFn: B, clickFn: j }, a.init(L[r4][v2]);
                }
              }
            }(P.append("g").attr("class", "outline-controllers")), function() {
              if (S = [], t3.length) {
                S[0] = { element: r3[0][0], gd: g2, prepFn: V, doneFn: U, clickFn: q }, a.init(S[0]);
              }
            }()), I && i2.hasText) {
              var R = P.select(".label-temp"), N = _(r3, i2, i2.dragmode);
              T(g2, "label-temp", N, R);
            }
            function F(e4) {
              C = +e4.srcElement.getAttribute("data-i"), O = +e4.srcElement.getAttribute("data-j"), L[C][O].moveFn = H;
            }
            function H(e4, r4) {
              if (t3.length) {
                var n2 = D[C][O][1], a2 = D[C][O][2], o2 = t3[C], l2 = o2.length;
                if (m(o2)) {
                  var s2 = e4, c2 = r4;
                  i2.isActiveSelection && (M(o2, O)[1] === o2[O][1] ? c2 = 0 : s2 = 0);
                  for (var u3 = 0; u3 < l2; u3++) if (u3 !== O) {
                    var f2 = o2[u3];
                    f2[1] === o2[O][1] && (f2[1] = n2 + s2), f2[2] === o2[O][2] && (f2[2] = a2 + c2);
                  }
                  if (o2[O][1] = n2 + s2, o2[O][2] = a2 + c2, !m(o2)) for (var d2 = 0; d2 < l2; d2++) for (var h2 = 0; h2 < o2[d2].length; h2++) o2[d2][h2] = D[C][d2][h2];
                } else o2[O][1] = n2 + e4, o2[O][2] = a2 + r4;
                k();
              }
            }
            function B() {
              A();
            }
            function j(e4, r4) {
              if (2 === e4) {
                C = +r4.srcElement.getAttribute("data-i"), O = +r4.srcElement.getAttribute("data-j");
                var n2 = t3[C];
                m(n2) || y(n2) || function() {
                  if (t3.length && t3[C] && t3[C].length) {
                    for (var e5 = [], r5 = 0; r5 < t3[C].length; r5++) r5 !== O && e5.push(t3[C][r5]);
                    e5.length > 1 && (2 !== e5.length || "Z" !== e5[1][0]) && (0 === O && (e5[0][0] = "M"), t3[C] = e5, k(), A());
                  }
                }();
              }
            }
            function Y(e4, r4) {
              !function(e5, r5) {
                if (t3.length) for (var n2 = 0; n2 < t3.length; n2++) for (var a2 = 0; a2 < t3[n2].length; a2++) for (var i3 = 0; i3 + 2 < t3[n2][a2].length; i3 += 2) t3[n2][a2][i3 + 1] = D[n2][a2][i3 + 1] + e5, t3[n2][a2][i3 + 2] = D[n2][a2][i3 + 2] + r5;
              }(e4, r4), k();
            }
            function V(e4) {
              (C = +e4.srcElement.getAttribute("data-i")) || (C = 0), S[C].moveFn = Y;
            }
            function U() {
              A();
            }
            function q(e4) {
              2 === e4 && function(e5) {
                if (l(e5._fullLayout.dragmode)) {
                  v(e5);
                  var t4 = e5._fullLayout._activeSelectionIndex, r4 = (e5.layout || {}).selections || [];
                  if (t4 < r4.length) {
                    for (var n2 = [], a2 = 0; a2 < r4.length; a2++) a2 !== t4 && n2.push(r4[a2]);
                    delete e5._fullLayout._activeSelectionIndex;
                    var i3 = e5._fullLayout.selections[t4];
                    e5._fullLayout._deselect = { xref: i3.xref, yref: i3.yref }, s.call("_guiRelayout", e5, { selections: n2 });
                  }
                }
              }(g2);
            }
          };
        }, 8231: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4809), o = r2(9714), l = r2(1055).readPaths, s = r2(561), c = r2(4433), u = r2(8534).clearOutlineControllers, f = r2(8766), d = r2(2203), h = r2(8032).arrayEditor, p = r2(4751), v = r2(7983), g = r2(2956), m = r2(9728), y = m.getPathString;
          function x(e3) {
            var t3 = e3._fullLayout;
            for (var r3 in t3._shapeUpperLayer.selectAll("path").remove(), t3._shapeLowerLayer.selectAll("path").remove(), t3._shapeUpperLayer.selectAll("text").remove(), t3._shapeLowerLayer.selectAll("text").remove(), t3._plots) {
              var n2 = t3._plots[r3].shapelayer;
              n2 && (n2.selectAll("path").remove(), n2.selectAll("text").remove());
            }
            for (var a2 = 0; a2 < t3.shapes.length; a2++) true === t3.shapes[a2].visible && w(e3, a2);
          }
          function b(e3) {
            return !!e3._fullLayout._outlining;
          }
          function _(e3) {
            return !e3._context.edits.shapePosition;
          }
          function w(e3, t3) {
            e3._fullLayout._paperdiv.selectAll('.shapelayer [data-index="' + t3 + '"]').remove();
            var r3 = m.makeShapesOptionsAndPlotinfo(e3, t3), u2 = r3.options, w2 = r3.plotinfo;
            function A(r4) {
              var A2 = y(e3, u2), L = { "data-index": t3, "fill-rule": u2.fillrule, d: A2 }, S = u2.opacity, C = u2.fillcolor, O = u2.line.width ? u2.line.color : "rgba(0,0,0,0)", D = u2.line.width, P = u2.line.dash;
              D || true !== u2.editable || (D = 5, P = "solid");
              var z = "Z" !== A2[A2.length - 1], I = _(e3) && u2.editable && e3._fullLayout._activeShapeIndex === t3;
              I && (C = z ? "rgba(0,0,0,0)" : e3._fullLayout.activeshape.fillcolor, S = e3._fullLayout.activeshape.opacity);
              var E, R = r4.append("g").classed("shape-group", true).attr({ "data-index": t3 }), N = R.append("path").attr(L).style("opacity", S).call(f.stroke, O).call(f.fill, C).call(d.dashLine, P, D);
              if (T(R, e3, u2), c(e3, t3, u2, R), (I || e3._context.edits.shapePosition) && (E = h(e3.layout, "shapes", u2)), I) {
                N.style({ cursor: "move" });
                var F = { element: N.node(), plotinfo: w2, gd: e3, editHelpers: E, hasText: u2.label.text || u2.label.texttemplate, isActiveShape: true }, H = l(A2, e3);
                s(H, N, F);
              } else e3._context.edits.shapePosition ? function(e4, t4, r5, l2, s2, u3) {
                var f2, h2, x2, _2, w3, k2, A3, L2, S2, C2, O2, D2, P2, z2, I2, E2, R2 = 10, N2 = 10, F2 = "pixel" === r5.xsizemode, H2 = "pixel" === r5.ysizemode, B = "line" === r5.type, j = "path" === r5.type, Y = u3.modifyItem, V = n.select(t4.node().parentNode), U = o.getFromId(e4, r5.xref), q = o.getRefType(r5.xref), G = o.getFromId(e4, r5.yref), Z = o.getRefType(r5.yref), W = r5.x0shift, J = r5.x1shift, X = r5.y0shift, K = r5.y1shift, Q = function(t5, r6) {
                  return m.getDataToPixel(e4, U, r6, false, q)(t5);
                }, $ = function(t5, r6) {
                  return m.getDataToPixel(e4, G, r6, true, Z)(t5);
                }, ee = m.getPixelToData(e4, U, false, q), te = m.getPixelToData(e4, G, true, Z), re = B ? function() {
                  var e5 = 10, n2 = Math.max(r5.line.width, e5), a2 = s2.append("g").attr("data-index", l2).attr("drag-helper", true);
                  a2.append("path").attr("d", t4.attr("d")).style({ cursor: "move", "stroke-width": n2, "stroke-opacity": "0" });
                  var i2 = { "fill-opacity": "0" }, o2 = Math.max(n2 / 2, e5);
                  return a2.append("circle").attr({ "data-line-point": "start-point", cx: F2 ? Q(r5.xanchor) + r5.x0 : Q(r5.x0, W), cy: H2 ? $(r5.yanchor) - r5.y0 : $(r5.y0, X), r: o2 }).style(i2).classed("cursor-grab", true), a2.append("circle").attr({ "data-line-point": "end-point", cx: F2 ? Q(r5.xanchor) + r5.x1 : Q(r5.x1, J), cy: H2 ? $(r5.yanchor) - r5.y1 : $(r5.y1, K), r: o2 }).style(i2).classed("cursor-grab", true), a2;
                }() : t4, ne = { element: re.node(), gd: e4, prepFn: function(n2) {
                  b(e4) || (F2 && (w3 = Q(r5.xanchor)), H2 && (k2 = $(r5.yanchor)), "path" === r5.type ? I2 = r5.path : (f2 = F2 ? r5.x0 : Q(r5.x0), h2 = H2 ? r5.y0 : $(r5.y0), x2 = F2 ? r5.x1 : Q(r5.x1), _2 = H2 ? r5.y1 : $(r5.y1)), f2 < x2 ? (S2 = f2, P2 = "x0", C2 = x2, z2 = "x1") : (S2 = x2, P2 = "x1", C2 = f2, z2 = "x0"), !H2 && h2 < _2 || H2 && h2 > _2 ? (A3 = h2, O2 = "y0", L2 = _2, D2 = "y1") : (A3 = _2, O2 = "y1", L2 = h2, D2 = "y0"), ae(n2), le(s2, r5), function(e5, t5, r6) {
                    var n3 = t5.xref, a2 = t5.yref, i2 = o.getFromId(r6, n3), l3 = o.getFromId(r6, a2), s3 = "";
                    "paper" === n3 || i2.autorange || (s3 += n3), "paper" === a2 || l3.autorange || (s3 += a2), d.setClipUrl(e5, s3 ? "clip" + r6._fullLayout._uid + s3 : null, r6);
                  }(t4, r5, e4), ne.moveFn = "move" === E2 ? ie : oe, ne.altKey = n2.altKey);
                }, doneFn: function() {
                  b(e4) || (v(t4), se(s2), T(t4, e4, r5), a.call("_guiRelayout", e4, u3.getUpdateObj()));
                }, clickFn: function() {
                  b(e4) || se(s2);
                } };
                function ae(r6) {
                  if (b(e4)) E2 = null;
                  else if (B) E2 = "path" === r6.target.tagName ? "move" : "start-point" === r6.target.attributes["data-line-point"].value ? "resize-over-start-point" : "resize-over-end-point";
                  else {
                    var n2 = ne.element.getBoundingClientRect(), a2 = n2.right - n2.left, i2 = n2.bottom - n2.top, o2 = r6.clientX - n2.left, l3 = r6.clientY - n2.top, s3 = !j && a2 > R2 && i2 > N2 && !r6.shiftKey ? p.getCursor(o2 / a2, 1 - l3 / i2) : "move";
                    v(t4, s3), E2 = s3.split("-")[0];
                  }
                }
                function ie(n2, a2) {
                  if ("path" === r5.type) {
                    var i2 = function(e5) {
                      return e5;
                    }, o2 = i2, u4 = i2;
                    F2 ? Y("xanchor", r5.xanchor = ee(w3 + n2)) : (o2 = function(e5) {
                      return ee(Q(e5) + n2);
                    }, U && "date" === U.type && (o2 = m.encodeDate(o2))), H2 ? Y("yanchor", r5.yanchor = te(k2 + a2)) : (u4 = function(e5) {
                      return te($(e5) + a2);
                    }, G && "date" === G.type && (u4 = m.encodeDate(u4))), Y("path", r5.path = M(I2, o2, u4));
                  } else F2 ? Y("xanchor", r5.xanchor = ee(w3 + n2)) : (Y("x0", r5.x0 = ee(f2 + n2)), Y("x1", r5.x1 = ee(x2 + n2))), H2 ? Y("yanchor", r5.yanchor = te(k2 + a2)) : (Y("y0", r5.y0 = te(h2 + a2)), Y("y1", r5.y1 = te(_2 + a2)));
                  t4.attr("d", y(e4, r5)), le(s2, r5), c(e4, l2, r5, V);
                }
                function oe(n2, a2) {
                  if (j) {
                    var i2 = function(e5) {
                      return e5;
                    }, o2 = i2, u4 = i2;
                    F2 ? Y("xanchor", r5.xanchor = ee(w3 + n2)) : (o2 = function(e5) {
                      return ee(Q(e5) + n2);
                    }, U && "date" === U.type && (o2 = m.encodeDate(o2))), H2 ? Y("yanchor", r5.yanchor = te(k2 + a2)) : (u4 = function(e5) {
                      return te($(e5) + a2);
                    }, G && "date" === G.type && (u4 = m.encodeDate(u4))), Y("path", r5.path = M(I2, o2, u4));
                  } else if (B) {
                    if ("resize-over-start-point" === E2) {
                      var d2 = f2 + n2, p2 = H2 ? h2 - a2 : h2 + a2;
                      Y("x0", r5.x0 = F2 ? d2 : ee(d2)), Y("y0", r5.y0 = H2 ? p2 : te(p2));
                    } else if ("resize-over-end-point" === E2) {
                      var v2 = x2 + n2, g2 = H2 ? _2 - a2 : _2 + a2;
                      Y("x1", r5.x1 = F2 ? v2 : ee(v2)), Y("y1", r5.y1 = H2 ? g2 : te(g2));
                    }
                  } else {
                    var b2 = function(e5) {
                      return -1 !== E2.indexOf(e5);
                    }, T2 = b2("n"), q2 = b2("s"), Z2 = b2("w"), W2 = b2("e"), J2 = T2 ? A3 + a2 : A3, X2 = q2 ? L2 + a2 : L2, K2 = Z2 ? S2 + n2 : S2, re2 = W2 ? C2 + n2 : C2;
                    H2 && (T2 && (J2 = A3 - a2), q2 && (X2 = L2 - a2)), (!H2 && X2 - J2 > N2 || H2 && J2 - X2 > N2) && (Y(O2, r5[O2] = H2 ? J2 : te(J2)), Y(D2, r5[D2] = H2 ? X2 : te(X2))), re2 - K2 > R2 && (Y(P2, r5[P2] = F2 ? K2 : ee(K2)), Y(z2, r5[z2] = F2 ? re2 : ee(re2)));
                  }
                  t4.attr("d", y(e4, r5)), le(s2, r5), c(e4, l2, r5, V);
                }
                function le(e5, t5) {
                  (F2 || H2) && function() {
                    var r6 = "path" !== t5.type, n2 = e5.selectAll(".visual-cue").data([0]);
                    n2.enter().append("path").attr({ fill: "#fff", "fill-rule": "evenodd", stroke: "#000", "stroke-width": 1 }).classed("visual-cue", true);
                    var a2 = Q(F2 ? t5.xanchor : i.midRange(r6 ? [t5.x0, t5.x1] : m.extractPathCoords(t5.path, g.paramIsX))), o2 = $(H2 ? t5.yanchor : i.midRange(r6 ? [t5.y0, t5.y1] : m.extractPathCoords(t5.path, g.paramIsY)));
                    if (a2 = m.roundPositionForSharpStrokeRendering(a2, 1), o2 = m.roundPositionForSharpStrokeRendering(o2, 1), F2 && H2) {
                      var l3 = "M" + (a2 - 1 - 1) + "," + (o2 - 1 - 1) + "h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";
                      n2.attr("d", l3);
                    } else if (F2) {
                      var s3 = "M" + (a2 - 1 - 1) + "," + (o2 - 9 - 1) + "v18 h2 v-18 Z";
                      n2.attr("d", s3);
                    } else {
                      var c2 = "M" + (a2 - 9 - 1) + "," + (o2 - 1 - 1) + "h18 v2 h-18 Z";
                      n2.attr("d", c2);
                    }
                  }();
                }
                function se(e5) {
                  e5.selectAll(".visual-cue").remove();
                }
                p.init(ne), re.node().onmousemove = ae;
              }(e3, N, u2, t3, r4, E) : true === u2.editable && N.style("pointer-events", z || f.opacity(C) * S <= 0.5 ? "stroke" : "all");
              N.node().addEventListener("click", function() {
                return function(e4, t4) {
                  if (_(e4)) {
                    var r5 = +t4.node().getAttribute("data-index");
                    if (r5 >= 0) {
                      if (r5 === e4._fullLayout._activeShapeIndex) return void k(e4);
                      e4._fullLayout._activeShapeIndex = r5, e4._fullLayout._deactivateShape = k, x(e4);
                    }
                  }
                }(e3, N);
              });
            }
            u2._input && true === u2.visible && ("above" === u2.layer ? A(e3._fullLayout._shapeUpperLayer) : "paper" === u2.xref || "paper" === u2.yref ? A(e3._fullLayout._shapeLowerLayer) : "between" === u2.layer ? A(w2.shapelayerBetween) : w2._hadPlotinfo ? A((w2.mainplotinfo || w2).shapelayer) : A(e3._fullLayout._shapeLowerLayer));
          }
          function T(e3, t3, r3) {
            var n2 = (r3.xref + r3.yref).replace(/paper/g, "").replace(/[xyz][1-9]* *domain/g, "");
            d.setClipUrl(e3, n2 ? "clip" + t3._fullLayout._uid + n2 : null, t3);
          }
          function M(e3, t3, r3) {
            return e3.replace(g.segmentRE, function(e4) {
              var n2 = 0, a2 = e4.charAt(0), i2 = g.paramIsX[a2], o2 = g.paramIsY[a2], l2 = g.numParams[a2];
              return a2 + e4.substr(1).replace(g.paramRE, function(e5) {
                return n2 >= l2 || (i2[n2] ? e5 = t3(e5) : o2[n2] && (e5 = r3(e5)), n2++), e5;
              });
            });
          }
          function k(e3) {
            _(e3) && e3._fullLayout._activeShapeIndex >= 0 && (u(e3), delete e3._fullLayout._activeShapeIndex, x(e3));
          }
          e2.exports = { draw: x, drawOne: w, eraseActiveShape: function(e3) {
            if (_(e3)) {
              u(e3);
              var t3 = e3._fullLayout._activeShapeIndex, r3 = (e3.layout || {}).shapes || [];
              if (t3 < r3.length) {
                for (var n2 = [], i2 = 0; i2 < r3.length; i2++) i2 !== t3 && n2.push(r3[i2]);
                return delete e3._fullLayout._activeShapeIndex, a.call("_guiRelayout", e3, { shapes: n2 });
              }
            }
          }, drawLabel: c };
        }, 4101: function(e2, t2, r2) {
          var n = r2(3582).overrideAll, a = r2(9829), i = r2(337), o = r2(4850).T, l = r2(3049).extendFlat, s = r2(3208).LF, c = r2(1235);
          e2.exports = n({ newshape: { visible: l({}, a.visible, {}), showlegend: { valType: "boolean", dflt: false }, legend: l({}, a.legend, {}), legendgroup: l({}, a.legendgroup, {}), legendgrouptitle: { text: l({}, a.legendgrouptitle.text, {}), font: i({}) }, legendrank: l({}, a.legendrank, {}), legendwidth: l({}, a.legendwidth, {}), line: { color: { valType: "color" }, width: { valType: "number", min: 0, dflt: 4 }, dash: l({}, o, { dflt: "solid" }) }, fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)" }, fillrule: { valType: "enumerated", values: ["evenodd", "nonzero"], dflt: "evenodd" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1 }, layer: { valType: "enumerated", values: ["below", "above", "between"], dflt: "above" }, drawdirection: { valType: "enumerated", values: ["ortho", "horizontal", "vertical", "diagonal"], dflt: "diagonal" }, name: l({}, a.name, {}), label: { text: { valType: "string", dflt: "" }, texttemplate: s({ newshape: true }, { keys: Object.keys(c) }), font: i({}), textposition: { valType: "enumerated", values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "start", "middle", "end"] }, textangle: { valType: "angle", dflt: "auto" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "auto" }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"] }, padding: { valType: "number", dflt: 3, min: 0 } } }, activeshape: { fillcolor: { valType: "color", dflt: "rgb(255,0,255)" }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.5 } } }, "none", "from-root");
        }, 3391: function(e2) {
          e2.exports = { CIRCLE_SIDES: 32, i000: 0, i090: 8, i180: 16, i270: 24, cos45: Math.cos(Math.PI / 4), sin45: Math.sin(Math.PI / 4), SQRT2: Math.sqrt(2) };
        }, 5522: function(e2, t2, r2) {
          var n = r2(8766), a = r2(4809);
          e2.exports = function(e3, t3, r3) {
            if (r3("newshape.visible"), r3("newshape.name"), r3("newshape.showlegend"), r3("newshape.legend"), r3("newshape.legendwidth"), r3("newshape.legendgroup"), r3("newshape.legendgrouptitle.text"), a.coerceFont(r3, "newshape.legendgrouptitle.font"), r3("newshape.legendrank"), r3("newshape.drawdirection"), r3("newshape.layer"), r3("newshape.fillcolor"), r3("newshape.fillrule"), r3("newshape.opacity"), r3("newshape.line.width")) {
              var i = (e3 || {}).plot_bgcolor || "#FFF";
              r3("newshape.line.color", n.contrast(i)), r3("newshape.line.dash");
            }
            var o = "drawline" === e3.dragmode, l = r3("newshape.label.text"), s = r3("newshape.label.texttemplate");
            if (l || s) {
              r3("newshape.label.textangle");
              var c = r3("newshape.label.textposition", o ? "middle" : "middle center");
              r3("newshape.label.xanchor"), r3("newshape.label.yanchor", function(e4, t4) {
                return e4 ? "bottom" : -1 !== t4.indexOf("top") ? "top" : -1 !== t4.indexOf("bottom") ? "bottom" : "middle";
              }(o, c)), r3("newshape.label.padding"), a.coerceFont(r3, "newshape.label.font", t3.font);
            }
            r3("activeshape.fillcolor"), r3("activeshape.opacity");
          };
        }, 1055: function(e2, t2, r2) {
          var n = r2(6953), a = r2(3391), i = a.CIRCLE_SIDES, o = a.SQRT2, l = r2(9801), s = l.p2r, c = l.r2p, u = [0, 3, 4, 5, 6, 1, 2], f = [0, 3, 4, 1, 2];
          function d(e3, t3) {
            return Math.abs(e3 - t3) <= 1e-6;
          }
          function h(e3, t3) {
            var r3 = t3[1] - e3[1], n2 = t3[2] - e3[2];
            return Math.sqrt(r3 * r3 + n2 * n2);
          }
          t2.writePaths = function(e3) {
            var t3 = e3.length;
            if (!t3) return "M0,0Z";
            for (var r3 = "", n2 = 0; n2 < t3; n2++) for (var a2 = e3[n2].length, i2 = 0; i2 < a2; i2++) {
              var o2 = e3[n2][i2][0];
              if ("Z" === o2) r3 += "Z";
              else for (var l2 = e3[n2][i2].length, s2 = 0; s2 < l2; s2++) {
                var c2 = s2;
                "Q" === o2 || "S" === o2 ? c2 = f[s2] : "C" === o2 && (c2 = u[s2]), r3 += e3[n2][i2][c2], s2 > 0 && s2 < l2 - 1 && (r3 += ",");
              }
            }
            return r3;
          }, t2.readPaths = function(e3, t3, r3, a2) {
            var o2, l2, u2, f2 = n(e3), d2 = [], h2 = -1, p = 0, v = 0, g = function() {
              l2 = p, u2 = v;
            };
            g();
            for (var m = 0; m < f2.length; m++) {
              var y, x, b, _, w = [], T = f2[m][0], M = T;
              switch (T) {
                case "M":
                  d2[++h2] = [], p = +f2[m][1], v = +f2[m][2], w.push([M, p, v]), g();
                  break;
                case "Q":
                case "S":
                  y = +f2[m][1], b = +f2[m][2], p = +f2[m][3], v = +f2[m][4], w.push([M, p, v, y, b]);
                  break;
                case "C":
                  y = +f2[m][1], b = +f2[m][2], x = +f2[m][3], _ = +f2[m][4], p = +f2[m][5], v = +f2[m][6], w.push([M, p, v, y, b, x, _]);
                  break;
                case "T":
                case "L":
                  p = +f2[m][1], v = +f2[m][2], w.push([M, p, v]);
                  break;
                case "H":
                  M = "L", p = +f2[m][1], w.push([M, p, v]);
                  break;
                case "V":
                  M = "L", v = +f2[m][1], w.push([M, p, v]);
                  break;
                case "A":
                  M = "L";
                  var k = +f2[m][1], A = +f2[m][2];
                  +f2[m][4] || (k = -k, A = -A);
                  var L = p - k, S = v;
                  for (o2 = 1; o2 <= i / 2; o2++) {
                    var C = 2 * Math.PI * o2 / i;
                    w.push([M, L + k * Math.cos(C), S + A * Math.sin(C)]);
                  }
                  break;
                case "Z":
                  p === l2 && v === u2 || (p = l2, v = u2, w.push([M, p, v]));
              }
              for (var O = (r3 || {}).domain, D = t3._fullLayout._size, P = r3 && "pixel" === r3.xsizemode, z = r3 && "pixel" === r3.ysizemode, I = false === a2, E = 0; E < w.length; E++) {
                for (o2 = 0; o2 + 2 < 7; o2 += 2) {
                  var R = w[E][o2 + 1], N = w[E][o2 + 2];
                  void 0 !== R && void 0 !== N && (p = R, v = N, r3 && (r3.xaxis && r3.xaxis.p2r ? (I && (R -= r3.xaxis._offset), R = P ? c(r3.xaxis, r3.xanchor) + R : s(r3.xaxis, R)) : (I && (R -= D.l), O ? R = O.x[0] + R / D.w : R /= D.w), r3.yaxis && r3.yaxis.p2r ? (I && (N -= r3.yaxis._offset), N = z ? c(r3.yaxis, r3.yanchor) - N : s(r3.yaxis, N)) : (I && (N -= D.t), N = O ? O.y[1] - N / D.h : 1 - N / D.h)), w[E][o2 + 1] = R, w[E][o2 + 2] = N);
                }
                d2[h2].push(w[E].slice());
              }
            }
            return d2;
          }, t2.pointsOnRectangle = function(e3) {
            if (5 !== e3.length) return false;
            for (var t3 = 1; t3 < 3; t3++) {
              if (!d(e3[0][t3] - e3[1][t3], e3[3][t3] - e3[2][t3])) return false;
              if (!d(e3[0][t3] - e3[3][t3], e3[1][t3] - e3[2][t3])) return false;
            }
            return !(!d(e3[0][1], e3[1][1]) && !d(e3[0][1], e3[3][1]) || !(h(e3[0], e3[1]) * h(e3[0], e3[3])));
          }, t2.pointsOnEllipse = function(e3) {
            var t3 = e3.length;
            if (t3 !== i + 1) return false;
            t3 = i;
            for (var r3 = 0; r3 < t3; r3++) {
              var n2 = (2 * t3 - r3) % t3, a2 = (t3 / 2 + n2) % t3, o2 = (t3 / 2 + r3) % t3;
              if (!d(h(e3[r3], e3[o2]), h(e3[n2], e3[a2]))) return false;
            }
            return true;
          }, t2.handleEllipse = function(e3, r3, n2) {
            if (!e3) return [r3, n2];
            var a2 = t2.ellipseOver({ x0: r3[0], y0: r3[1], x1: n2[0], y1: n2[1] }), l2 = (a2.x1 + a2.x0) / 2, s2 = (a2.y1 + a2.y0) / 2, c2 = (a2.x1 - a2.x0) / 2, u2 = (a2.y1 - a2.y0) / 2;
            c2 || (c2 = u2 /= o), u2 || (u2 = c2 /= o);
            for (var f2 = [], d2 = 0; d2 < i; d2++) {
              var h2 = 2 * d2 * Math.PI / i;
              f2.push([l2 + c2 * Math.cos(h2), s2 + u2 * Math.sin(h2)]);
            }
            return f2;
          }, t2.ellipseOver = function(e3) {
            var t3 = e3.x0, r3 = e3.y0, n2 = e3.x1, a2 = e3.y1, i2 = n2 - t3, l2 = a2 - r3, s2 = ((t3 -= i2) + n2) / 2, c2 = ((r3 -= l2) + a2) / 2;
            return { x0: s2 - (i2 *= o), y0: c2 - (l2 *= o), x1: s2 + i2, y1: c2 + l2 };
          }, t2.fixDatesForPaths = function(e3, t3, r3) {
            var n2 = "date" === t3.type, a2 = "date" === r3.type;
            if (!n2 && !a2) return e3;
            for (var i2 = 0; i2 < e3.length; i2++) for (var o2 = 0; o2 < e3[i2].length; o2++) for (var l2 = 0; l2 + 2 < e3[i2][o2].length; l2 += 2) n2 && (e3[i2][o2][l2 + 1] = e3[i2][o2][l2 + 1].replace(" ", "_")), a2 && (e3[i2][o2][l2 + 2] = e3[i2][o2][l2 + 2].replace(" ", "_"));
            return e3;
          };
        }, 7562: function(e2, t2, r2) {
          var n = r2(414), a = n.drawMode, i = n.openMode, o = r2(3391), l = o.i000, s = o.i090, c = o.i180, u = o.i270, f = o.cos45, d = o.sin45, h = r2(9801), p = h.p2r, v = h.r2p, g = r2(8534).clearOutline, m = r2(1055), y = m.readPaths, x = m.writePaths, b = m.ellipseOver, _ = m.fixDatesForPaths;
          function w(e3, t3, r3) {
            var n2, a2 = e3[0][0], o2 = t3.gd, h2 = a2.getAttribute("d"), g2 = o2._fullLayout.newshape, m2 = t3.plotinfo, w2 = t3.isActiveShape, T = m2.xaxis, M = m2.yaxis, k = !!m2.domain || !m2.xaxis, A = !!m2.domain || !m2.yaxis, L = i(r3), S = y(h2, o2, m2, w2), C = { editable: true, visible: g2.visible, name: g2.name, showlegend: g2.showlegend, legend: g2.legend, legendwidth: g2.legendwidth, legendgroup: g2.legendgroup, legendgrouptitle: { text: g2.legendgrouptitle.text, font: g2.legendgrouptitle.font }, legendrank: g2.legendrank, label: g2.label, xref: k ? "paper" : T._id, yref: A ? "paper" : M._id, layer: g2.layer, opacity: g2.opacity, line: { color: g2.line.color, width: g2.line.width, dash: g2.line.dash } };
            if (L || (C.fillcolor = g2.fillcolor, C.fillrule = g2.fillrule), 1 === S.length && (n2 = S[0]), n2 && 5 === n2.length && "drawrect" === r3) C.type = "rect", C.x0 = n2[0][1], C.y0 = n2[0][2], C.x1 = n2[2][1], C.y1 = n2[2][2];
            else if (n2 && "drawline" === r3) C.type = "line", C.x0 = n2[0][1], C.y0 = n2[0][2], C.x1 = n2[1][1], C.y1 = n2[1][2];
            else if (n2 && "drawcircle" === r3) {
              C.type = "circle";
              var O = n2[l][1], D = n2[s][1], P = n2[c][1], z = n2[u][1], I = n2[l][2], E = n2[s][2], R = n2[c][2], N = n2[u][2], F = m2.xaxis && ("date" === m2.xaxis.type || "log" === m2.xaxis.type), H = m2.yaxis && ("date" === m2.yaxis.type || "log" === m2.yaxis.type);
              F && (O = v(m2.xaxis, O), D = v(m2.xaxis, D), P = v(m2.xaxis, P), z = v(m2.xaxis, z)), H && (I = v(m2.yaxis, I), E = v(m2.yaxis, E), R = v(m2.yaxis, R), N = v(m2.yaxis, N));
              var B = (D + z) / 2, j = (I + R) / 2, Y = b({ x0: B, y0: j, x1: B + (z - D + P - O) / 2 * f, y1: j + (N - E + R - I) / 2 * d });
              F && (Y.x0 = p(m2.xaxis, Y.x0), Y.x1 = p(m2.xaxis, Y.x1)), H && (Y.y0 = p(m2.yaxis, Y.y0), Y.y1 = p(m2.yaxis, Y.y1)), C.x0 = Y.x0, C.y0 = Y.y0, C.x1 = Y.x1, C.y1 = Y.y1;
            } else C.type = "path", T && M && _(S, T, M), C.path = x(S), n2 = null;
            return C;
          }
          e2.exports = { newShapes: function(e3, t3) {
            if (e3.length && e3[0][0]) {
              var r3 = t3.gd, n2 = t3.isActiveShape, i2 = t3.dragmode, o2 = (r3.layout || {}).shapes || [];
              if (!a(i2) && void 0 !== n2) {
                var l2 = r3._fullLayout._activeShapeIndex;
                if (l2 < o2.length) switch (r3._fullLayout.shapes[l2].type) {
                  case "rect":
                    i2 = "drawrect";
                    break;
                  case "circle":
                    i2 = "drawcircle";
                    break;
                  case "line":
                    i2 = "drawline";
                    break;
                  case "path":
                    var s2 = o2[l2].path || "";
                    i2 = "Z" === s2[s2.length - 1] ? "drawclosedpath" : "drawopenpath";
                }
              }
              var c2 = w(e3, t3, i2);
              g(r3);
              for (var u2 = t3.editHelpers, f2 = (u2 || {}).modifyItem, d2 = [], h2 = 0; h2 < o2.length; h2++) {
                var p2 = r3._fullLayout.shapes[h2];
                if (d2[h2] = p2._input, void 0 !== n2 && h2 === r3._fullLayout._activeShapeIndex) {
                  var v2 = c2;
                  switch (p2.type) {
                    case "line":
                    case "rect":
                    case "circle":
                      f2("x0", v2.x0 - (p2.x0shift || 0)), f2("x1", v2.x1 - (p2.x1shift || 0)), f2("y0", v2.y0 - (p2.y0shift || 0)), f2("y1", v2.y1 - (p2.y1shift || 0));
                      break;
                    case "path":
                      f2("path", v2.path);
                  }
                }
              }
              return void 0 === n2 ? (d2.push(c2), d2) : u2 ? u2.getUpdateObj() : {};
            }
          }, createShapeObj: w };
        }, 8534: function(e2) {
          e2.exports = { clearOutlineControllers: function(e3) {
            var t2 = e3._fullLayout._zoomlayer;
            t2 && t2.selectAll(".outline-controllers").remove();
          }, clearOutline: function(e3) {
            var t2 = e3._fullLayout._zoomlayer;
            t2 && t2.selectAll(".select-outline").remove(), e3._fullLayout._outlining = false;
          } };
        }, 9728: function(e2, t2, r2) {
          var n = r2(2956), a = r2(4809), i = r2(9714);
          function o(e3, t3) {
            var r3 = 0;
            return (t3 = t3 || 0) && e3 && ("category" === e3.type || "multicategory" === e3.type) && (r3 = (e3.r2p(1) - e3.r2p(0)) * t3), r3;
          }
          t2.rangeToShapePosition = function(e3) {
            return "log" === e3.type ? e3.r2d : function(e4) {
              return e4;
            };
          }, t2.shapePositionToRange = function(e3) {
            return "log" === e3.type ? e3.d2r : function(e4) {
              return e4;
            };
          }, t2.decodeDate = function(e3) {
            return function(t3) {
              return t3.replace && (t3 = t3.replace("_", " ")), e3(t3);
            };
          }, t2.encodeDate = function(e3) {
            return function(t3) {
              return e3(t3).replace(" ", "_");
            };
          }, t2.extractPathCoords = function(e3, t3, r3) {
            var i2 = [];
            return e3.match(n.segmentRE).forEach(function(e4) {
              var o2 = t3[e4.charAt(0)].drawn;
              if (void 0 !== o2) {
                var l = e4.substr(1).match(n.paramRE);
                if (l && !(l.length < o2)) {
                  var s = l[o2], c = r3 ? s : a.cleanNumber(s);
                  i2.push(c);
                }
              }
            }), i2;
          }, t2.getDataToPixel = function(e3, r3, n2, a2, i2) {
            var l, s = e3._fullLayout._size;
            if (r3) if ("domain" === i2) l = function(e4) {
              return r3._length * (a2 ? 1 - e4 : e4) + r3._offset;
            };
            else {
              var c = t2.shapePositionToRange(r3);
              l = function(e4) {
                var t3 = o(r3, n2);
                return r3._offset + r3.r2p(c(e4, true)) + t3;
              }, "date" === r3.type && (l = t2.decodeDate(l));
            }
            else l = a2 ? function(e4) {
              return s.t + s.h * (1 - e4);
            } : function(e4) {
              return s.l + s.w * e4;
            };
            return l;
          }, t2.getPixelToData = function(e3, r3, n2, a2) {
            var i2, o2 = e3._fullLayout._size;
            if (r3) if ("domain" === a2) i2 = function(e4) {
              var t3 = (e4 - r3._offset) / r3._length;
              return n2 ? 1 - t3 : t3;
            };
            else {
              var l = t2.rangeToShapePosition(r3);
              i2 = function(e4) {
                return l(r3.p2r(e4 - r3._offset));
              };
            }
            else i2 = n2 ? function(e4) {
              return 1 - (e4 - o2.t) / o2.h;
            } : function(e4) {
              return (e4 - o2.l) / o2.w;
            };
            return i2;
          }, t2.roundPositionForSharpStrokeRendering = function(e3, t3) {
            var r3 = 1 === Math.round(t3 % 2), n2 = Math.round(e3);
            return r3 ? n2 + 0.5 : n2;
          }, t2.makeShapesOptionsAndPlotinfo = function(e3, t3) {
            var r3 = e3._fullLayout.shapes[t3] || {}, n2 = e3._fullLayout._plots[r3.xref + r3.yref];
            return n2 ? n2._hadPlotinfo = true : (n2 = {}, r3.xref && "paper" !== r3.xref && (n2.xaxis = e3._fullLayout[r3.xref + "axis"]), r3.yref && "paper" !== r3.yref && (n2.yaxis = e3._fullLayout[r3.yref + "axis"])), n2.xsizemode = r3.xsizemode, n2.ysizemode = r3.ysizemode, n2.xanchor = r3.xanchor, n2.yanchor = r3.yanchor, { options: r3, plotinfo: n2 };
          }, t2.makeSelectionsOptionsAndPlotinfo = function(e3, t3) {
            var r3 = e3._fullLayout.selections[t3] || {}, n2 = e3._fullLayout._plots[r3.xref + r3.yref];
            return n2 ? n2._hadPlotinfo = true : (n2 = {}, r3.xref && (n2.xaxis = e3._fullLayout[r3.xref + "axis"]), r3.yref && (n2.yaxis = e3._fullLayout[r3.yref + "axis"])), { options: r3, plotinfo: n2 };
          }, t2.getPathString = function(e3, r3) {
            var l, s, c, u, f, d, h, p, v = r3.type, g = i.getRefType(r3.xref), m = i.getRefType(r3.yref), y = i.getFromId(e3, r3.xref), x = i.getFromId(e3, r3.yref), b = e3._fullLayout._size, _ = o(y, r3.x0shift), w = o(y, r3.x1shift), T = o(x, r3.y0shift), M = o(x, r3.y1shift);
            if (y ? "domain" === g ? s = function(e4) {
              return y._offset + y._length * e4;
            } : (l = t2.shapePositionToRange(y), s = function(e4) {
              return y._offset + y.r2p(l(e4, true));
            }) : s = function(e4) {
              return b.l + b.w * e4;
            }, x ? "domain" === m ? u = function(e4) {
              return x._offset + x._length * (1 - e4);
            } : (c = t2.shapePositionToRange(x), u = function(e4) {
              return x._offset + x.r2p(c(e4, true));
            }) : u = function(e4) {
              return b.t + b.h * (1 - e4);
            }, "path" === v) return y && "date" === y.type && (s = t2.decodeDate(s)), x && "date" === x.type && (u = t2.decodeDate(u)), function(e4, t3, r4) {
              var i2 = e4.path, o2 = e4.xsizemode, l2 = e4.ysizemode, s2 = e4.xanchor, c2 = e4.yanchor;
              return i2.replace(n.segmentRE, function(e5) {
                var i3 = 0, u2 = e5.charAt(0), f2 = n.paramIsX[u2], d2 = n.paramIsY[u2], h2 = n.numParams[u2], p2 = e5.substr(1).replace(n.paramRE, function(e6) {
                  return f2[i3] ? e6 = "pixel" === o2 ? t3(s2) + Number(e6) : t3(e6) : d2[i3] && (e6 = "pixel" === l2 ? r4(c2) - Number(e6) : r4(e6)), ++i3 > h2 && (e6 = "X"), e6;
                });
                return i3 > h2 && (p2 = p2.replace(/[\s,]*X.*/, ""), a.log("Ignoring extra params in segment " + e5)), u2 + p2;
              });
            }(r3, s, u);
            if ("pixel" === r3.xsizemode) {
              var k = s(r3.xanchor);
              f = k + r3.x0 + _, d = k + r3.x1 + w;
            } else f = s(r3.x0) + _, d = s(r3.x1) + w;
            if ("pixel" === r3.ysizemode) {
              var A = u(r3.yanchor);
              h = A - r3.y0 + T, p = A - r3.y1 + M;
            } else h = u(r3.y0) + T, p = u(r3.y1) + M;
            if ("line" === v) return "M" + f + "," + h + "L" + d + "," + p;
            if ("rect" === v) return "M" + f + "," + h + "H" + d + "V" + p + "H" + f + "Z";
            var L = (f + d) / 2, S = (h + p) / 2, C = Math.abs(L - f), O = Math.abs(S - h), D = "A" + C + "," + O, P = L + C + "," + S;
            return "M" + P + D + " 0 1,1 " + L + "," + (S - O) + D + " 0 0,1 " + P + "Z";
          };
        }, 3701: function(e2, t2, r2) {
          var n = r2(8231);
          e2.exports = { moduleType: "component", name: "shapes", layoutAttributes: r2(3144), supplyLayoutDefaults: r2(4367), supplyDrawNewShapeDefaults: r2(5522), includeBasePlot: r2(706)("shapes"), calcAutorange: r2(4959), draw: n.draw, drawOne: n.drawOne };
        }, 1235: function(e2) {
          function t2(e3, t3) {
            return t3 ? t3.d2l(e3) : e3;
          }
          function r2(e3, t3) {
            return t3 ? t3.l2d(e3) : e3;
          }
          function n(e3) {
            return e3.x0shift || 0;
          }
          function a(e3) {
            return e3.x1shift || 0;
          }
          function i(e3) {
            return e3.y0shift || 0;
          }
          function o(e3) {
            return e3.y1shift || 0;
          }
          function l(e3, r3) {
            return t2(e3.x1, r3) + a(e3) - t2(e3.x0, r3) - n(e3);
          }
          function s(e3, r3, n2) {
            return t2(e3.y1, n2) + o(e3) - t2(e3.y0, n2) - i(e3);
          }
          e2.exports = { x0: function(e3) {
            return e3.x0;
          }, x1: function(e3) {
            return e3.x1;
          }, y0: function(e3) {
            return e3.y0;
          }, y1: function(e3) {
            return e3.y1;
          }, slope: function(e3, t3, r3) {
            return "line" !== e3.type ? void 0 : s(e3, 0, r3) / l(e3, t3);
          }, dx: l, dy: s, width: function(e3, t3) {
            return Math.abs(l(e3, t3));
          }, height: function(e3, t3, r3) {
            return Math.abs(s(e3, 0, r3));
          }, length: function(e3, t3, r3) {
            return "line" !== e3.type ? void 0 : Math.sqrt(Math.pow(l(e3, t3), 2) + Math.pow(s(e3, 0, r3), 2));
          }, xcenter: function(e3, i2) {
            return r2((t2(e3.x1, i2) + a(e3) + t2(e3.x0, i2) + n(e3)) / 2, i2);
          }, ycenter: function(e3, n2, a2) {
            return r2((t2(e3.y1, a2) + o(e3) + t2(e3.y0, a2) + i(e3)) / 2, a2);
          } };
        }, 8606: function(e2, t2, r2) {
          var n = r2(337), a = r2(7891), i = r2(3049).extendDeepAll, o = r2(3582).overrideAll, l = r2(9722), s = r2(8032).templatedArray, c = r2(4194), u = s("step", { visible: { valType: "boolean", dflt: true }, method: { valType: "enumerated", values: ["restyle", "relayout", "animate", "update", "skip"], dflt: "restyle" }, args: { valType: "info_array", freeLength: true, items: [{ valType: "any" }, { valType: "any" }, { valType: "any" }] }, label: { valType: "string" }, value: { valType: "string" }, execute: { valType: "boolean", dflt: true } });
          e2.exports = o(s("slider", { visible: { valType: "boolean", dflt: true }, active: { valType: "number", min: 0, dflt: 0 }, steps: u, lenmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "fraction" }, len: { valType: "number", min: 0, dflt: 1 }, x: { valType: "number", min: -2, max: 3, dflt: 0 }, pad: i(a({ editType: "arraydraw" }), {}, { t: { dflt: 20 } }), xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left" }, y: { valType: "number", min: -2, max: 3, dflt: 0 }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "top" }, transition: { duration: { valType: "number", min: 0, dflt: 150 }, easing: { valType: "enumerated", values: l.transition.easing.values, dflt: "cubic-in-out" } }, currentvalue: { visible: { valType: "boolean", dflt: true }, xanchor: { valType: "enumerated", values: ["left", "center", "right"], dflt: "left" }, offset: { valType: "number", dflt: 10 }, prefix: { valType: "string" }, suffix: { valType: "string" }, font: n({}) }, font: n({}), activebgcolor: { valType: "color", dflt: c.gripBgActiveColor }, bgcolor: { valType: "color", dflt: c.railBgColor }, bordercolor: { valType: "color", dflt: c.railBorderColor }, borderwidth: { valType: "number", min: 0, dflt: c.railBorderWidth }, ticklen: { valType: "number", min: 0, dflt: c.tickLength }, tickcolor: { valType: "color", dflt: c.tickColor }, tickwidth: { valType: "number", min: 0, dflt: 1 }, minorticklen: { valType: "number", min: 0, dflt: c.minorTickLength } }), "arraydraw", "from-root");
        }, 4194: function(e2) {
          e2.exports = { name: "sliders", containerClassName: "slider-container", groupClassName: "slider-group", inputAreaClass: "slider-input-area", railRectClass: "slider-rail-rect", railTouchRectClass: "slider-rail-touch-rect", gripRectClass: "slider-grip-rect", tickRectClass: "slider-tick-rect", inputProxyClass: "slider-input-proxy", labelsClass: "slider-labels", labelGroupClass: "slider-label-group", labelClass: "slider-label", currentValueClass: "slider-current-value", railHeight: 5, menuIndexAttrName: "slider-active-index", autoMarginIdRoot: "slider-", minWidth: 30, minHeight: 30, textPadX: 40, arrowOffsetX: 4, railRadius: 2, railWidth: 5, railBorder: 4, railBorderWidth: 1, railBorderColor: "#bec8d9", railBgColor: "#f8fafc", railInset: 8, stepInset: 10, gripRadius: 10, gripWidth: 20, gripHeight: 20, gripBorder: 20, gripBorderWidth: 1, gripBorderColor: "#bec8d9", gripBgColor: "#f6f8fa", gripBgActiveColor: "#dbdde0", labelPadding: 8, labelOffset: 0, tickWidth: 1, tickColor: "#333", tickOffset: 25, tickLength: 7, minorTickOffset: 25, minorTickColor: "#333", minorTickLength: 4, currentValuePadding: 8, currentValueInset: 0 };
        }, 4537: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9008), i = r2(8606), o = r2(4194).name, l = i.steps;
          function s(e3, t3, r3) {
            function o2(r4, a2) {
              return n.coerce(e3, t3, i, r4, a2);
            }
            for (var l2 = a(e3, t3, { name: "steps", handleItemDefaults: c }), s2 = 0, u = 0; u < l2.length; u++) l2[u].visible && s2++;
            if (s2 < 2 ? t3.visible = false : o2("visible")) {
              t3._stepCount = s2;
              var f = t3._visibleSteps = n.filterVisible(l2);
              (l2[o2("active")] || {}).visible || (t3.active = f[0]._index), o2("x"), o2("y"), n.noneOrAll(e3, t3, ["x", "y"]), o2("xanchor"), o2("yanchor"), o2("len"), o2("lenmode"), o2("pad.t"), o2("pad.r"), o2("pad.b"), o2("pad.l"), n.coerceFont(o2, "font", r3.font), o2("currentvalue.visible") && (o2("currentvalue.xanchor"), o2("currentvalue.prefix"), o2("currentvalue.suffix"), o2("currentvalue.offset"), n.coerceFont(o2, "currentvalue.font", t3.font)), o2("transition.duration"), o2("transition.easing"), o2("bgcolor"), o2("activebgcolor"), o2("bordercolor"), o2("borderwidth"), o2("ticklen"), o2("tickwidth"), o2("tickcolor"), o2("minorticklen");
            }
          }
          function c(e3, t3) {
            function r3(r4, a3) {
              return n.coerce(e3, t3, l, r4, a3);
            }
            if ("skip" === e3.method || Array.isArray(e3.args) ? r3("visible") : t3.visible = false) {
              r3("method"), r3("args");
              var a2 = r3("label", "step-" + t3._index);
              r3("value", a2), r3("execute");
            }
          }
          e2.exports = function(e3, t3) {
            a(e3, t3, { name: o, handleItemDefaults: s });
          };
        }, 4097: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4122), i = r2(8766), o = r2(2203), l = r2(4809), s = l.strTranslate, c = r2(635), u = r2(8032).arrayEditor, f = r2(4194), d = r2(4530), h = d.LINE_SPACING, p = d.FROM_TL, v = d.FROM_BR;
          function g(e3) {
            return f.autoMarginIdRoot + e3._index;
          }
          function m(e3) {
            return e3._index;
          }
          function y(e3, t3) {
            var r3 = o.tester.selectAll("g." + f.labelGroupClass).data(t3._visibleSteps);
            r3.enter().append("g").classed(f.labelGroupClass, true);
            var i2 = 0, s2 = 0;
            r3.each(function(e4) {
              var r4 = _(n.select(this), { step: e4 }, t3).node();
              if (r4) {
                var a2 = o.bBox(r4);
                s2 = Math.max(s2, a2.height), i2 = Math.max(i2, a2.width);
              }
            }), r3.remove();
            var u2 = t3._dims = {};
            u2.inputAreaWidth = Math.max(f.railWidth, f.gripHeight);
            var d2 = e3._fullLayout._size;
            u2.lx = d2.l + d2.w * t3.x, u2.ly = d2.t + d2.h * (1 - t3.y), "fraction" === t3.lenmode ? u2.outerLength = Math.round(d2.w * t3.len) : u2.outerLength = t3.len, u2.inputAreaStart = 0, u2.inputAreaLength = Math.round(u2.outerLength - t3.pad.l - t3.pad.r);
            var h2 = (u2.inputAreaLength - 2 * f.stepInset) / (t3._stepCount - 1), m2 = i2 + f.labelPadding;
            if (u2.labelStride = Math.max(1, Math.ceil(m2 / h2)), u2.labelHeight = s2, u2.currentValueMaxWidth = 0, u2.currentValueHeight = 0, u2.currentValueTotalHeight = 0, u2.currentValueMaxLines = 1, t3.currentvalue.visible) {
              var y2 = o.tester.append("g");
              r3.each(function(e4) {
                var r4 = x(y2, t3, e4.label), n2 = r4.node() && o.bBox(r4.node()) || { width: 0, height: 0 }, a2 = c.lineCount(r4);
                u2.currentValueMaxWidth = Math.max(u2.currentValueMaxWidth, Math.ceil(n2.width)), u2.currentValueHeight = Math.max(u2.currentValueHeight, Math.ceil(n2.height)), u2.currentValueMaxLines = Math.max(u2.currentValueMaxLines, a2);
              }), u2.currentValueTotalHeight = u2.currentValueHeight + t3.currentvalue.offset, y2.remove();
            }
            u2.height = u2.currentValueTotalHeight + f.tickOffset + t3.ticklen + f.labelOffset + u2.labelHeight + t3.pad.t + t3.pad.b;
            var b2 = "left";
            l.isRightAnchor(t3) && (u2.lx -= u2.outerLength, b2 = "right"), l.isCenterAnchor(t3) && (u2.lx -= u2.outerLength / 2, b2 = "center");
            var w2 = "top";
            l.isBottomAnchor(t3) && (u2.ly -= u2.height, w2 = "bottom"), l.isMiddleAnchor(t3) && (u2.ly -= u2.height / 2, w2 = "middle"), u2.outerLength = Math.ceil(u2.outerLength), u2.height = Math.ceil(u2.height), u2.lx = Math.round(u2.lx), u2.ly = Math.round(u2.ly);
            var T2 = { y: t3.y, b: u2.height * v[w2], t: u2.height * p[w2] };
            "fraction" === t3.lenmode ? (T2.l = 0, T2.xl = t3.x - t3.len * p[b2], T2.r = 0, T2.xr = t3.x + t3.len * v[b2]) : (T2.x = t3.x, T2.l = u2.outerLength * p[b2], T2.r = u2.outerLength * v[b2]), a.autoMargin(e3, g(t3), T2);
          }
          function x(e3, t3, r3) {
            if (t3.currentvalue.visible) {
              var n2, a2, i2 = t3._dims;
              switch (t3.currentvalue.xanchor) {
                case "right":
                  n2 = i2.inputAreaLength - f.currentValueInset - i2.currentValueMaxWidth, a2 = "left";
                  break;
                case "center":
                  n2 = 0.5 * i2.inputAreaLength, a2 = "middle";
                  break;
                default:
                  n2 = f.currentValueInset, a2 = "left";
              }
              var s2 = l.ensureSingle(e3, "text", f.labelClass, function(e4) {
                e4.attr({ "text-anchor": a2, "data-notex": 1 });
              }), u2 = t3.currentvalue.prefix ? t3.currentvalue.prefix : "";
              if ("string" == typeof r3) u2 += r3;
              else {
                var d2 = t3.steps[t3.active].label, p2 = t3._gd._fullLayout._meta;
                p2 && (d2 = l.templateString(d2, p2)), u2 += d2;
              }
              t3.currentvalue.suffix && (u2 += t3.currentvalue.suffix), s2.call(o.font, t3.currentvalue.font).text(u2).call(c.convertToTspans, t3._gd);
              var v2 = c.lineCount(s2), g2 = (i2.currentValueMaxLines + 1 - v2) * t3.currentvalue.font.size * h;
              return c.positionText(s2, n2, g2), s2;
            }
          }
          function b(e3, t3, r3) {
            l.ensureSingle(e3, "rect", f.gripRectClass, function(n2) {
              n2.call(k, t3, e3, r3).style("pointer-events", "all");
            }).attr({ width: f.gripWidth, height: f.gripHeight, rx: f.gripRadius, ry: f.gripRadius }).call(i.stroke, r3.bordercolor).call(i.fill, r3.bgcolor).style("stroke-width", r3.borderwidth + "px");
          }
          function _(e3, t3, r3) {
            var n2 = l.ensureSingle(e3, "text", f.labelClass, function(e4) {
              e4.attr({ "text-anchor": "middle", "data-notex": 1 });
            }), a2 = t3.step.label, i2 = r3._gd._fullLayout._meta;
            return i2 && (a2 = l.templateString(a2, i2)), n2.call(o.font, r3.font).text(a2).call(c.convertToTspans, r3._gd), n2;
          }
          function w(e3, t3) {
            var r3 = l.ensureSingle(e3, "g", f.labelsClass), a2 = t3._dims, i2 = r3.selectAll("g." + f.labelGroupClass).data(a2.labelSteps);
            i2.enter().append("g").classed(f.labelGroupClass, true), i2.exit().remove(), i2.each(function(e4) {
              var r4 = n.select(this);
              r4.call(_, e4, t3), o.setTranslate(r4, S(t3, e4.fraction), f.tickOffset + t3.ticklen + t3.font.size * h + f.labelOffset + a2.currentValueTotalHeight);
            });
          }
          function T(e3, t3, r3, n2, a2) {
            var i2 = Math.round(n2 * (r3._stepCount - 1)), o2 = r3._visibleSteps[i2]._index;
            o2 !== r3.active && M(e3, t3, r3, o2, true, a2);
          }
          function M(e3, t3, r3, n2, i2, o2) {
            var l2 = r3.active;
            r3.active = n2, u(e3.layout, f.name, r3).applyUpdate("active", n2);
            var s2 = r3.steps[r3.active];
            t3.call(L, r3, o2), t3.call(x, r3), e3.emit("plotly_sliderchange", { slider: r3, step: r3.steps[r3.active], interaction: i2, previousActive: l2 }), s2 && s2.method && i2 && (t3._nextMethod ? (t3._nextMethod.step = s2, t3._nextMethod.doCallback = i2, t3._nextMethod.doTransition = o2) : (t3._nextMethod = { step: s2, doCallback: i2, doTransition: o2 }, t3._nextMethodRaf = window.requestAnimationFrame(function() {
              var r4 = t3._nextMethod.step;
              r4.method && (r4.execute && a.executeAPICommand(e3, r4.method, r4.args), t3._nextMethod = null, t3._nextMethodRaf = null);
            })));
          }
          function k(e3, t3, r3) {
            if (!t3._context.staticPlot) {
              var a2 = r3.node(), o2 = n.select(t3);
              e3.on("mousedown", s2), e3.on("touchstart", s2);
            }
            function l2() {
              return r3.data()[0];
            }
            function s2() {
              var e4 = l2();
              t3.emit("plotly_sliderstart", { slider: e4 });
              var s3 = r3.select("." + f.gripRectClass);
              n.event.stopPropagation(), n.event.preventDefault(), s3.call(i.fill, e4.activebgcolor);
              var c2 = C(e4, n.mouse(a2)[0]);
              function u2() {
                var e5 = l2(), i2 = C(e5, n.mouse(a2)[0]);
                T(t3, r3, e5, i2, false);
              }
              function d2() {
                var e5 = l2();
                e5._dragging = false, s3.call(i.fill, e5.bgcolor), o2.on("mouseup", null), o2.on("mousemove", null), o2.on("touchend", null), o2.on("touchmove", null), t3.emit("plotly_sliderend", { slider: e5, step: e5.steps[e5.active] });
              }
              T(t3, r3, e4, c2, true), e4._dragging = true, o2.on("mousemove", u2), o2.on("touchmove", u2), o2.on("mouseup", d2), o2.on("touchend", d2);
            }
          }
          function A(e3, t3) {
            var r3 = e3.selectAll("rect." + f.tickRectClass).data(t3._visibleSteps), a2 = t3._dims;
            r3.enter().append("rect").classed(f.tickRectClass, true), r3.exit().remove(), r3.attr({ width: t3.tickwidth + "px", "shape-rendering": "crispEdges" }), r3.each(function(e4, r4) {
              var l2 = r4 % a2.labelStride == 0, s2 = n.select(this);
              s2.attr({ height: l2 ? t3.ticklen : t3.minorticklen }).call(i.fill, t3.tickcolor), o.setTranslate(s2, S(t3, r4 / (t3._stepCount - 1)) - 0.5 * t3.tickwidth, (l2 ? f.tickOffset : f.minorTickOffset) + a2.currentValueTotalHeight);
            });
          }
          function L(e3, t3, r3) {
            for (var n2 = e3.select("rect." + f.gripRectClass), a2 = 0, i2 = 0; i2 < t3._stepCount; i2++) if (t3._visibleSteps[i2]._index === t3.active) {
              a2 = i2;
              break;
            }
            var o2 = S(t3, a2 / (t3._stepCount - 1));
            if (!t3._invokingCommand) {
              var l2 = n2;
              r3 && t3.transition.duration > 0 && (l2 = l2.transition().duration(t3.transition.duration).ease(t3.transition.easing)), l2.attr("transform", s(o2 - 0.5 * f.gripWidth, t3._dims.currentValueTotalHeight));
            }
          }
          function S(e3, t3) {
            var r3 = e3._dims;
            return r3.inputAreaStart + f.stepInset + (r3.inputAreaLength - 2 * f.stepInset) * Math.min(1, Math.max(0, t3));
          }
          function C(e3, t3) {
            var r3 = e3._dims;
            return Math.min(1, Math.max(0, (t3 - f.stepInset - r3.inputAreaStart) / (r3.inputAreaLength - 2 * f.stepInset - 2 * r3.inputAreaStart)));
          }
          function O(e3, t3, r3) {
            var n2 = r3._dims, a2 = l.ensureSingle(e3, "rect", f.railTouchRectClass, function(n3) {
              n3.call(k, t3, e3, r3).style("pointer-events", "all");
            });
            a2.attr({ width: n2.inputAreaLength, height: Math.max(n2.inputAreaWidth, f.tickOffset + r3.ticklen + n2.labelHeight) }).call(i.fill, r3.bgcolor).attr("opacity", 0), o.setTranslate(a2, 0, n2.currentValueTotalHeight);
          }
          function D(e3, t3) {
            var r3 = t3._dims, n2 = r3.inputAreaLength - 2 * f.railInset, a2 = l.ensureSingle(e3, "rect", f.railRectClass);
            a2.attr({ width: n2, height: f.railWidth, rx: f.railRadius, ry: f.railRadius, "shape-rendering": "crispEdges" }).call(i.stroke, t3.bordercolor).call(i.fill, t3.bgcolor).style("stroke-width", t3.borderwidth + "px"), o.setTranslate(a2, f.railInset, 0.5 * (r3.inputAreaWidth - f.railWidth) + r3.currentValueTotalHeight);
          }
          e2.exports = function(e3) {
            var t3 = e3._context.staticPlot, r3 = e3._fullLayout, i2 = function(e4, t4) {
              for (var r4 = e4[f.name], n2 = [], a2 = 0; a2 < r4.length; a2++) {
                var i3 = r4[a2];
                i3.visible && (i3._gd = t4, n2.push(i3));
              }
              return n2;
            }(r3, e3), l2 = r3._infolayer.selectAll("g." + f.containerClassName).data(i2.length > 0 ? [0] : []);
            function s2(t4) {
              t4._commandObserver && (t4._commandObserver.remove(), delete t4._commandObserver), a.autoMargin(e3, g(t4));
            }
            if (l2.enter().append("g").classed(f.containerClassName, true).style("cursor", t3 ? null : "ew-resize"), l2.exit().each(function() {
              n.select(this).selectAll("g." + f.groupClassName).each(s2);
            }).remove(), 0 !== i2.length) {
              var c2 = l2.selectAll("g." + f.groupClassName).data(i2, m);
              c2.enter().append("g").classed(f.groupClassName, true), c2.exit().each(s2).remove();
              for (var u2 = 0; u2 < i2.length; u2++) {
                var d2 = i2[u2];
                y(e3, d2);
              }
              c2.each(function(t4) {
                var r4 = n.select(this);
                !function(e4) {
                  var t5 = e4._dims;
                  t5.labelSteps = [];
                  for (var r5 = e4._stepCount, n2 = 0; n2 < r5; n2 += t5.labelStride) t5.labelSteps.push({ fraction: n2 / (r5 - 1), step: e4._visibleSteps[n2] });
                }(t4), a.manageCommandObserver(e3, t4, t4._visibleSteps, function(t5) {
                  var n2 = r4.data()[0];
                  n2.active !== t5.index && (n2._dragging || M(e3, r4, n2, t5.index, false, true));
                }), function(e4, t5, r5) {
                  (r5.steps[r5.active] || {}).visible || (r5.active = r5._visibleSteps[0]._index), t5.call(x, r5).call(D, r5).call(w, r5).call(A, r5).call(O, e4, r5).call(b, e4, r5);
                  var n2 = r5._dims;
                  o.setTranslate(t5, n2.lx + r5.pad.l, n2.ly + r5.pad.t), t5.call(L, r5, false), t5.call(x, r5);
                }(e3, n.select(this), t4);
              });
            }
          };
        }, 5359: function(e2, t2, r2) {
          var n = r2(4194);
          e2.exports = { moduleType: "component", name: n.name, layoutAttributes: r2(8606), supplyLayoutDefaults: r2(4537), draw: r2(4097) };
        }, 7240: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(4122), o = r2(3626), l = r2(4809), s = l.strTranslate, c = r2(2203), u = r2(8766), f = r2(635), d = r2(438), h = r2(4530).OPPOSITE_SIDE, p = / [XY][0-9]* /;
          e2.exports = { draw: function(e3, t3, r3) {
            var v, g = e3._fullLayout, m = r3.propContainer, y = r3.propName, x = r3.placeholder, b = r3.traceIndex, _ = r3.avoid || {}, w = r3.attributes, T = r3.transform, M = r3.containerGroup, k = 1, A = m.title, L = (A && A.text ? A.text : "").trim(), S = false, C = A && A.font ? A.font : {}, O = C.family, D = C.size, P = C.color, z = C.weight, I = C.style, E = C.variant, R = C.textcase, N = C.lineposition, F = C.shadow, H = !!r3.subtitlePropName, B = r3.subtitlePlaceholder, j = (m.title || {}).subtitle || { text: "", font: {} }, Y = j.text.trim(), V = false, U = 1, q = j.font, G = q.family, Z = q.size, W = q.color, J = q.weight, X = q.style, K = q.variant, Q = q.textcase, $ = q.lineposition, ee = q.shadow;
            "title.text" === y ? v = "titleText" : -1 !== y.indexOf("axis") ? v = "axisTitleText" : y.indexOf(true) && (v = "colorbarTitleText");
            var te = e3._context.edits[v];
            function re(e4, t4) {
              return void 0 !== e4 && void 0 !== t4 && e4.replace(p, " % ") === t4.replace(p, " % ");
            }
            "" === L ? k = 0 : re(L, x) && (te || (L = ""), k = 0.2, S = true), H && ("" === Y ? U = 0 : re(Y, B) && (te || (Y = ""), U = 0.2, V = true)), r3._meta ? L = l.templateString(L, r3._meta) : g._meta && (L = l.templateString(L, g._meta));
            var ne, ae = L || Y || te;
            M || (M = l.ensureSingle(g._infolayer, "g", "g-" + t3), ne = g._hColorbarMoveTitle);
            var ie = M.selectAll("text." + t3).data(ae ? [0] : []);
            ie.enter().append("text"), ie.text(L).attr("class", t3), ie.exit().remove();
            var oe = null, le = t3 + "-subtitle", se = Y || te;
            if (H && se && ((oe = M.selectAll("text." + le).data(se ? [0] : [])).enter().append("text"), oe.text(Y).attr("class", le), oe.exit().remove()), !ae) return M;
            function ce(e4, t4) {
              l.syncOrAsync([ue, fe], { title: e4, subtitle: t4 });
            }
            function ue(r4) {
              var a2, o2 = r4.title, d2 = r4.subtitle;
              if (!T && ne && (T = {}), T ? (a2 = "", T.rotate && (a2 += "rotate(" + [T.rotate, w.x, w.y] + ")"), (T.offset || ne) && (a2 += s(0, (T.offset || 0) - (ne || 0)))) : a2 = null, o2.attr("transform", a2), o2.style("opacity", k * u.opacity(P)).call(c.font, { color: u.rgb(P), size: n.round(D, 2), family: O, weight: z, style: I, variant: E, textcase: R, shadow: F, lineposition: N }).attr(w).call(f.convertToTspans, e3, function(e4) {
                if (e4) {
                  var t4 = n.select(e4.node().parentNode).select("." + le);
                  if (!t4.empty()) {
                    var r5 = e4.node().getBBox();
                    if (r5.height) {
                      var a3 = r5.y + r5.height + 1.6 * Z;
                      t4.attr("y", a3);
                    }
                  }
                }
              }), d2) {
                var h2 = M.select("." + t3 + "-math-group"), p2 = o2.node().getBBox(), v2 = h2.node() ? h2.node().getBBox() : void 0, g2 = v2 ? v2.y + v2.height + 1.6 * Z : p2.y + p2.height + 1.6 * Z, m2 = l.extendFlat({}, w, { y: g2 });
                d2.attr("transform", a2), d2.style("opacity", U * u.opacity(W)).call(c.font, { color: u.rgb(W), size: n.round(Z, 2), family: G, weight: J, style: X, variant: K, textcase: Q, shadow: ee, lineposition: $ }).attr(m2).call(f.convertToTspans, e3);
              }
              return i.previousPromises(e3);
            }
            function fe(t4) {
              var r4 = t4.title, i2 = n.select(r4.node().parentNode);
              if (_ && _.selection && _.side && L) {
                i2.attr("transform", null);
                var o2 = h[_.side], u2 = "left" === _.side || "top" === _.side ? -1 : 1, f2 = a(_.pad) ? _.pad : 2, d2 = c.bBox(i2.node()), p2 = { t: 0, b: 0, l: 0, r: 0 }, v2 = e3._fullLayout._reservedMargin;
                for (var y2 in v2) for (var x2 in v2[y2]) {
                  var b2 = v2[y2][x2];
                  p2[x2] = Math.max(p2[x2], b2);
                }
                var w2 = { left: p2.l, top: p2.t, right: g.width - p2.r, bottom: g.height - p2.b }, T2 = _.maxShift || u2 * (w2[_.side] - d2[_.side]), M2 = 0;
                if (T2 < 0) M2 = T2;
                else {
                  var k2 = _.offsetLeft || 0, A2 = _.offsetTop || 0;
                  d2.left -= k2, d2.right -= k2, d2.top -= A2, d2.bottom -= A2, _.selection.each(function() {
                    var e4 = c.bBox(this);
                    l.bBoxIntersect(d2, e4, f2) && (M2 = Math.max(M2, u2 * (e4[_.side] - d2[o2]) + f2));
                  }), M2 = Math.min(T2, M2), m._titleScoot = Math.abs(M2);
                }
                if (M2 > 0 || T2 < 0) {
                  var S2 = { left: [-M2, 0], right: [M2, 0], top: [0, -M2], bottom: [0, M2] }[_.side];
                  i2.attr("transform", s(S2[0], S2[1]));
                }
              }
            }
            function de(e4, t4) {
              e4.text(t4).on("mouseover.opacity", function() {
                n.select(this).transition().duration(d.SHOW_PLACEHOLDER).style("opacity", 1);
              }).on("mouseout.opacity", function() {
                n.select(this).transition().duration(d.HIDE_PLACEHOLDER).style("opacity", 0);
              });
            }
            if (ie.call(ce, oe), te && (L ? ie.on(".opacity", null) : (de(ie, x), S = true), ie.call(f.makeEditable, { gd: e3 }).on("edit", function(t4) {
              void 0 !== b ? o.call("_guiRestyle", e3, y, t4, b) : o.call("_guiRelayout", e3, y, t4);
            }).on("cancel", function() {
              this.text(this.attr("data-unformatted")).call(ce);
            }).on("input", function(e4) {
              this.text(e4 || " ").call(f.positionText, w.x, w.y);
            }), H)) {
              if (H && !L) {
                var he = ie.node().getBBox(), pe = he.y + he.height + 1.6 * Z;
                oe.attr("y", pe);
              }
              Y ? oe.on(".opacity", null) : (de(oe, B), V = true), oe.call(f.makeEditable, { gd: e3 }).on("edit", function(t4) {
                o.call("_guiRelayout", e3, "title.subtitle.text", t4);
              }).on("cancel", function() {
                this.text(this.attr("data-unformatted")).call(ce);
              }).on("input", function(e4) {
                this.text(e4 || " ").call(f.positionText, oe.attr("x"), oe.attr("y"));
              });
            }
            return ie.classed("js-placeholder", S), oe && oe.classed("js-placeholder", V), M;
          }, SUBTITLE_PADDING_EM: 1.6, SUBTITLE_PADDING_MATHJAX_EM: 1.6 };
        }, 5389: function(e2, t2, r2) {
          var n = r2(337), a = r2(229), i = r2(3049).extendFlat, o = r2(3582).overrideAll, l = r2(7891), s = r2(8032).templatedArray, c = s("button", { visible: { valType: "boolean" }, method: { valType: "enumerated", values: ["restyle", "relayout", "animate", "update", "skip"], dflt: "restyle" }, args: { valType: "info_array", freeLength: true, items: [{ valType: "any" }, { valType: "any" }, { valType: "any" }] }, args2: { valType: "info_array", freeLength: true, items: [{ valType: "any" }, { valType: "any" }, { valType: "any" }] }, label: { valType: "string", dflt: "" }, execute: { valType: "boolean", dflt: true } });
          e2.exports = o(s("updatemenu", { _arrayAttrRegexps: [/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/], visible: { valType: "boolean" }, type: { valType: "enumerated", values: ["dropdown", "buttons"], dflt: "dropdown" }, direction: { valType: "enumerated", values: ["left", "right", "up", "down"], dflt: "down" }, active: { valType: "integer", min: -1, dflt: 0 }, showactive: { valType: "boolean", dflt: true }, buttons: c, x: { valType: "number", min: -2, max: 3, dflt: -0.05 }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "right" }, y: { valType: "number", min: -2, max: 3, dflt: 1 }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "top" }, pad: i(l({ editType: "arraydraw" }), {}), font: n({}), bgcolor: { valType: "color" }, bordercolor: { valType: "color", dflt: a.borderLine }, borderwidth: { valType: "number", min: 0, dflt: 1, editType: "arraydraw" } }), "arraydraw", "from-root");
        }, 1559: function(e2) {
          e2.exports = { name: "updatemenus", containerClassName: "updatemenu-container", headerGroupClassName: "updatemenu-header-group", headerClassName: "updatemenu-header", headerArrowClassName: "updatemenu-header-arrow", dropdownButtonGroupClassName: "updatemenu-dropdown-button-group", dropdownButtonClassName: "updatemenu-dropdown-button", buttonClassName: "updatemenu-button", itemRectClassName: "updatemenu-item-rect", itemTextClassName: "updatemenu-item-text", menuIndexAttrName: "updatemenu-active-index", autoMarginIdRoot: "updatemenu-", blankHeaderOpts: { label: "  " }, minWidth: 30, minHeight: 30, textPadX: 24, arrowPadX: 16, rx: 2, ry: 2, textOffsetX: 12, textOffsetY: 3, arrowOffsetX: 4, gapButtonHeader: 5, gapButton: 2, activeColor: "#F4FAFF", hoverColor: "#F4FAFF", arrowSymbol: { left: "◄", right: "►", up: "▲", down: "▼" } };
        }, 2746: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9008), i = r2(5389), o = r2(1559).name, l = i.buttons;
          function s(e3, t3, r3) {
            function o2(r4, a2) {
              return n.coerce(e3, t3, i, r4, a2);
            }
            o2("visible", a(e3, t3, { name: "buttons", handleItemDefaults: c }).length > 0) && (o2("active"), o2("direction"), o2("type"), o2("showactive"), o2("x"), o2("y"), n.noneOrAll(e3, t3, ["x", "y"]), o2("xanchor"), o2("yanchor"), o2("pad.t"), o2("pad.r"), o2("pad.b"), o2("pad.l"), n.coerceFont(o2, "font", r3.font), o2("bgcolor", r3.paper_bgcolor), o2("bordercolor"), o2("borderwidth"));
          }
          function c(e3, t3) {
            function r3(r4, a2) {
              return n.coerce(e3, t3, l, r4, a2);
            }
            r3("visible", "skip" === e3.method || Array.isArray(e3.args)) && (r3("method"), r3("args"), r3("args2"), r3("label"), r3("execute"));
          }
          e2.exports = function(e3, t3) {
            a(e3, t3, { name: o, handleItemDefaults: s });
          };
        }, 974: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4122), i = r2(8766), o = r2(2203), l = r2(4809), s = r2(635), c = r2(8032).arrayEditor, u = r2(4530).LINE_SPACING, f = r2(1559), d = r2(1736);
          function h(e3) {
            return e3._index;
          }
          function p(e3, t3) {
            return +e3.attr(f.menuIndexAttrName) === t3._index;
          }
          function v(e3, t3, r3, n2, a2, i2, o2, l2) {
            t3.active = o2, c(e3.layout, f.name, t3).applyUpdate("active", o2), "buttons" === t3.type ? m(e3, n2, null, null, t3) : "dropdown" === t3.type && (a2.attr(f.menuIndexAttrName, "-1"), g(e3, n2, a2, i2, t3), l2 || m(e3, n2, a2, i2, t3));
          }
          function g(e3, t3, r3, n2, a2) {
            var i2 = l.ensureSingle(t3, "g", f.headerClassName, function(e4) {
              e4.style("pointer-events", "all");
            }), s2 = a2._dims, c2 = a2.active, u2 = a2.buttons[c2] || f.blankHeaderOpts, d2 = { y: a2.pad.t, yPad: 0, x: a2.pad.l, xPad: 0, index: 0 }, h2 = { width: s2.headerWidth, height: s2.headerHeight };
            i2.call(y, a2, u2, e3).call(A, a2, d2, h2), l.ensureSingle(t3, "text", f.headerArrowClassName, function(e4) {
              e4.attr("text-anchor", "end").call(o.font, a2.font).text(f.arrowSymbol[a2.direction]);
            }).attr({ x: s2.headerWidth - f.arrowOffsetX + a2.pad.l, y: s2.headerHeight / 2 + f.textOffsetY + a2.pad.t }), i2.on("click", function() {
              r3.call(L, String(p(r3, a2) ? -1 : a2._index)), m(e3, t3, r3, n2, a2);
            }), i2.on("mouseover", function() {
              i2.call(w);
            }), i2.on("mouseout", function() {
              i2.call(T, a2);
            }), o.setTranslate(t3, s2.lx, s2.ly);
          }
          function m(e3, t3, r3, i2, o2) {
            r3 || (r3 = t3).attr("pointer-events", "all");
            var s2 = function(e4) {
              return -1 == +e4.attr(f.menuIndexAttrName);
            }(r3) && "buttons" !== o2.type ? [] : o2.buttons, c2 = "dropdown" === o2.type ? f.dropdownButtonClassName : f.buttonClassName, u2 = r3.selectAll("g." + c2).data(l.filterVisible(s2)), d2 = u2.enter().append("g").classed(c2, true), h2 = u2.exit();
            "dropdown" === o2.type ? (d2.attr("opacity", "0").transition().attr("opacity", "1"), h2.transition().attr("opacity", "0").remove()) : h2.remove();
            var p2 = 0, g2 = 0, m2 = o2._dims, x2 = -1 !== ["up", "down"].indexOf(o2.direction);
            "dropdown" === o2.type && (x2 ? g2 = m2.headerHeight + f.gapButtonHeader : p2 = m2.headerWidth + f.gapButtonHeader), "dropdown" === o2.type && "up" === o2.direction && (g2 = -f.gapButtonHeader + f.gapButton - m2.openHeight), "dropdown" === o2.type && "left" === o2.direction && (p2 = -f.gapButtonHeader + f.gapButton - m2.openWidth);
            var b2 = { x: m2.lx + p2 + o2.pad.l, y: m2.ly + g2 + o2.pad.t, yPad: f.gapButton, xPad: f.gapButton, index: 0 }, M2 = { l: b2.x + o2.borderwidth, t: b2.y + o2.borderwidth };
            u2.each(function(l2, s3) {
              var c3 = n.select(this);
              c3.call(y, o2, l2, e3).call(A, o2, b2), c3.on("click", function() {
                n.event.defaultPrevented || (l2.execute && (l2.args2 && o2.active === s3 ? (v(e3, o2, 0, t3, r3, i2, -1), a.executeAPICommand(e3, l2.method, l2.args2)) : (v(e3, o2, 0, t3, r3, i2, s3), a.executeAPICommand(e3, l2.method, l2.args))), e3.emit("plotly_buttonclicked", { menu: o2, button: l2, active: o2.active }));
              }), c3.on("mouseover", function() {
                c3.call(w);
              }), c3.on("mouseout", function() {
                c3.call(T, o2), u2.call(_, o2);
              });
            }), u2.call(_, o2), x2 ? (M2.w = Math.max(m2.openWidth, m2.headerWidth), M2.h = b2.y - M2.t) : (M2.w = b2.x - M2.l, M2.h = Math.max(m2.openHeight, m2.headerHeight)), M2.direction = o2.direction, i2 && (u2.size() ? function(e4, t4, r4, n2, a2, i3) {
              var o3, l2, s3, c3 = a2.direction, u3 = "up" === c3 || "down" === c3, d3 = a2._dims, h3 = a2.active;
              if (u3) for (l2 = 0, s3 = 0; s3 < h3; s3++) l2 += d3.heights[s3] + f.gapButton;
              else for (o3 = 0, s3 = 0; s3 < h3; s3++) o3 += d3.widths[s3] + f.gapButton;
              n2.enable(i3, o3, l2), n2.hbar && n2.hbar.attr("opacity", "0").transition().attr("opacity", "1"), n2.vbar && n2.vbar.attr("opacity", "0").transition().attr("opacity", "1");
            }(0, 0, 0, i2, o2, M2) : function(e4) {
              var t4 = !!e4.hbar, r4 = !!e4.vbar;
              t4 && e4.hbar.transition().attr("opacity", "0").each("end", function() {
                t4 = false, r4 || e4.disable();
              }), r4 && e4.vbar.transition().attr("opacity", "0").each("end", function() {
                r4 = false, t4 || e4.disable();
              });
            }(i2));
          }
          function y(e3, t3, r3, n2) {
            e3.call(x, t3).call(b, t3, r3, n2);
          }
          function x(e3, t3) {
            l.ensureSingle(e3, "rect", f.itemRectClassName, function(e4) {
              e4.attr({ rx: f.rx, ry: f.ry, "shape-rendering": "crispEdges" });
            }).call(i.stroke, t3.bordercolor).call(i.fill, t3.bgcolor).style("stroke-width", t3.borderwidth + "px");
          }
          function b(e3, t3, r3, n2) {
            var a2 = l.ensureSingle(e3, "text", f.itemTextClassName, function(e4) {
              e4.attr({ "text-anchor": "start", "data-notex": 1 });
            }), i2 = r3.label, c2 = n2._fullLayout._meta;
            c2 && (i2 = l.templateString(i2, c2)), a2.call(o.font, t3.font).text(i2).call(s.convertToTspans, n2);
          }
          function _(e3, t3) {
            var r3 = t3.active;
            e3.each(function(e4, a2) {
              var o2 = n.select(this);
              a2 === r3 && t3.showactive && o2.select("rect." + f.itemRectClassName).call(i.fill, f.activeColor);
            });
          }
          function w(e3) {
            e3.select("rect." + f.itemRectClassName).call(i.fill, f.hoverColor);
          }
          function T(e3, t3) {
            e3.select("rect." + f.itemRectClassName).call(i.fill, t3.bgcolor);
          }
          function M(e3, t3) {
            var r3 = t3._dims = { width1: 0, height1: 0, heights: [], widths: [], totalWidth: 0, totalHeight: 0, openWidth: 0, openHeight: 0, lx: 0, ly: 0 }, i2 = o.tester.selectAll("g." + f.dropdownButtonClassName).data(l.filterVisible(t3.buttons));
            i2.enter().append("g").classed(f.dropdownButtonClassName, true);
            var c2 = -1 !== ["up", "down"].indexOf(t3.direction);
            i2.each(function(a2, i3) {
              var l2 = n.select(this);
              l2.call(y, t3, a2, e3);
              var d3 = l2.select("." + f.itemTextClassName), h3 = d3.node() && o.bBox(d3.node()).width, p3 = Math.max(h3 + f.textPadX, f.minWidth), v3 = t3.font.size * u, g3 = s.lineCount(d3), m2 = Math.max(v3 * g3, f.minHeight) + f.textOffsetY;
              m2 = Math.ceil(m2), p3 = Math.ceil(p3), r3.widths[i3] = p3, r3.heights[i3] = m2, r3.height1 = Math.max(r3.height1, m2), r3.width1 = Math.max(r3.width1, p3), c2 ? (r3.totalWidth = Math.max(r3.totalWidth, p3), r3.openWidth = r3.totalWidth, r3.totalHeight += m2 + f.gapButton, r3.openHeight += m2 + f.gapButton) : (r3.totalWidth += p3 + f.gapButton, r3.openWidth += p3 + f.gapButton, r3.totalHeight = Math.max(r3.totalHeight, m2), r3.openHeight = r3.totalHeight);
            }), c2 ? r3.totalHeight -= f.gapButton : r3.totalWidth -= f.gapButton, r3.headerWidth = r3.width1 + f.arrowPadX, r3.headerHeight = r3.height1, "dropdown" === t3.type && (c2 ? (r3.width1 += f.arrowPadX, r3.totalHeight = r3.height1) : r3.totalWidth = r3.width1, r3.totalWidth += f.arrowPadX), i2.remove();
            var d2 = r3.totalWidth + t3.pad.l + t3.pad.r, h2 = r3.totalHeight + t3.pad.t + t3.pad.b, p2 = e3._fullLayout._size;
            r3.lx = p2.l + p2.w * t3.x, r3.ly = p2.t + p2.h * (1 - t3.y);
            var v2 = "left";
            l.isRightAnchor(t3) && (r3.lx -= d2, v2 = "right"), l.isCenterAnchor(t3) && (r3.lx -= d2 / 2, v2 = "center");
            var g2 = "top";
            l.isBottomAnchor(t3) && (r3.ly -= h2, g2 = "bottom"), l.isMiddleAnchor(t3) && (r3.ly -= h2 / 2, g2 = "middle"), r3.totalWidth = Math.ceil(r3.totalWidth), r3.totalHeight = Math.ceil(r3.totalHeight), r3.lx = Math.round(r3.lx), r3.ly = Math.round(r3.ly), a.autoMargin(e3, k(t3), { x: t3.x, y: t3.y, l: d2 * ({ right: 1, center: 0.5 }[v2] || 0), r: d2 * ({ left: 1, center: 0.5 }[v2] || 0), b: h2 * ({ top: 1, middle: 0.5 }[g2] || 0), t: h2 * ({ bottom: 1, middle: 0.5 }[g2] || 0) });
          }
          function k(e3) {
            return f.autoMarginIdRoot + e3._index;
          }
          function A(e3, t3, r3, n2) {
            n2 = n2 || {};
            var a2 = e3.select("." + f.itemRectClassName), i2 = e3.select("." + f.itemTextClassName), l2 = t3.borderwidth, c2 = r3.index, d2 = t3._dims;
            o.setTranslate(e3, l2 + r3.x, l2 + r3.y);
            var h2 = -1 !== ["up", "down"].indexOf(t3.direction), p2 = n2.height || (h2 ? d2.heights[c2] : d2.height1);
            a2.attr({ x: 0, y: 0, width: n2.width || (h2 ? d2.width1 : d2.widths[c2]), height: p2 });
            var v2 = t3.font.size * u, g2 = (s.lineCount(i2) - 1) * v2 / 2;
            s.positionText(i2, f.textOffsetX, p2 / 2 - g2 + f.textOffsetY), h2 ? r3.y += d2.heights[c2] + r3.yPad : r3.x += d2.widths[c2] + r3.xPad, r3.index++;
          }
          function L(e3, t3) {
            e3.attr(f.menuIndexAttrName, t3 || "-1").selectAll("g." + f.dropdownButtonClassName).remove();
          }
          e2.exports = function(e3) {
            var t3 = e3._fullLayout, r3 = l.filterVisible(t3[f.name]);
            function i2(t4) {
              a.autoMargin(e3, k(t4));
            }
            var o2 = t3._menulayer.selectAll("g." + f.containerClassName).data(r3.length > 0 ? [0] : []);
            if (o2.enter().append("g").classed(f.containerClassName, true).style("cursor", "pointer"), o2.exit().each(function() {
              n.select(this).selectAll("g." + f.headerGroupClassName).each(i2);
            }).remove(), 0 !== r3.length) {
              var s2 = o2.selectAll("g." + f.headerGroupClassName).data(r3, h);
              s2.enter().append("g").classed(f.headerGroupClassName, true);
              for (var c2 = l.ensureSingle(o2, "g", f.dropdownButtonGroupClassName, function(e4) {
                e4.style("pointer-events", "all");
              }), u2 = 0; u2 < r3.length; u2++) {
                var y2 = r3[u2];
                M(e3, y2);
              }
              var x2 = "updatemenus" + t3._uid, b2 = new d(e3, c2, x2);
              s2.enter().size() && (c2.node().parentNode.appendChild(c2.node()), c2.call(L)), s2.exit().each(function(e4) {
                c2.call(L), i2(e4);
              }).remove(), s2.each(function(t4) {
                var r4 = n.select(this), i3 = "dropdown" === t4.type ? c2 : null;
                a.manageCommandObserver(e3, t4, t4.buttons, function(n2) {
                  v(e3, t4, t4.buttons[n2.index], r4, i3, b2, n2.index, true);
                }), "dropdown" === t4.type ? (g(e3, r4, c2, b2, t4), p(c2, t4) && m(e3, r4, c2, b2, t4)) : m(e3, r4, null, null, t4);
              });
            }
          };
        }, 6230: function(e2, t2, r2) {
          var n = r2(1559);
          e2.exports = { moduleType: "component", name: n.name, layoutAttributes: r2(5389), supplyLayoutDefaults: r2(2746), draw: r2(974) };
        }, 1736: function(e2, t2, r2) {
          e2.exports = l;
          var n = r2(5568), a = r2(8766), i = r2(2203), o = r2(4809);
          function l(e3, t3, r3) {
            this.gd = e3, this.container = t3, this.id = r3, this.position = null, this.translateX = null, this.translateY = null, this.hbar = null, this.vbar = null, this.bg = this.container.selectAll("rect.scrollbox-bg").data([0]), this.bg.exit().on(".drag", null).on("wheel", null).remove(), this.bg.enter().append("rect").classed("scrollbox-bg", true).style("pointer-events", "all").attr({ opacity: 0, x: 0, y: 0, width: 0, height: 0 });
          }
          l.barWidth = 2, l.barLength = 20, l.barRadius = 2, l.barPad = 1, l.barColor = "#808BA4", l.prototype.enable = function(e3, t3, r3) {
            var o2 = this.gd._fullLayout, s = o2.width, c = o2.height;
            this.position = e3;
            var u, f, d, h, p = this.position.l, v = this.position.w, g = this.position.t, m = this.position.h, y = this.position.direction, x = "down" === y, b = "left" === y, _ = "up" === y, w = v, T = m;
            x || b || "right" === y || _ || (this.position.direction = "down", x = true), x || _ ? (f = (u = p) + w, x ? (d = g, T = (h = Math.min(d + T, c)) - d) : T = (h = g + T) - (d = Math.max(h - T, 0))) : (h = (d = g) + T, b ? w = (f = p + w) - (u = Math.max(f - w, 0)) : (u = p, w = (f = Math.min(u + w, s)) - u)), this._box = { l: u, t: d, w, h: T };
            var M = v > w, k = l.barLength + 2 * l.barPad, A = l.barWidth + 2 * l.barPad, L = p, S = g + m;
            S + A > c && (S = c - A);
            var C = this.container.selectAll("rect.scrollbar-horizontal").data(M ? [0] : []);
            C.exit().on(".drag", null).remove(), C.enter().append("rect").classed("scrollbar-horizontal", true).call(a.fill, l.barColor), M ? (this.hbar = C.attr({ rx: l.barRadius, ry: l.barRadius, x: L, y: S, width: k, height: A }), this._hbarXMin = L + k / 2, this._hbarTranslateMax = w - k) : (delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax);
            var O = m > T, D = l.barWidth + 2 * l.barPad, P = l.barLength + 2 * l.barPad, z = p + v, I = g;
            z + D > s && (z = s - D);
            var E = this.container.selectAll("rect.scrollbar-vertical").data(O ? [0] : []);
            E.exit().on(".drag", null).remove(), E.enter().append("rect").classed("scrollbar-vertical", true).call(a.fill, l.barColor), O ? (this.vbar = E.attr({ rx: l.barRadius, ry: l.barRadius, x: z, y: I, width: D, height: P }), this._vbarYMin = I + P / 2, this._vbarTranslateMax = T - P) : (delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax);
            var R = this.id, N = u - 0.5, F = O ? f + D + 0.5 : f + 0.5, H = d - 0.5, B = M ? h + A + 0.5 : h + 0.5, j = o2._topdefs.selectAll("#" + R).data(M || O ? [0] : []);
            if (j.exit().remove(), j.enter().append("clipPath").attr("id", R).append("rect"), M || O ? (this._clipRect = j.select("rect").attr({ x: Math.floor(N), y: Math.floor(H), width: Math.ceil(F) - Math.floor(N), height: Math.ceil(B) - Math.floor(H) }), this.container.call(i.setClipUrl, R, this.gd), this.bg.attr({ x: p, y: g, width: v, height: m })) : (this.bg.attr({ width: 0, height: 0 }), this.container.on("wheel", null).on(".drag", null).call(i.setClipUrl, null), delete this._clipRect), M || O) {
              var Y = n.behavior.drag().on("dragstart", function() {
                n.event.sourceEvent.preventDefault();
              }).on("drag", this._onBoxDrag.bind(this));
              this.container.on("wheel", null).on("wheel", this._onBoxWheel.bind(this)).on(".drag", null).call(Y);
              var V = n.behavior.drag().on("dragstart", function() {
                n.event.sourceEvent.preventDefault(), n.event.sourceEvent.stopPropagation();
              }).on("drag", this._onBarDrag.bind(this));
              M && this.hbar.on(".drag", null).call(V), O && this.vbar.on(".drag", null).call(V);
            }
            this.setTranslate(t3, r3);
          }, l.prototype.disable = function() {
            (this.hbar || this.vbar) && (this.bg.attr({ width: 0, height: 0 }), this.container.on("wheel", null).on(".drag", null).call(i.setClipUrl, null), delete this._clipRect), this.hbar && (this.hbar.on(".drag", null), this.hbar.remove(), delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax), this.vbar && (this.vbar.on(".drag", null), this.vbar.remove(), delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax);
          }, l.prototype._onBoxDrag = function() {
            var e3 = this.translateX, t3 = this.translateY;
            this.hbar && (e3 -= n.event.dx), this.vbar && (t3 -= n.event.dy), this.setTranslate(e3, t3);
          }, l.prototype._onBoxWheel = function() {
            var e3 = this.translateX, t3 = this.translateY;
            this.hbar && (e3 += n.event.deltaY), this.vbar && (t3 += n.event.deltaY), this.setTranslate(e3, t3);
          }, l.prototype._onBarDrag = function() {
            var e3 = this.translateX, t3 = this.translateY;
            if (this.hbar) {
              var r3 = e3 + this._hbarXMin, a2 = r3 + this._hbarTranslateMax;
              e3 = (o.constrain(n.event.x, r3, a2) - r3) / (a2 - r3) * (this.position.w - this._box.w);
            }
            if (this.vbar) {
              var i2 = t3 + this._vbarYMin, l2 = i2 + this._vbarTranslateMax;
              t3 = (o.constrain(n.event.y, i2, l2) - i2) / (l2 - i2) * (this.position.h - this._box.h);
            }
            this.setTranslate(e3, t3);
          }, l.prototype.setTranslate = function(e3, t3) {
            var r3 = this.position.w - this._box.w, n2 = this.position.h - this._box.h;
            if (e3 = o.constrain(e3 || 0, 0, r3), t3 = o.constrain(t3 || 0, 0, n2), this.translateX = e3, this.translateY = t3, this.container.call(i.setTranslate, this._box.l - this.position.l - e3, this._box.t - this.position.t - t3), this._clipRect && this._clipRect.attr({ x: Math.floor(this.position.l + e3 - 0.5), y: Math.floor(this.position.t + t3 - 0.5) }), this.hbar) {
              var a2 = e3 / r3;
              this.hbar.call(i.setTranslate, e3 + a2 * this._hbarTranslateMax, t3);
            }
            if (this.vbar) {
              var l2 = t3 / n2;
              this.vbar.call(i.setTranslate, e3, t3 + l2 * this._vbarTranslateMax);
            }
          };
        }, 4530: function(e2) {
          e2.exports = { FROM_BL: { left: 0, center: 0.5, right: 1, bottom: 0, middle: 0.5, top: 1 }, FROM_TL: { left: 0, center: 0.5, right: 1, bottom: 1, middle: 0.5, top: 0 }, FROM_BR: { left: 1, center: 0.5, right: 0, bottom: 0, middle: 0.5, top: 1 }, LINE_SPACING: 1.3, CAP_SHIFT: 0.7, MID_SHIFT: 0.35, OPPOSITE_SIDE: { left: "right", right: "left", top: "bottom", bottom: "top" } };
        }, 5081: function(e2) {
          e2.exports = { axisRefDescription: function(e3, t2, r2) {
            return ["If set to a", e3, "axis id (e.g. *" + e3 + "* or", "*" + e3 + "2*), the `" + e3 + "` position refers to a", e3, "coordinate. If set to *paper*, the `" + e3 + "`", "position refers to the distance from the", t2, "of the plotting", "area in normalized coordinates where *0* (*1*) corresponds to the", t2, "(" + r2 + "). If set to a", e3, "axis ID followed by", "*domain* (separated by a space), the position behaves like for", "*paper*, but refers to the distance in fractions of the domain", "length from the", t2, "of the domain of that axis: e.g.,", "*" + e3 + "2 domain* refers to the domain of the second", e3, " axis and a", e3, "position of 0.5 refers to the", "point between the", t2, "and the", r2, "of the domain of the", "second", e3, "axis."].join(" ");
          } };
        }, 7296: function(e2) {
          e2.exports = { FORMAT_LINK: "https://github.com/d3/d3-format/tree/v1.4.5#d3-format", DATE_FORMAT_LINK: "https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format" };
        }, 726: function(e2) {
          e2.exports = { COMPARISON_OPS: ["=", "!=", "<", ">=", ">", "<="], COMPARISON_OPS2: ["=", "<", ">=", ">", "<="], INTERVAL_OPS: ["[]", "()", "[)", "(]", "][", ")(", "](", ")["], SET_OPS: ["{}", "}{"], CONSTRAINT_REDUCTION: { "=": "=", "<": "<", "<=": "<", ">": ">", ">=": ">", "[]": "[]", "()": "[]", "[)": "[]", "(]": "[]", "][": "][", ")(": "][", "](": "][", ")[": "][" } };
        }, 438: function(e2) {
          e2.exports = { SHOW_PLACEHOLDER: 100, HIDE_PLACEHOLDER: 1e3, DESELECTDIM: 0.2 };
        }, 3821: function(e2) {
          e2.exports = { BADNUM: void 0, FP_SAFE: 1e-4 * Number.MAX_VALUE, ONEMAXYEAR: 316224e5, ONEAVGYEAR: 315576e5, ONEMINYEAR: 31536e6, ONEMAXQUARTER: 79488e5, ONEAVGQUARTER: 78894e5, ONEMINQUARTER: 76896e5, ONEMAXMONTH: 26784e5, ONEAVGMONTH: 26298e5, ONEMINMONTH: 24192e5, ONEWEEK: 6048e5, ONEDAY: 864e5, ONEHOUR: 36e5, ONEMIN: 6e4, ONESEC: 1e3, ONEMILLI: 1, ONEMICROSEC: 1e-3, EPOCHJD: 24405875e-1, ALMOST_EQUAL: 0.999999, LOG_CLIP: 10, MINUS_SIGN: "−" };
        }, 2972: function(e2, t2) {
          t2.xmlns = "http://www.w3.org/2000/xmlns/", t2.svg = "http://www.w3.org/2000/svg", t2.xlink = "http://www.w3.org/1999/xlink", t2.svgAttrs = { xmlns: t2.svg, "xmlns:xlink": t2.xlink };
        }, 7430: function(e2, t2, r2) {
          t2.version = r2(9697).version, r2(1116), r2(6713);
          for (var n = r2(3626), a = t2.register = n.register, i = r2(742), o = Object.keys(i), l = 0; l < o.length; l++) {
            var s = o[l];
            "_" !== s.charAt(0) && (t2[s] = i[s]), a({ moduleType: "apiMethod", name: s, fn: i[s] });
          }
          a(r2(9693)), a([r2(3599), r2(3348), r2(4844), r2(3701), r2(5553), r2(6230), r2(5359), r2(5429), r2(4453), r2(3595), r2(7901), r2(8856), r2(6919), r2(2494), r2(2141), r2(5433)]), a([r2(227), r2(4611)]), window.PlotlyLocales && Array.isArray(window.PlotlyLocales) && (a(window.PlotlyLocales), delete window.PlotlyLocales), t2.Icons = r2(5188);
          var c = r2(2141), u = r2(4122);
          t2.Plots = { resize: u.resize, graphJson: u.graphJson, sendDataToCloud: u.sendDataToCloud }, t2.Fx = { hover: c.hover, unhover: c.unhover, loneHover: c.loneHover, loneUnhover: c.loneUnhover }, t2.Snapshot = r2(6170), t2.PlotSchema = r2(7297);
        }, 5188: function(e2) {
          e2.exports = { undo: { width: 857.1, height: 1e3, path: "m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z", transform: "matrix(1 0 0 -1 0 850)" }, home: { width: 928.6, height: 1e3, path: "m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z", transform: "matrix(1 0 0 -1 0 850)" }, "camera-retro": { width: 1e3, height: 1e3, path: "m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z", transform: "matrix(1 0 0 -1 0 850)" }, zoombox: { width: 1e3, height: 1e3, path: "m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z", transform: "matrix(1 0 0 -1 0 850)" }, pan: { width: 1e3, height: 1e3, path: "m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z", transform: "matrix(1 0 0 -1 0 850)" }, zoom_plus: { width: 875, height: 1e3, path: "m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z", transform: "matrix(1 0 0 -1 0 850)" }, zoom_minus: { width: 875, height: 1e3, path: "m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z", transform: "matrix(1 0 0 -1 0 850)" }, autoscale: { width: 1e3, height: 1e3, path: "m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z", transform: "matrix(1 0 0 -1 0 850)" }, tooltip_basic: { width: 1500, height: 1e3, path: "m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z", transform: "matrix(1 0 0 -1 0 850)" }, tooltip_compare: { width: 1125, height: 1e3, path: "m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z", transform: "matrix(1 0 0 -1 0 850)" }, plotlylogo: { width: 1542, height: 1e3, path: "m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z", transform: "matrix(1 0 0 -1 0 850)" }, "z-axis": { width: 1e3, height: 1e3, path: "m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z", transform: "matrix(1 0 0 -1 0 850)" }, "3d_rotate": { width: 1e3, height: 1e3, path: "m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z", transform: "matrix(1 0 0 -1 0 850)" }, camera: { width: 1e3, height: 1e3, path: "m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z", transform: "matrix(1 0 0 -1 0 850)" }, movie: { width: 1e3, height: 1e3, path: "m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z", transform: "matrix(1 0 0 -1 0 850)" }, question: { width: 857.1, height: 1e3, path: "m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z", transform: "matrix(1 0 0 -1 0 850)" }, disk: { width: 857.1, height: 1e3, path: "m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z", transform: "matrix(1 0 0 -1 0 850)" }, drawopenpath: { width: 70, height: 70, path: "M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z", transform: "matrix(1 0 0 1 -15 -15)" }, drawclosedpath: { width: 90, height: 90, path: "M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z", transform: "matrix(1 0 0 1 -5 -5)" }, lasso: { width: 1031, height: 1e3, path: "m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z", transform: "matrix(1 0 0 -1 0 850)" }, selectbox: { width: 1e3, height: 1e3, path: "m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z", transform: "matrix(1 0 0 -1 0 850)" }, drawline: { width: 70, height: 70, path: "M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z", transform: "matrix(1 0 0 1 -15 -15)" }, drawrect: { width: 80, height: 80, path: "M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z", transform: "matrix(1 0 0 1 -10 -10)" }, drawcircle: { width: 80, height: 80, path: "M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z", transform: "matrix(1 0 0 1 -10 -10)" }, eraseshape: { width: 80, height: 80, path: "M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z", transform: "matrix(1 0 0 1 -10 -10)" }, spikeline: { width: 1e3, height: 1e3, path: "M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z", transform: "matrix(1.5 0 0 -1.5 0 850)" }, pencil: { width: 1792, height: 1792, path: "M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z", transform: "matrix(1 0 0 1 0 1)" }, newplotlylogo: { name: "newplotlylogo", svg: ["<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 132'>", "<defs>", " <style>", "  .cls-0{fill:#000;}", "  .cls-1{fill:#FFF;}", "  .cls-2{fill:#F26;}", "  .cls-3{fill:#D69;}", "  .cls-4{fill:#BAC;}", "  .cls-5{fill:#9EF;}", " </style>", "</defs>", " <title>plotly-logomark</title>", " <g id='symbol'>", "  <rect class='cls-0' x='0' y='0' width='132' height='132' rx='18' ry='18'/>", "  <circle class='cls-5' cx='102' cy='30' r='6'/>", "  <circle class='cls-4' cx='78' cy='30' r='6'/>", "  <circle class='cls-4' cx='78' cy='54' r='6'/>", "  <circle class='cls-3' cx='54' cy='30' r='6'/>", "  <circle class='cls-2' cx='30' cy='30' r='6'/>", "  <circle class='cls-2' cx='30' cy='54' r='6'/>", "  <path class='cls-1' d='M30,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,30,72Z'/>", "  <path class='cls-1' d='M78,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,78,72Z'/>", "  <path class='cls-1' d='M54,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,54,48Z'/>", "  <path class='cls-1' d='M102,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,102,48Z'/>", " </g>", "</svg>"].join("") } };
        }, 2546: function(e2, t2) {
          t2.isLeftAnchor = function(e3) {
            return "left" === e3.xanchor || "auto" === e3.xanchor && e3.x <= 1 / 3;
          }, t2.isCenterAnchor = function(e3) {
            return "center" === e3.xanchor || "auto" === e3.xanchor && e3.x > 1 / 3 && e3.x < 2 / 3;
          }, t2.isRightAnchor = function(e3) {
            return "right" === e3.xanchor || "auto" === e3.xanchor && e3.x >= 2 / 3;
          }, t2.isTopAnchor = function(e3) {
            return "top" === e3.yanchor || "auto" === e3.yanchor && e3.y >= 2 / 3;
          }, t2.isMiddleAnchor = function(e3) {
            return "middle" === e3.yanchor || "auto" === e3.yanchor && e3.y > 1 / 3 && e3.y < 2 / 3;
          }, t2.isBottomAnchor = function(e3) {
            return "bottom" === e3.yanchor || "auto" === e3.yanchor && e3.y <= 1 / 3;
          };
        }, 4313: function(e2, t2, r2) {
          var n = r2(8953), a = n.mod, i = n.modHalf, o = Math.PI, l = 2 * o;
          function s(e3) {
            return Math.abs(e3[1] - e3[0]) > l - 1e-14;
          }
          function c(e3, t3) {
            return i(t3 - e3, l);
          }
          function u(e3, t3) {
            if (s(t3)) return true;
            var r3, n2;
            t3[0] < t3[1] ? (r3 = t3[0], n2 = t3[1]) : (r3 = t3[1], n2 = t3[0]), (r3 = a(r3, l)) > (n2 = a(n2, l)) && (n2 += l);
            var i2 = a(e3, l), o2 = i2 + l;
            return i2 >= r3 && i2 <= n2 || o2 >= r3 && o2 <= n2;
          }
          function f(e3, t3, r3, n2, a2, i2, c2) {
            a2 = a2 || 0, i2 = i2 || 0;
            var u2, f2, d, h, p, v = s([r3, n2]);
            function g(e4, t4) {
              return [e4 * Math.cos(t4) + a2, i2 - e4 * Math.sin(t4)];
            }
            v ? (u2 = 0, f2 = o, d = l) : r3 < n2 ? (u2 = r3, d = n2) : (u2 = n2, d = r3), e3 < t3 ? (h = e3, p = t3) : (h = t3, p = e3);
            var m, y = Math.abs(d - u2) <= o ? 0 : 1;
            function x(e4, t4, r4) {
              return "A" + [e4, e4] + " " + [0, y, r4] + " " + g(e4, t4);
            }
            return v ? m = null === h ? "M" + g(p, u2) + x(p, f2, 0) + x(p, d, 0) + "Z" : "M" + g(h, u2) + x(h, f2, 0) + x(h, d, 0) + "ZM" + g(p, u2) + x(p, f2, 1) + x(p, d, 1) + "Z" : null === h ? (m = "M" + g(p, u2) + x(p, d, 0), c2 && (m += "L0,0Z")) : m = "M" + g(h, u2) + "L" + g(p, u2) + x(p, d, 0) + "L" + g(h, d) + x(h, u2, 1) + "Z", m;
          }
          e2.exports = { deg2rad: function(e3) {
            return e3 / 180 * o;
          }, rad2deg: function(e3) {
            return e3 / o * 180;
          }, angleDelta: c, angleDist: function(e3, t3) {
            return Math.abs(c(e3, t3));
          }, isFullCircle: s, isAngleInsideSector: u, isPtInsideSector: function(e3, t3, r3, n2) {
            return !!u(t3, n2) && (r3[0] < r3[1] ? (a2 = r3[0], i2 = r3[1]) : (a2 = r3[1], i2 = r3[0]), e3 >= a2 && e3 <= i2);
            var a2, i2;
          }, pathArc: function(e3, t3, r3, n2, a2) {
            return f(null, e3, t3, r3, n2, a2, 0);
          }, pathSector: function(e3, t3, r3, n2, a2) {
            return f(null, e3, t3, r3, n2, a2, 1);
          }, pathAnnulus: function(e3, t3, r3, n2, a2, i2) {
            return f(e3, t3, r3, n2, a2, i2, 1);
          } };
        }, 7800: function(e2, t2, r2) {
          var n = r2(3229).decode, a = r2(6174), i = Array.isArray, o = ArrayBuffer, l = DataView;
          function s(e3) {
            return o.isView(e3) && !(e3 instanceof l);
          }
          function c(e3) {
            return i(e3) || s(e3);
          }
          t2.isTypedArray = s, t2.isArrayOrTypedArray = c, t2.isArray1D = function(e3) {
            return !c(e3[0]);
          }, t2.ensureArray = function(e3, t3) {
            return i(e3) || (e3 = []), e3.length = t3, e3;
          };
          var u = { u1c: "undefined" == typeof Uint8ClampedArray ? void 0 : Uint8ClampedArray, i1: "undefined" == typeof Int8Array ? void 0 : Int8Array, u1: "undefined" == typeof Uint8Array ? void 0 : Uint8Array, i2: "undefined" == typeof Int16Array ? void 0 : Int16Array, u2: "undefined" == typeof Uint16Array ? void 0 : Uint16Array, i4: "undefined" == typeof Int32Array ? void 0 : Int32Array, u4: "undefined" == typeof Uint32Array ? void 0 : Uint32Array, f4: "undefined" == typeof Float32Array ? void 0 : Float32Array, f8: "undefined" == typeof Float64Array ? void 0 : Float64Array };
          function f(e3) {
            return e3.constructor === ArrayBuffer;
          }
          function d(e3, t3, r3) {
            if (c(e3)) {
              if (c(e3[0])) {
                for (var n2 = r3, a2 = 0; a2 < e3.length; a2++) n2 = t3(n2, e3[a2].length);
                return n2;
              }
              return e3.length;
            }
            return 0;
          }
          u.uint8c = u.u1c, u.uint8 = u.u1, u.int8 = u.i1, u.uint16 = u.u2, u.int16 = u.i2, u.uint32 = u.u4, u.int32 = u.i4, u.float32 = u.f4, u.float64 = u.f8, t2.isArrayBuffer = f, t2.decodeTypedArraySpec = function(e3) {
            var t3 = [], r3 = function(e4) {
              return { bdata: e4.bdata, dtype: e4.dtype, shape: e4.shape };
            }(e3), a2 = r3.dtype, i2 = u[a2];
            if (!i2) throw new Error('Error in dtype: "' + a2 + '"');
            var o2 = i2.BYTES_PER_ELEMENT, l2 = r3.bdata;
            f(l2) || (l2 = n(l2));
            var s2 = void 0 === r3.shape ? [l2.byteLength / o2] : ("" + r3.shape).split(",");
            s2.reverse();
            var c2, d2, h = s2.length, p = +s2[0], v = o2 * p, g = 0;
            if (1 === h) t3 = new i2(l2);
            else if (2 === h) for (c2 = +s2[1], d2 = 0; d2 < c2; d2++) t3[d2] = new i2(l2, g, p), g += v;
            else {
              if (3 !== h) throw new Error("ndim: " + h + 'is not supported with the shape:"' + r3.shape + '"');
              c2 = +s2[1];
              for (var m = +s2[2], y = 0; y < m; y++) for (t3[y] = [], d2 = 0; d2 < c2; d2++) t3[y][d2] = new i2(l2, g, p), g += v;
            }
            return t3.bdata = r3.bdata, t3.dtype = r3.dtype, t3.shape = s2.reverse().join(","), e3._inputArray = t3, t3;
          }, t2.isTypedArraySpec = function(e3) {
            return a(e3) && e3.hasOwnProperty("dtype") && "string" == typeof e3.dtype && e3.hasOwnProperty("bdata") && ("string" == typeof e3.bdata || f(e3.bdata)) && (void 0 === e3.shape || e3.hasOwnProperty("shape") && ("string" == typeof e3.shape || "number" == typeof e3.shape));
          }, t2.concat = function() {
            var e3, t3, r3, n2, a2, o2, l2, s2, c2 = [], u2 = true, f2 = 0;
            for (r3 = 0; r3 < arguments.length; r3++) (o2 = (n2 = arguments[r3]).length) && (t3 ? c2.push(n2) : (t3 = n2, a2 = o2), i(n2) ? e3 = false : (u2 = false, f2 ? e3 !== n2.constructor && (e3 = false) : e3 = n2.constructor), f2 += o2);
            if (!f2) return [];
            if (!c2.length) return t3;
            if (u2) return t3.concat.apply(t3, c2);
            if (e3) {
              for ((l2 = new e3(f2)).set(t3), r3 = 0; r3 < c2.length; r3++) n2 = c2[r3], l2.set(n2, a2), a2 += n2.length;
              return l2;
            }
            for (l2 = new Array(f2), s2 = 0; s2 < t3.length; s2++) l2[s2] = t3[s2];
            for (r3 = 0; r3 < c2.length; r3++) {
              for (n2 = c2[r3], s2 = 0; s2 < n2.length; s2++) l2[a2 + s2] = n2[s2];
              a2 += s2;
            }
            return l2;
          }, t2.maxRowLength = function(e3) {
            return d(e3, Math.max, 0);
          }, t2.minRowLength = function(e3) {
            return d(e3, Math.min, 1 / 0);
          };
        }, 4498: function(e2, t2, r2) {
          var n = r2(721), a = r2(3821).BADNUM, i = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;
          e2.exports = function(e3) {
            return "string" == typeof e3 && (e3 = e3.replace(i, "")), n(e3) ? Number(e3) : a;
          };
        }, 4823: function(e2) {
          e2.exports = function(e3) {
            var t2 = e3._fullLayout;
            t2._glcanvas && t2._glcanvas.size() && t2._glcanvas.each(function(e4) {
              e4.regl && e4.regl.clear({ color: true, depth: true });
            });
          };
        }, 3493: function(e2) {
          e2.exports = function(e3) {
            e3._responsiveChartHandler && (window.removeEventListener("resize", e3._responsiveChartHandler), delete e3._responsiveChartHandler);
          };
        }, 4220: function(e2, t2, r2) {
          var n = r2(721), a = r2(5657), i = r2(3049).extendFlat, o = r2(9829), l = r2(9017), s = r2(8766), c = r2(438).DESELECTDIM, u = r2(5632), f = r2(694).counter, d = r2(8953).modHalf, h = r2(7800).isArrayOrTypedArray, p = r2(7800).isTypedArraySpec, v = r2(7800).decodeTypedArraySpec;
          function g(e3, r3) {
            var n2 = t2.valObjectMeta[r3.valType];
            if (r3.arrayOk && h(e3)) return true;
            if (n2.validateFunction) return n2.validateFunction(e3, r3);
            var a2 = {}, i2 = a2, o2 = { set: function(e4) {
              i2 = e4;
            } };
            return n2.coerceFunction(e3, o2, a2, r3), i2 !== a2;
          }
          t2.valObjectMeta = { data_array: { coerceFunction: function(e3, t3, r3) {
            t3.set(h(e3) ? e3 : p(e3) ? v(e3) : r3);
          } }, enumerated: { coerceFunction: function(e3, t3, r3, n2) {
            n2.coerceNumber && (e3 = +e3), -1 === n2.values.indexOf(e3) ? t3.set(r3) : t3.set(e3);
          }, validateFunction: function(e3, t3) {
            t3.coerceNumber && (e3 = +e3);
            for (var r3 = t3.values, n2 = 0; n2 < r3.length; n2++) {
              var a2 = String(r3[n2]);
              if ("/" === a2.charAt(0) && "/" === a2.charAt(a2.length - 1)) {
                if (new RegExp(a2.substr(1, a2.length - 2)).test(e3)) return true;
              } else if (e3 === r3[n2]) return true;
            }
            return false;
          } }, boolean: { coerceFunction: function(e3, t3, r3) {
            true === e3 || false === e3 ? t3.set(e3) : t3.set(r3);
          } }, number: { coerceFunction: function(e3, t3, r3, a2) {
            p(e3) && (e3 = v(e3)), !n(e3) || void 0 !== a2.min && e3 < a2.min || void 0 !== a2.max && e3 > a2.max ? t3.set(r3) : t3.set(+e3);
          } }, integer: { coerceFunction: function(e3, t3, r3, a2) {
            -1 === (a2.extras || []).indexOf(e3) ? (p(e3) && (e3 = v(e3)), e3 % 1 || !n(e3) || void 0 !== a2.min && e3 < a2.min || void 0 !== a2.max && e3 > a2.max ? t3.set(r3) : t3.set(+e3)) : t3.set(e3);
          } }, string: { coerceFunction: function(e3, t3, r3, n2) {
            if ("string" != typeof e3) {
              var a2 = "number" == typeof e3;
              true !== n2.strict && a2 ? t3.set(String(e3)) : t3.set(r3);
            } else n2.noBlank && !e3 ? t3.set(r3) : t3.set(e3);
          } }, color: { coerceFunction: function(e3, t3, r3) {
            p(e3) && (e3 = v(e3)), a(e3).isValid() ? t3.set(e3) : t3.set(r3);
          } }, colorlist: { coerceFunction: function(e3, t3, r3) {
            Array.isArray(e3) && e3.length && e3.every(function(e4) {
              return a(e4).isValid();
            }) ? t3.set(e3) : t3.set(r3);
          } }, colorscale: { coerceFunction: function(e3, t3, r3) {
            t3.set(l.get(e3, r3));
          } }, angle: { coerceFunction: function(e3, t3, r3) {
            p(e3) && (e3 = v(e3)), "auto" === e3 ? t3.set("auto") : n(e3) ? t3.set(d(+e3, 360)) : t3.set(r3);
          } }, subplotid: { coerceFunction: function(e3, t3, r3, n2) {
            var a2 = n2.regex || f(r3);
            "string" == typeof e3 && a2.test(e3) ? t3.set(e3) : t3.set(r3);
          }, validateFunction: function(e3, t3) {
            var r3 = t3.dflt;
            return e3 === r3 || "string" == typeof e3 && !!f(r3).test(e3);
          } }, flaglist: { coerceFunction: function(e3, t3, r3, n2) {
            if (-1 === (n2.extras || []).indexOf(e3)) if ("string" == typeof e3) {
              for (var a2 = e3.split("+"), i2 = 0; i2 < a2.length; ) {
                var o2 = a2[i2];
                -1 === n2.flags.indexOf(o2) || a2.indexOf(o2) < i2 ? a2.splice(i2, 1) : i2++;
              }
              a2.length ? t3.set(a2.join("+")) : t3.set(r3);
            } else t3.set(r3);
            else t3.set(e3);
          } }, any: { coerceFunction: function(e3, t3, r3) {
            void 0 === e3 ? t3.set(r3) : t3.set(p(e3) ? v(e3) : e3);
          } }, info_array: { coerceFunction: function(e3, r3, n2, a2) {
            function i2(e4, r4, n3) {
              var a3, i3 = { set: function(e5) {
                a3 = e5;
              } };
              return void 0 === n3 && (n3 = r4.dflt), t2.valObjectMeta[r4.valType].coerceFunction(e4, i3, n3, r4), a3;
            }
            if (p(e3) && (e3 = v(e3)), h(e3)) {
              var o2, l2, s2, c2, u2, f2, d2 = 2 === a2.dimensions || "1-2" === a2.dimensions && Array.isArray(e3) && h(e3[0]), g2 = a2.items, m = [], y = Array.isArray(g2), x = y && d2 && h(g2[0]), b = d2 && y && !x, _ = y && !b ? g2.length : e3.length;
              if (n2 = Array.isArray(n2) ? n2 : [], d2) for (o2 = 0; o2 < _; o2++) for (m[o2] = [], s2 = h(e3[o2]) ? e3[o2] : [], u2 = b ? g2.length : y ? g2[o2].length : s2.length, l2 = 0; l2 < u2; l2++) c2 = b ? g2[l2] : y ? g2[o2][l2] : g2, void 0 !== (f2 = i2(s2[l2], c2, (n2[o2] || [])[l2])) && (m[o2][l2] = f2);
              else for (o2 = 0; o2 < _; o2++) void 0 !== (f2 = i2(e3[o2], y ? g2[o2] : g2, n2[o2])) && (m[o2] = f2);
              r3.set(m);
            } else r3.set(n2);
          }, validateFunction: function(e3, t3) {
            if (!h(e3)) return false;
            var r3 = t3.items, n2 = Array.isArray(r3), a2 = 2 === t3.dimensions;
            if (!t3.freeLength && e3.length !== r3.length) return false;
            for (var i2 = 0; i2 < e3.length; i2++) if (a2) {
              if (!h(e3[i2]) || !t3.freeLength && e3[i2].length !== r3[i2].length) return false;
              for (var o2 = 0; o2 < e3[i2].length; o2++) if (!g(e3[i2][o2], n2 ? r3[i2][o2] : r3)) return false;
            } else if (!g(e3[i2], n2 ? r3[i2] : r3)) return false;
            return true;
          } } }, t2.coerce = function(e3, r3, n2, a2, i2) {
            var o2 = u(n2, a2).get(), l2 = u(e3, a2), s2 = u(r3, a2), c2 = l2.get(), f2 = r3._template;
            if (void 0 === c2 && f2 && (c2 = u(f2, a2).get(), f2 = 0), void 0 === i2 && (i2 = o2.dflt), o2.arrayOk) {
              if (h(c2)) return s2.set(c2), c2;
              if (p(c2)) return c2 = v(c2), s2.set(c2), c2;
            }
            var d2 = t2.valObjectMeta[o2.valType].coerceFunction;
            d2(c2, s2, i2, o2);
            var m = s2.get();
            return f2 && m === i2 && !g(c2, o2) && (d2(c2 = u(f2, a2).get(), s2, i2, o2), m = s2.get()), m;
          }, t2.coerce2 = function(e3, r3, n2, a2, i2) {
            var o2 = u(e3, a2), l2 = t2.coerce(e3, r3, n2, a2, i2);
            return null != o2.get() && l2;
          }, t2.coerceFont = function(e3, t3, r3, n2) {
            n2 || (n2 = {}), r3 = i({}, r3);
            var a2 = { family: e3(t3 + ".family", (r3 = i(r3, n2.overrideDflt || {})).family), size: e3(t3 + ".size", r3.size), color: e3(t3 + ".color", r3.color), weight: e3(t3 + ".weight", r3.weight), style: e3(t3 + ".style", r3.style) };
            if (n2.noFontVariant || (a2.variant = e3(t3 + ".variant", r3.variant)), n2.noFontLineposition || (a2.lineposition = e3(t3 + ".lineposition", r3.lineposition)), n2.noFontTextcase || (a2.textcase = e3(t3 + ".textcase", r3.textcase)), !n2.noFontShadow) {
              var o2 = r3.shadow;
              "none" === o2 && n2.autoShadowDflt && (o2 = "auto"), a2.shadow = e3(t3 + ".shadow", o2);
            }
            return a2;
          }, t2.coercePattern = function(e3, t3, r3, n2) {
            if (e3(t3 + ".shape")) {
              e3(t3 + ".solidity"), e3(t3 + ".size");
              var a2 = "overlay" === e3(t3 + ".fillmode");
              if (!n2) {
                var i2 = e3(t3 + ".bgcolor", a2 ? r3 : void 0);
                e3(t3 + ".fgcolor", a2 ? s.contrast(i2) : r3);
              }
              e3(t3 + ".fgopacity", a2 ? 0.5 : 1);
            }
          }, t2.coerceHoverinfo = function(e3, r3, n2) {
            var a2, i2 = r3._module.attributes, l2 = i2.hoverinfo ? i2 : o, s2 = l2.hoverinfo;
            if (1 === n2._dataLength) {
              var c2 = "all" === s2.dflt ? s2.flags.slice() : s2.dflt.split("+");
              c2.splice(c2.indexOf("name"), 1), a2 = c2.join("+");
            }
            return t2.coerce(e3, r3, l2, "hoverinfo", a2);
          }, t2.coerceSelectionMarkerOpacity = function(e3, t3) {
            if (e3.marker) {
              var r3, n2, a2 = e3.marker.opacity;
              void 0 !== a2 && (h(a2) || e3.selected || e3.unselected || (r3 = a2, n2 = c * a2), t3("selected.marker.opacity", r3), t3("unselected.marker.opacity", n2));
            }
          }, t2.validate = g;
        }, 2596: function(e2, t2, r2) {
          var n, a, i = r2(2696).DC, o = r2(721), l = r2(8636), s = r2(8953).mod, c = r2(3821), u = c.BADNUM, f = c.ONEDAY, d = c.ONEHOUR, h = c.ONEMIN, p = c.ONESEC, v = c.EPOCHJD, g = r2(3626), m = r2(2696).aL, y = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, x = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, b = (/* @__PURE__ */ new Date()).getFullYear() - 70;
          function _(e3) {
            return e3 && g.componentsRegistry.calendars && "string" == typeof e3 && "gregorian" !== e3;
          }
          function w(e3, t3) {
            return String(e3 + Math.pow(10, t3)).substr(1);
          }
          t2.dateTick0 = function(e3, r3) {
            var n2 = function(e4, t3) {
              return _(e4) ? t3 ? g.getComponentMethod("calendars", "CANONICAL_SUNDAY")[e4] : g.getComponentMethod("calendars", "CANONICAL_TICK")[e4] : t3 ? "2000-01-02" : "2000-01-01";
            }(e3, !!r3);
            if (r3 < 2) return n2;
            var a2 = t2.dateTime2ms(n2, e3);
            return a2 += f * (r3 - 1), t2.ms2DateTime(a2, 0, e3);
          }, t2.dfltRange = function(e3) {
            return _(e3) ? g.getComponentMethod("calendars", "DFLTRANGE")[e3] : ["2000-01-01", "2001-01-01"];
          }, t2.isJSDate = function(e3) {
            return "object" == typeof e3 && null !== e3 && "function" == typeof e3.getTime;
          }, t2.dateTime2ms = function(e3, r3) {
            if (t2.isJSDate(e3)) {
              var i2 = e3.getTimezoneOffset() * h, o2 = (e3.getUTCMinutes() - e3.getMinutes()) * h + (e3.getUTCSeconds() - e3.getSeconds()) * p + (e3.getUTCMilliseconds() - e3.getMilliseconds());
              if (o2) {
                var l2 = 3 * h;
                i2 = i2 - l2 / 2 + s(o2 - i2 + l2 / 2, l2);
              }
              return (e3 = Number(e3) - i2) >= n && e3 <= a ? e3 : u;
            }
            if ("string" != typeof e3 && "number" != typeof e3) return u;
            e3 = String(e3);
            var c2 = _(r3), m2 = e3.charAt(0);
            !c2 || "G" !== m2 && "g" !== m2 || (e3 = e3.substr(1), r3 = "");
            var w2 = c2 && "chinese" === r3.substr(0, 7), T2 = e3.match(w2 ? x : y);
            if (!T2) return u;
            var M2 = T2[1], k2 = T2[3] || "1", A2 = Number(T2[5] || 1), L2 = Number(T2[7] || 0), S2 = Number(T2[9] || 0), C2 = Number(T2[11] || 0);
            if (c2) {
              if (2 === M2.length) return u;
              var O2;
              M2 = Number(M2);
              try {
                var D2 = g.getComponentMethod("calendars", "getCal")(r3);
                if (w2) {
                  var P2 = "i" === k2.charAt(k2.length - 1);
                  k2 = parseInt(k2, 10), O2 = D2.newDate(M2, D2.toMonthIndex(M2, k2, P2), A2);
                } else O2 = D2.newDate(M2, Number(k2), A2);
              } catch (e4) {
                return u;
              }
              return O2 ? (O2.toJD() - v) * f + L2 * d + S2 * h + C2 * p : u;
            }
            M2 = 2 === M2.length ? (Number(M2) + 2e3 - b) % 100 + b : Number(M2), k2 -= 1;
            var z = new Date(Date.UTC(2e3, k2, A2, L2, S2));
            return z.setUTCFullYear(M2), z.getUTCMonth() !== k2 || z.getUTCDate() !== A2 ? u : z.getTime() + C2 * p;
          }, n = t2.MIN_MS = t2.dateTime2ms("-9999"), a = t2.MAX_MS = t2.dateTime2ms("9999-12-31 23:59:59.9999"), t2.isDateTime = function(e3, r3) {
            return t2.dateTime2ms(e3, r3) !== u;
          };
          var T = 90 * f, M = 3 * d, k = 5 * h;
          function A(e3, t3, r3, n2, a2) {
            if ((t3 || r3 || n2 || a2) && (e3 += " " + w(t3, 2) + ":" + w(r3, 2), (n2 || a2) && (e3 += ":" + w(n2, 2), a2))) {
              for (var i2 = 4; a2 % 10 == 0; ) i2 -= 1, a2 /= 10;
              e3 += "." + w(a2, i2);
            }
            return e3;
          }
          t2.ms2DateTime = function(e3, t3, r3) {
            if ("number" != typeof e3 || !(e3 >= n && e3 <= a)) return u;
            t3 || (t3 = 0);
            var i2, o2, l2, c2, y2, x2, b2 = Math.floor(10 * s(e3 + 0.05, 1)), w2 = Math.round(e3 - b2 / 10);
            if (_(r3)) {
              var L2 = Math.floor(w2 / f) + v, S2 = Math.floor(s(e3, f));
              try {
                i2 = g.getComponentMethod("calendars", "getCal")(r3).fromJD(L2).formatDate("yyyy-mm-dd");
              } catch (e4) {
                i2 = m("G%Y-%m-%d")(new Date(w2));
              }
              if ("-" === i2.charAt(0)) for (; i2.length < 11; ) i2 = "-0" + i2.substr(1);
              else for (; i2.length < 10; ) i2 = "0" + i2;
              o2 = t3 < T ? Math.floor(S2 / d) : 0, l2 = t3 < T ? Math.floor(S2 % d / h) : 0, c2 = t3 < M ? Math.floor(S2 % h / p) : 0, y2 = t3 < k ? S2 % p * 10 + b2 : 0;
            } else x2 = new Date(w2), i2 = m("%Y-%m-%d")(x2), o2 = t3 < T ? x2.getUTCHours() : 0, l2 = t3 < T ? x2.getUTCMinutes() : 0, c2 = t3 < M ? x2.getUTCSeconds() : 0, y2 = t3 < k ? 10 * x2.getUTCMilliseconds() + b2 : 0;
            return A(i2, o2, l2, c2, y2);
          }, t2.ms2DateTimeLocal = function(e3) {
            if (!(e3 >= n + f && e3 <= a - f)) return u;
            var t3 = Math.floor(10 * s(e3 + 0.05, 1)), r3 = new Date(Math.round(e3 - t3 / 10));
            return A(i("%Y-%m-%d")(r3), r3.getHours(), r3.getMinutes(), r3.getSeconds(), 10 * r3.getUTCMilliseconds() + t3);
          }, t2.cleanDate = function(e3, r3, n2) {
            if (e3 === u) return r3;
            if (t2.isJSDate(e3) || "number" == typeof e3 && isFinite(e3)) {
              if (_(n2)) return l.error("JS Dates and milliseconds are incompatible with world calendars", e3), r3;
              if (!(e3 = t2.ms2DateTimeLocal(+e3)) && void 0 !== r3) return r3;
            } else if (!t2.isDateTime(e3, n2)) return l.error("unrecognized date", e3), r3;
            return e3;
          };
          var L = /%\d?f/g, S = /%h/g, C = { 1: "1", 2: "1", 3: "2", 4: "2" };
          function O(e3, t3, r3, n2) {
            e3 = e3.replace(L, function(e4) {
              var r4 = Math.min(+e4.charAt(1) || 6, 6);
              return (t3 / 1e3 % 1 + 2).toFixed(r4).substr(2).replace(/0+$/, "") || "0";
            });
            var a2 = new Date(Math.floor(t3 + 0.05));
            if (e3 = e3.replace(S, function() {
              return C[r3("%q")(a2)];
            }), _(n2)) try {
              e3 = g.getComponentMethod("calendars", "worldCalFmt")(e3, t3, n2);
            } catch (e4) {
              return "Invalid";
            }
            return r3(e3)(a2);
          }
          var D = [59, 59.9, 59.99, 59.999, 59.9999];
          t2.formatDate = function(e3, t3, r3, n2, a2, i2) {
            if (a2 = _(a2) && a2, !t3) if ("y" === r3) t3 = i2.year;
            else if ("m" === r3) t3 = i2.month;
            else {
              if ("d" !== r3) return function(e4, t4) {
                var r4 = s(e4 + 0.05, f), n3 = w(Math.floor(r4 / d), 2) + ":" + w(s(Math.floor(r4 / h), 60), 2);
                if ("M" !== t4) {
                  o(t4) || (t4 = 0);
                  var a3 = (100 + Math.min(s(e4 / p, 60), D[t4])).toFixed(t4).substr(1);
                  t4 > 0 && (a3 = a3.replace(/0+$/, "").replace(/[\.]$/, "")), n3 += ":" + a3;
                }
                return n3;
              }(e3, r3) + "\n" + O(i2.dayMonthYear, e3, n2, a2);
              t3 = i2.dayMonth + "\n" + i2.year;
            }
            return O(t3, e3, n2, a2);
          };
          var P = 3 * f;
          t2.incrementMonth = function(e3, t3, r3) {
            r3 = _(r3) && r3;
            var n2 = s(e3, f);
            if (e3 = Math.round(e3 - n2), r3) try {
              var a2 = Math.round(e3 / f) + v, i2 = g.getComponentMethod("calendars", "getCal")(r3), o2 = i2.fromJD(a2);
              return t3 % 12 ? i2.add(o2, t3, "m") : i2.add(o2, t3 / 12, "y"), (o2.toJD() - v) * f + n2;
            } catch (t4) {
              l.error("invalid ms " + e3 + " in calendar " + r3);
            }
            var c2 = new Date(e3 + P);
            return c2.setUTCMonth(c2.getUTCMonth() + t3) + n2 - P;
          }, t2.findExactDates = function(e3, t3) {
            for (var r3, n2, a2 = 0, i2 = 0, l2 = 0, s2 = 0, c2 = _(t3) && g.getComponentMethod("calendars", "getCal")(t3), u2 = 0; u2 < e3.length; u2++) if (n2 = e3[u2], o(n2)) {
              if (!(n2 % f)) if (c2) try {
                1 === (r3 = c2.fromJD(n2 / f + v)).day() ? 1 === r3.month() ? a2++ : i2++ : l2++;
              } catch (e4) {
              }
              else 1 === (r3 = new Date(n2)).getUTCDate() ? 0 === r3.getUTCMonth() ? a2++ : i2++ : l2++;
            } else s2++;
            l2 += i2 += a2;
            var d2 = e3.length - s2;
            return { exactYears: a2 / d2, exactMonths: i2 / d2, exactDays: l2 / d2 };
          };
        }, 5425: function(e2, t2, r2) {
          var n = r2(5568), a = r2(8636), i = r2(5236), o = r2(1191);
          function l(e3) {
            var t3 = e3 && e3.parentNode;
            t3 && t3.removeChild(e3);
          }
          function s(e3, t3, r3) {
            var n2 = "plotly.js-style-" + e3, i2 = document.getElementById(n2);
            i2 || ((i2 = document.createElement("style")).setAttribute("id", n2), i2.appendChild(document.createTextNode("")), document.head.appendChild(i2));
            var o2 = i2.sheet;
            o2.insertRule ? o2.insertRule(t3 + "{" + r3 + "}", 0) : o2.addRule ? o2.addRule(t3, r3, 0) : a.warn("addStyleRule failed");
          }
          function c(e3) {
            var t3 = window.getComputedStyle(e3, null), r3 = t3.getPropertyValue("-webkit-transform") || t3.getPropertyValue("-moz-transform") || t3.getPropertyValue("-ms-transform") || t3.getPropertyValue("-o-transform") || t3.getPropertyValue("transform");
            return "none" === r3 ? null : r3.replace("matrix", "").replace("3d", "").slice(1, -1).split(",").map(function(e4) {
              return +e4;
            });
          }
          function u(e3) {
            for (var t3 = []; f(e3); ) t3.push(e3), e3 = e3.parentNode, "function" == typeof ShadowRoot && e3 instanceof ShadowRoot && (e3 = e3.host);
            return t3;
          }
          function f(e3) {
            return e3 && (e3 instanceof Element || e3 instanceof HTMLElement);
          }
          e2.exports = { getGraphDiv: function(e3) {
            var t3;
            if ("string" == typeof e3) {
              if (null === (t3 = document.getElementById(e3))) throw new Error("No DOM element with id '" + e3 + "' exists on the page.");
              return t3;
            }
            if (null == e3) throw new Error("DOM element provided is null or undefined");
            return e3;
          }, isPlotDiv: function(e3) {
            var t3 = n.select(e3);
            return t3.node() instanceof HTMLElement && t3.size() && t3.classed("js-plotly-plot");
          }, removeElement: l, addStyleRule: function(e3, t3) {
            s("global", e3, t3);
          }, addRelatedStyleRule: s, deleteRelatedStyleRule: function(e3) {
            var t3 = "plotly.js-style-" + e3, r3 = document.getElementById(t3);
            r3 && l(r3);
          }, getFullTransformMatrix: function(e3) {
            var t3 = u(e3), r3 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
            return t3.forEach(function(e4) {
              var t4 = c(e4);
              if (t4) {
                var n2 = i.convertCssMatrix(t4);
                r3 = o.multiply(r3, r3, n2);
              }
            }), r3;
          }, getElementTransformMatrix: c, getElementAndAncestors: u, equalDomRects: function(e3, t3) {
            return e3 && t3 && e3.top === t3.top && e3.left === t3.left && e3.right === t3.right && e3.bottom === t3.bottom;
          } };
        }, 8596: function(e2, t2, r2) {
          var n = r2(7683).EventEmitter, a = { init: function(e3) {
            if (e3._ev instanceof n) return e3;
            var t3 = new n(), r3 = new n();
            return e3._ev = t3, e3._internalEv = r3, e3.on = t3.on.bind(t3), e3.once = t3.once.bind(t3), e3.removeListener = t3.removeListener.bind(t3), e3.removeAllListeners = t3.removeAllListeners.bind(t3), e3._internalOn = r3.on.bind(r3), e3._internalOnce = r3.once.bind(r3), e3._removeInternalListener = r3.removeListener.bind(r3), e3._removeAllInternalListeners = r3.removeAllListeners.bind(r3), e3.emit = function(n2, a2) {
              "undefined" != typeof jQuery && jQuery(e3).trigger(n2, a2), t3.emit(n2, a2), r3.emit(n2, a2);
            }, e3;
          }, triggerHandler: function(e3, t3, r3) {
            var n2, a2;
            "undefined" != typeof jQuery && (n2 = jQuery(e3).triggerHandler(t3, r3));
            var i = e3._ev;
            if (!i) return n2;
            var o, l = i._events[t3];
            if (!l) return n2;
            function s(e4) {
              return e4.listener ? (i.removeListener(t3, e4.listener), e4.fired ? void 0 : (e4.fired = true, e4.listener.apply(i, [r3]))) : e4.apply(i, [r3]);
            }
            for (l = Array.isArray(l) ? l : [l], o = 0; o < l.length - 1; o++) s(l[o]);
            return a2 = s(l[o]), void 0 !== n2 ? n2 : a2;
          }, purge: function(e3) {
            return delete e3._ev, delete e3.on, delete e3.once, delete e3.removeListener, delete e3.removeAllListeners, delete e3.emit, delete e3._ev, delete e3._internalEv, delete e3._internalOn, delete e3._internalOnce, delete e3._removeInternalListener, delete e3._removeAllInternalListeners, e3;
          } };
          e2.exports = a;
        }, 3049: function(e2, t2, r2) {
          var n = r2(6174), a = Array.isArray;
          function i(e3, t3, r3, o) {
            var l, s, c, u, f, d, h, p = e3[0], v = e3.length;
            if (2 === v && a(p) && a(e3[1]) && 0 === p.length) {
              if (h = function(e4, t4) {
                var r4, n2;
                for (r4 = 0; r4 < e4.length; r4++) {
                  if (null !== (n2 = e4[r4]) && "object" == typeof n2) return false;
                  void 0 !== n2 && (t4[r4] = n2);
                }
                return true;
              }(e3[1], p), h) return p;
              p.splice(0, p.length);
            }
            for (var g = 1; g < v; g++) for (s in l = e3[g]) c = p[s], u = l[s], o && a(u) ? p[s] = u : t3 && u && (n(u) || (f = a(u))) ? (f ? (f = false, d = c && a(c) ? c : []) : d = c && n(c) ? c : {}, p[s] = i([d, u], t3, r3, o)) : (void 0 !== u || r3) && (p[s] = u);
            return p;
          }
          t2.extendFlat = function() {
            return i(arguments, false, false, false);
          }, t2.extendDeep = function() {
            return i(arguments, true, false, false);
          }, t2.extendDeepAll = function() {
            return i(arguments, true, true, false);
          }, t2.extendDeepNoArrays = function() {
            return i(arguments, true, false, true);
          };
        }, 8965: function(e2) {
          e2.exports = function(e3) {
            for (var t2 = {}, r2 = [], n = 0, a = 0; a < e3.length; a++) {
              var i = e3[a];
              1 !== t2[i] && (t2[i] = 1, r2[n++] = i);
            }
            return r2;
          };
        }, 8926: function(e2) {
          function t2(e3) {
            return true === e3.visible;
          }
          function r2(e3) {
            var t3 = e3[0].trace;
            return true === t3.visible && 0 !== t3._length;
          }
          e2.exports = function(e3) {
            for (var n, a = (n = e3, Array.isArray(n) && Array.isArray(n[0]) && n[0][0] && n[0][0].trace ? r2 : t2), i = [], o = 0; o < e3.length; o++) {
              var l = e3[o];
              a(l) && i.push(l);
            }
            return i;
          };
        }, 3447: function(e2, t2, r2) {
          var n, a, i, o = r2(8953).mod;
          function l(e3, t3, r3, n2, a2, i2, o2, l2) {
            var s2 = r3 - e3, c = a2 - e3, u = o2 - a2, f = n2 - t3, d = i2 - t3, h = l2 - i2, p = s2 * h - u * f;
            if (0 === p) return null;
            var v = (c * h - u * d) / p, g = (c * f - s2 * d) / p;
            return g < 0 || g > 1 || v < 0 || v > 1 ? null : { x: e3 + s2 * v, y: t3 + f * v };
          }
          function s(e3, t3, r3, n2, a2) {
            var i2 = n2 * e3 + a2 * t3;
            if (i2 < 0) return n2 * n2 + a2 * a2;
            if (i2 > r3) {
              var o2 = n2 - e3, l2 = a2 - t3;
              return o2 * o2 + l2 * l2;
            }
            var s2 = n2 * t3 - a2 * e3;
            return s2 * s2 / r3;
          }
          t2.segmentsIntersect = l, t2.segmentDistance = function(e3, t3, r3, n2, a2, i2, o2, c) {
            if (l(e3, t3, r3, n2, a2, i2, o2, c)) return 0;
            var u = r3 - e3, f = n2 - t3, d = o2 - a2, h = c - i2, p = u * u + f * f, v = d * d + h * h, g = Math.min(s(u, f, p, a2 - e3, i2 - t3), s(u, f, p, o2 - e3, c - t3), s(d, h, v, e3 - a2, t3 - i2), s(d, h, v, r3 - a2, n2 - i2));
            return Math.sqrt(g);
          }, t2.getTextLocation = function(e3, t3, r3, l2) {
            if (e3 === a && l2 === i || (n = {}, a = e3, i = l2), n[r3]) return n[r3];
            var s2 = e3.getPointAtLength(o(r3 - l2 / 2, t3)), c = e3.getPointAtLength(o(r3 + l2 / 2, t3)), u = Math.atan((c.y - s2.y) / (c.x - s2.x)), f = e3.getPointAtLength(o(r3, t3)), d = { x: (4 * f.x + s2.x + c.x) / 6, y: (4 * f.y + s2.y + c.y) / 6, theta: u };
            return n[r3] = d, d;
          }, t2.clearLocationCache = function() {
            a = null;
          }, t2.getVisibleSegment = function(e3, t3, r3) {
            var n2, a2, i2 = t3.left, o2 = t3.right, l2 = t3.top, s2 = t3.bottom, c = 0, u = e3.getTotalLength(), f = u;
            function d(t4) {
              var r4 = e3.getPointAtLength(t4);
              0 === t4 ? n2 = r4 : t4 === u && (a2 = r4);
              var c2 = r4.x < i2 ? i2 - r4.x : r4.x > o2 ? r4.x - o2 : 0, f2 = r4.y < l2 ? l2 - r4.y : r4.y > s2 ? r4.y - s2 : 0;
              return Math.sqrt(c2 * c2 + f2 * f2);
            }
            for (var h = d(c); h; ) {
              if ((c += h + r3) > f) return;
              h = d(c);
            }
            for (h = d(f); h; ) {
              if (c > (f -= h + r3)) return;
              h = d(f);
            }
            return { min: c, max: f, len: f - c, total: u, isClosed: 0 === c && f === u && Math.abs(n2.x - a2.x) < 0.1 && Math.abs(n2.y - a2.y) < 0.1 };
          }, t2.findPointOnPath = function(e3, t3, r3, n2) {
            for (var a2, i2, o2, l2 = (n2 = n2 || {}).pathLength || e3.getTotalLength(), s2 = n2.tolerance || 1e-3, c = n2.iterationLimit || 30, u = e3.getPointAtLength(0)[r3] > e3.getPointAtLength(l2)[r3] ? -1 : 1, f = 0, d = 0, h = l2; f < c; ) {
              if (a2 = (d + h) / 2, o2 = (i2 = e3.getPointAtLength(a2))[r3] - t3, Math.abs(o2) < s2) return i2;
              u * o2 > 0 ? h = a2 : d = a2, f++;
            }
            return i2;
          };
        }, 9527: function(e2) {
          e2.exports = function(e3) {
            return e3;
          };
        }, 688: function(e2) {
          e2.exports = function(e3, t2) {
            if (!t2) return e3;
            var r2 = 1 / Math.abs(t2), n = r2 > 1 ? (r2 * e3 + r2 * t2) / r2 : e3 + t2, a = String(n).length;
            if (a > 16) {
              var i = String(t2).length;
              if (a >= String(e3).length + i) {
                var o = parseFloat(n).toPrecision(12);
                -1 === o.indexOf("e+") && (n = +o);
              }
            }
            return n;
          };
        }, 4809: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2696).aL, i = r2(6464).GP, o = r2(721), l = r2(3821), s = l.FP_SAFE, c = -s, u = l.BADNUM, f = e2.exports = {};
          f.adjustFormat = function(e3) {
            return !e3 || /^\d[.]\df/.test(e3) || /[.]\d%/.test(e3) ? e3 : "0.f" === e3 ? "~f" : /^\d%/.test(e3) ? "~%" : /^\ds/.test(e3) ? "~s" : !/^[~,.0$]/.test(e3) && /[&fps]/.test(e3) ? "~" + e3 : e3;
          };
          var d = {};
          f.warnBadFormat = function(e3) {
            var t3 = String(e3);
            d[t3] || (d[t3] = 1, f.warn('encountered bad format: "' + t3 + '"'));
          }, f.noFormat = function(e3) {
            return String(e3);
          }, f.numberFormat = function(e3) {
            var t3;
            try {
              t3 = i(f.adjustFormat(e3));
            } catch (t4) {
              return f.warnBadFormat(e3), f.noFormat;
            }
            return t3;
          }, f.nestedProperty = r2(5632), f.keyedContainer = r2(4967), f.relativeAttr = r2(2047), f.isPlainObject = r2(6174), f.toLogRange = r2(8083), f.relinkPrivateKeys = r2(428);
          var h = r2(7800);
          f.isArrayBuffer = h.isArrayBuffer, f.isTypedArray = h.isTypedArray, f.isArrayOrTypedArray = h.isArrayOrTypedArray, f.isArray1D = h.isArray1D, f.ensureArray = h.ensureArray, f.concat = h.concat, f.maxRowLength = h.maxRowLength, f.minRowLength = h.minRowLength;
          var p = r2(8953);
          f.mod = p.mod, f.modHalf = p.modHalf;
          var v = r2(4220);
          f.valObjectMeta = v.valObjectMeta, f.coerce = v.coerce, f.coerce2 = v.coerce2, f.coerceFont = v.coerceFont, f.coercePattern = v.coercePattern, f.coerceHoverinfo = v.coerceHoverinfo, f.coerceSelectionMarkerOpacity = v.coerceSelectionMarkerOpacity, f.validate = v.validate;
          var g = r2(2596);
          f.dateTime2ms = g.dateTime2ms, f.isDateTime = g.isDateTime, f.ms2DateTime = g.ms2DateTime, f.ms2DateTimeLocal = g.ms2DateTimeLocal, f.cleanDate = g.cleanDate, f.isJSDate = g.isJSDate, f.formatDate = g.formatDate, f.incrementMonth = g.incrementMonth, f.dateTick0 = g.dateTick0, f.dfltRange = g.dfltRange, f.findExactDates = g.findExactDates, f.MIN_MS = g.MIN_MS, f.MAX_MS = g.MAX_MS;
          var m = r2(8813);
          f.findBin = m.findBin, f.sorterAsc = m.sorterAsc, f.sorterDes = m.sorterDes, f.distinctVals = m.distinctVals, f.roundUp = m.roundUp, f.sort = m.sort, f.findIndexOfMin = m.findIndexOfMin, f.sortObjectKeys = r2(2994);
          var y = r2(9258);
          f.aggNums = y.aggNums, f.len = y.len, f.mean = y.mean, f.geometricMean = y.geometricMean, f.median = y.median, f.midRange = y.midRange, f.variance = y.variance, f.stdev = y.stdev, f.interp = y.interp;
          var x = r2(5236);
          f.init2dArray = x.init2dArray, f.transposeRagged = x.transposeRagged, f.dot = x.dot, f.translationMatrix = x.translationMatrix, f.rotationMatrix = x.rotationMatrix, f.rotationXYMatrix = x.rotationXYMatrix, f.apply3DTransform = x.apply3DTransform, f.apply2DTransform = x.apply2DTransform, f.apply2DTransform2 = x.apply2DTransform2, f.convertCssMatrix = x.convertCssMatrix, f.inverseTransformMatrix = x.inverseTransformMatrix;
          var b = r2(4313);
          f.deg2rad = b.deg2rad, f.rad2deg = b.rad2deg, f.angleDelta = b.angleDelta, f.angleDist = b.angleDist, f.isFullCircle = b.isFullCircle, f.isAngleInsideSector = b.isAngleInsideSector, f.isPtInsideSector = b.isPtInsideSector, f.pathArc = b.pathArc, f.pathSector = b.pathSector, f.pathAnnulus = b.pathAnnulus;
          var _ = r2(2546);
          f.isLeftAnchor = _.isLeftAnchor, f.isCenterAnchor = _.isCenterAnchor, f.isRightAnchor = _.isRightAnchor, f.isTopAnchor = _.isTopAnchor, f.isMiddleAnchor = _.isMiddleAnchor, f.isBottomAnchor = _.isBottomAnchor;
          var w = r2(3447);
          f.segmentsIntersect = w.segmentsIntersect, f.segmentDistance = w.segmentDistance, f.getTextLocation = w.getTextLocation, f.clearLocationCache = w.clearLocationCache, f.getVisibleSegment = w.getVisibleSegment, f.findPointOnPath = w.findPointOnPath;
          var T = r2(3049);
          f.extendFlat = T.extendFlat, f.extendDeep = T.extendDeep, f.extendDeepAll = T.extendDeepAll, f.extendDeepNoArrays = T.extendDeepNoArrays;
          var M = r2(8636);
          f.log = M.log, f.warn = M.warn, f.error = M.error;
          var k = r2(694);
          f.counterRegex = k.counter;
          var A = r2(4025);
          f.throttle = A.throttle, f.throttleDone = A.done, f.clearThrottle = A.clear;
          var L = r2(5425);
          function S(e3) {
            var t3 = {};
            for (var r3 in e3) for (var n2 = e3[r3], a2 = 0; a2 < n2.length; a2++) t3[n2[a2]] = +r3;
            return t3;
          }
          f.getGraphDiv = L.getGraphDiv, f.isPlotDiv = L.isPlotDiv, f.removeElement = L.removeElement, f.addStyleRule = L.addStyleRule, f.addRelatedStyleRule = L.addRelatedStyleRule, f.deleteRelatedStyleRule = L.deleteRelatedStyleRule, f.getFullTransformMatrix = L.getFullTransformMatrix, f.getElementTransformMatrix = L.getElementTransformMatrix, f.getElementAndAncestors = L.getElementAndAncestors, f.equalDomRects = L.equalDomRects, f.clearResponsive = r2(3493), f.preserveDrawingBuffer = r2(2521), f.makeTraceGroups = r2(5944), f._ = r2(8514), f.notifier = r2(7355), f.filterUnique = r2(8965), f.filterVisible = r2(8926), f.pushUnique = r2(6539), f.increment = r2(688), f.cleanNumber = r2(4498), f.ensureNumber = function(e3) {
            return o(e3) ? (e3 = Number(e3)) > s || e3 < c ? u : e3 : u;
          }, f.isIndex = function(e3, t3) {
            return !(void 0 !== t3 && e3 >= t3) && o(e3) && e3 >= 0 && e3 % 1 == 0;
          }, f.noop = r2(4969), f.identity = r2(9527), f.repeat = function(e3, t3) {
            for (var r3 = new Array(t3), n2 = 0; n2 < t3; n2++) r3[n2] = e3;
            return r3;
          }, f.swapAttrs = function(e3, t3, r3, n2) {
            r3 || (r3 = "x"), n2 || (n2 = "y");
            for (var a2 = 0; a2 < t3.length; a2++) {
              var i2 = t3[a2], o2 = f.nestedProperty(e3, i2.replace("?", r3)), l2 = f.nestedProperty(e3, i2.replace("?", n2)), s2 = o2.get();
              o2.set(l2.get()), l2.set(s2);
            }
          }, f.raiseToTop = function(e3) {
            e3.parentNode.appendChild(e3);
          }, f.cancelTransition = function(e3) {
            return e3.transition().duration(0);
          }, f.constrain = function(e3, t3, r3) {
            return t3 > r3 ? Math.max(r3, Math.min(t3, e3)) : Math.max(t3, Math.min(r3, e3));
          }, f.bBoxIntersect = function(e3, t3, r3) {
            return r3 = r3 || 0, e3.left <= t3.right + r3 && t3.left <= e3.right + r3 && e3.top <= t3.bottom + r3 && t3.top <= e3.bottom + r3;
          }, f.simpleMap = function(e3, t3, r3, n2, a2) {
            for (var i2 = e3.length, o2 = new Array(i2), l2 = 0; l2 < i2; l2++) o2[l2] = t3(e3[l2], r3, n2, a2);
            return o2;
          }, f.randstr = function e3(t3, r3, n2, a2) {
            if (n2 || (n2 = 16), void 0 === r3 && (r3 = 24), r3 <= 0) return "0";
            var i2, o2, l2 = Math.log(Math.pow(2, r3)) / Math.log(n2), s2 = "";
            for (i2 = 2; l2 === 1 / 0; i2 *= 2) l2 = Math.log(Math.pow(2, r3 / i2)) / Math.log(n2) * i2;
            var c2 = l2 - Math.floor(l2);
            for (i2 = 0; i2 < Math.floor(l2); i2++) s2 = Math.floor(Math.random() * n2).toString(n2) + s2;
            c2 && (o2 = Math.pow(n2, c2), s2 = Math.floor(Math.random() * o2).toString(n2) + s2);
            var u2 = parseInt(s2, n2);
            return t3 && t3[s2] || u2 !== 1 / 0 && u2 >= Math.pow(2, r3) ? a2 > 10 ? (f.warn("randstr failed uniqueness"), s2) : e3(t3, r3, n2, (a2 || 0) + 1) : s2;
          }, f.OptionControl = function(e3, t3) {
            e3 || (e3 = {}), t3 || (t3 = "opt");
            var r3 = { optionList: [], _newoption: function(n2) {
              n2[t3] = e3, r3[n2.name] = n2, r3.optionList.push(n2);
            } };
            return r3["_" + t3] = e3, r3;
          }, f.smooth = function(e3, t3) {
            if ((t3 = Math.round(t3) || 0) < 2) return e3;
            var r3, n2, a2, i2, o2 = e3.length, l2 = 2 * o2, s2 = 2 * t3 - 1, c2 = new Array(s2), u2 = new Array(o2);
            for (r3 = 0; r3 < s2; r3++) c2[r3] = (1 - Math.cos(Math.PI * (r3 + 1) / t3)) / (2 * t3);
            for (r3 = 0; r3 < o2; r3++) {
              for (i2 = 0, n2 = 0; n2 < s2; n2++) (a2 = r3 + n2 + 1 - t3) < -o2 ? a2 -= l2 * Math.round(a2 / l2) : a2 >= l2 && (a2 -= l2 * Math.floor(a2 / l2)), a2 < 0 ? a2 = -1 - a2 : a2 >= o2 && (a2 = l2 - 1 - a2), i2 += e3[a2] * c2[n2];
              u2[r3] = i2;
            }
            return u2;
          }, f.syncOrAsync = function(e3, t3, r3) {
            var n2;
            function a2() {
              return f.syncOrAsync(e3, t3, r3);
            }
            for (; e3.length; ) if ((n2 = (0, e3.splice(0, 1)[0])(t3)) && n2.then) return n2.then(a2);
            return r3 && r3(t3);
          }, f.stripTrailingSlash = function(e3) {
            return "/" === e3.substr(-1) ? e3.substr(0, e3.length - 1) : e3;
          }, f.noneOrAll = function(e3, t3, r3) {
            if (e3) {
              var n2, a2 = false, i2 = true;
              for (n2 = 0; n2 < r3.length; n2++) null != e3[r3[n2]] ? a2 = true : i2 = false;
              if (a2 && !i2) for (n2 = 0; n2 < r3.length; n2++) e3[r3[n2]] = t3[r3[n2]];
            }
          }, f.mergeArray = function(e3, t3, r3, n2) {
            var a2 = "function" == typeof n2;
            if (f.isArrayOrTypedArray(e3)) for (var i2 = Math.min(e3.length, t3.length), o2 = 0; o2 < i2; o2++) {
              var l2 = e3[o2];
              t3[o2][r3] = a2 ? n2(l2) : l2;
            }
          }, f.mergeArrayCastPositive = function(e3, t3, r3) {
            return f.mergeArray(e3, t3, r3, function(e4) {
              var t4 = +e4;
              return isFinite(t4) && t4 > 0 ? t4 : 0;
            });
          }, f.fillArray = function(e3, t3, r3, n2) {
            if (n2 = n2 || f.identity, f.isArrayOrTypedArray(e3)) for (var a2 = 0; a2 < t3.length; a2++) t3[a2][r3] = n2(e3[a2]);
          }, f.castOption = function(e3, t3, r3, n2) {
            n2 = n2 || f.identity;
            var a2 = f.nestedProperty(e3, r3).get();
            return f.isArrayOrTypedArray(a2) ? Array.isArray(t3) && f.isArrayOrTypedArray(a2[t3[0]]) ? n2(a2[t3[0]][t3[1]]) : n2(a2[t3]) : a2;
          }, f.extractOption = function(e3, t3, r3, n2) {
            if (r3 in e3) return e3[r3];
            var a2 = f.nestedProperty(t3, n2).get();
            return Array.isArray(a2) ? void 0 : a2;
          }, f.tagSelected = function(e3, t3, r3) {
            var n2, a2, i2 = t3.selectedpoints, o2 = t3._indexToPoints;
            o2 && (n2 = S(o2));
            for (var l2 = 0; l2 < i2.length; l2++) {
              var s2 = i2[l2];
              if (f.isIndex(s2) || f.isArrayOrTypedArray(s2) && f.isIndex(s2[0]) && f.isIndex(s2[1])) {
                var c2 = n2 ? n2[s2] : s2, u2 = r3 ? r3[c2] : c2;
                void 0 !== (a2 = u2) && a2 < e3.length && (e3[u2].selected = 1);
              }
            }
          }, f.selIndices2selPoints = function(e3) {
            var t3 = e3.selectedpoints, r3 = e3._indexToPoints;
            if (r3) {
              for (var n2 = S(r3), a2 = [], i2 = 0; i2 < t3.length; i2++) {
                var o2 = t3[i2];
                if (f.isIndex(o2)) {
                  var l2 = n2[o2];
                  f.isIndex(l2) && a2.push(l2);
                }
              }
              return a2;
            }
            return t3;
          }, f.getTargetArray = function(e3, t3) {
            var r3 = t3.target;
            if ("string" == typeof r3 && r3) {
              var n2 = f.nestedProperty(e3, r3).get();
              return !!f.isArrayOrTypedArray(n2) && n2;
            }
            return !!f.isArrayOrTypedArray(r3) && r3;
          }, f.minExtend = function e3(t3, r3, n2) {
            var a2 = {};
            "object" != typeof r3 && (r3 = {});
            var i2, o2, l2, s2 = "pieLike" === n2 ? -1 : 3, c2 = Object.keys(t3);
            for (i2 = 0; i2 < c2.length; i2++) l2 = t3[o2 = c2[i2]], "_" !== o2.charAt(0) && "function" != typeof l2 && ("module" === o2 ? a2[o2] = l2 : Array.isArray(l2) ? a2[o2] = "colorscale" === o2 || -1 === s2 ? l2.slice() : l2.slice(0, s2) : f.isTypedArray(l2) ? a2[o2] = -1 === s2 ? l2.subarray() : l2.subarray(0, s2) : a2[o2] = l2 && "object" == typeof l2 ? e3(t3[o2], r3[o2], n2) : l2);
            for (c2 = Object.keys(r3), i2 = 0; i2 < c2.length; i2++) "object" == typeof (l2 = r3[o2 = c2[i2]]) && o2 in a2 && "object" == typeof a2[o2] || (a2[o2] = l2);
            return a2;
          }, f.titleCase = function(e3) {
            return e3.charAt(0).toUpperCase() + e3.substr(1);
          }, f.containsAny = function(e3, t3) {
            for (var r3 = 0; r3 < t3.length; r3++) if (-1 !== e3.indexOf(t3[r3])) return true;
            return false;
          }, f.isIE = function() {
            return void 0 !== window.navigator.msSaveBlob;
          };
          var C = /Version\/[\d\.]+.*Safari/;
          f.isSafari = function() {
            return C.test(window.navigator.userAgent);
          };
          var O = /iPad|iPhone|iPod/;
          f.isIOS = function() {
            return O.test(window.navigator.userAgent);
          };
          var D = /Firefox\/(\d+)\.\d+/;
          f.getFirefoxVersion = function() {
            var e3 = D.exec(window.navigator.userAgent);
            if (e3 && 2 === e3.length) {
              var t3 = parseInt(e3[1]);
              if (!isNaN(t3)) return t3;
            }
            return null;
          }, f.isD3Selection = function(e3) {
            return e3 instanceof n.selection;
          }, f.ensureSingle = function(e3, t3, r3, n2) {
            var a2 = e3.select(t3 + (r3 ? "." + r3 : ""));
            if (a2.size()) return a2;
            var i2 = e3.append(t3);
            return r3 && i2.classed(r3, true), n2 && i2.call(n2), i2;
          }, f.ensureSingleById = function(e3, t3, r3, n2) {
            var a2 = e3.select(t3 + "#" + r3);
            if (a2.size()) return a2;
            var i2 = e3.append(t3).attr("id", r3);
            return n2 && i2.call(n2), i2;
          }, f.objectFromPath = function(e3, t3) {
            for (var r3, n2 = e3.split("."), a2 = r3 = {}, i2 = 0; i2 < n2.length; i2++) {
              var o2 = n2[i2], l2 = null, s2 = n2[i2].match(/(.*)\[([0-9]+)\]/);
              s2 ? (o2 = s2[1], l2 = s2[2], r3 = r3[o2] = [], i2 === n2.length - 1 ? r3[l2] = t3 : r3[l2] = {}, r3 = r3[l2]) : (i2 === n2.length - 1 ? r3[o2] = t3 : r3[o2] = {}, r3 = r3[o2]);
            }
            return a2;
          };
          var P = /^([^\[\.]+)\.(.+)?/, z = /^([^\.]+)\[([0-9]+)\](\.)?(.+)?/;
          function I(e3) {
            return "__" === e3.slice(0, 2);
          }
          f.expandObjectPaths = function(e3) {
            var t3, r3, n2, a2, i2, o2, l2;
            if ("object" == typeof e3 && !Array.isArray(e3)) {
              for (r3 in e3) if (e3.hasOwnProperty(r3)) if (t3 = r3.match(P)) {
                if (a2 = e3[r3], I(n2 = t3[1])) continue;
                delete e3[r3], e3[n2] = f.extendDeepNoArrays(e3[n2] || {}, f.objectFromPath(r3, f.expandObjectPaths(a2))[n2]);
              } else if (t3 = r3.match(z)) {
                if (a2 = e3[r3], I(n2 = t3[1])) continue;
                if (i2 = parseInt(t3[2]), delete e3[r3], e3[n2] = e3[n2] || [], "." === t3[3]) l2 = t3[4], o2 = e3[n2][i2] = e3[n2][i2] || {}, f.extendDeepNoArrays(o2, f.objectFromPath(l2, f.expandObjectPaths(a2)));
                else {
                  if (I(n2)) continue;
                  e3[n2][i2] = f.expandObjectPaths(a2);
                }
              } else {
                if (I(r3)) continue;
                e3[r3] = f.expandObjectPaths(e3[r3]);
              }
            }
            return e3;
          }, f.numSeparate = function(e3, t3, r3) {
            if (r3 || (r3 = false), "string" != typeof t3 || 0 === t3.length) throw new Error("Separator string required for formatting!");
            "number" == typeof e3 && (e3 = String(e3));
            var n2 = /(\d+)(\d{3})/, a2 = t3.charAt(0), i2 = t3.charAt(1), o2 = e3.split("."), l2 = o2[0], s2 = o2.length > 1 ? a2 + o2[1] : "";
            if (i2 && (o2.length > 1 || l2.length > 4 || r3)) for (; n2.test(l2); ) l2 = l2.replace(n2, "$1" + i2 + "$2");
            return l2 + s2;
          }, f.TEMPLATE_STRING_REGEX = /%{([^\s%{}:]*)([:|\|][^}]*)?}/g;
          var E = /^\w*$/;
          f.templateString = function(e3, t3) {
            var r3 = {};
            return e3.replace(f.TEMPLATE_STRING_REGEX, function(e4, n2) {
              var a2;
              return E.test(n2) ? a2 = t3[n2] : (r3[n2] = r3[n2] || f.nestedProperty(t3, n2).get, a2 = r3[n2]()), f.isValidTextValue(a2) ? a2 : "";
            });
          };
          var R = { max: 10, count: 0, name: "hovertemplate" };
          f.hovertemplateString = function() {
            return j.apply(R, arguments);
          };
          var N = { max: 10, count: 0, name: "texttemplate" };
          f.texttemplateString = function() {
            return j.apply(N, arguments);
          };
          var F = /^(\S+)([\*\/])(-?\d+(\.\d+)?)$/, H = { max: 10, count: 0, name: "texttemplate", parseMultDiv: true };
          f.texttemplateStringForShapes = function() {
            return j.apply(H, arguments);
          };
          var B = /^[:|\|]/;
          function j(e3, t3, r3) {
            var n2 = this, i2 = arguments;
            t3 || (t3 = {});
            var o2 = {};
            return e3.replace(f.TEMPLATE_STRING_REGEX, function(e4, l2, s2) {
              var c2 = "_xother" === l2 || "_yother" === l2, u2 = "_xother_" === l2 || "_yother_" === l2, d2 = "xother_" === l2 || "yother_" === l2, h2 = "xother" === l2 || "yother" === l2 || c2 || d2 || u2, p2 = l2;
              (c2 || u2) && (p2 = p2.substring(1)), (d2 || u2) && (p2 = p2.substring(0, p2.length - 1));
              var v2, g2, m2, y2 = null, x2 = null;
              if (n2.parseMultDiv) {
                var b2 = function(e5) {
                  var t4 = e5.match(F);
                  return t4 ? { key: t4[1], op: t4[2], number: Number(t4[3]) } : { key: e5, op: null, number: null };
                }(p2);
                p2 = b2.key, y2 = b2.op, x2 = b2.number;
              }
              if (h2) {
                if (void 0 === (v2 = t3[p2])) return "";
              } else for (m2 = 3; m2 < i2.length; m2++) if (g2 = i2[m2]) {
                if (g2.hasOwnProperty(p2)) {
                  v2 = g2[p2];
                  break;
                }
                if (E.test(p2) || (v2 = f.nestedProperty(g2, p2).get(), (v2 = o2[p2] || f.nestedProperty(g2, p2).get()) && (o2[p2] = v2)), void 0 !== v2) break;
              }
              if (void 0 !== v2 && ("*" === y2 && (v2 *= x2), "/" === y2 && (v2 /= x2)), void 0 === v2 && n2) return n2.count < n2.max && (f.warn("Variable '" + p2 + "' in " + n2.name + " could not be found!"), v2 = e4), n2.count === n2.max && f.warn("Too many " + n2.name + " warnings - additional warnings will be suppressed"), n2.count++, e4;
              if (s2) {
                var _2;
                if (":" === s2[0] && (_2 = r3 ? r3.numberFormat : f.numberFormat, "" !== v2 && (v2 = _2(s2.replace(B, ""))(v2))), "|" === s2[0]) {
                  _2 = r3 ? r3.timeFormat : a;
                  var w2 = f.dateTime2ms(v2);
                  v2 = f.formatDate(w2, s2.replace(B, ""), false, _2);
                }
              } else {
                var T2 = p2 + "Label";
                t3.hasOwnProperty(T2) && (v2 = t3[T2]);
              }
              return h2 && (v2 = "(" + v2 + ")", (c2 || u2) && (v2 = " " + v2), (d2 || u2) && (v2 += " ")), v2;
            });
          }
          f.subplotSort = function(e3, t3) {
            for (var r3 = Math.min(e3.length, t3.length) + 1, n2 = 0, a2 = 0, i2 = 0; i2 < r3; i2++) {
              var o2 = e3.charCodeAt(i2) || 0, l2 = t3.charCodeAt(i2) || 0, s2 = o2 >= 48 && o2 <= 57, c2 = l2 >= 48 && l2 <= 57;
              if (s2 && (n2 = 10 * n2 + o2 - 48), c2 && (a2 = 10 * a2 + l2 - 48), !s2 || !c2) {
                if (n2 !== a2) return n2 - a2;
                if (o2 !== l2) return o2 - l2;
              }
            }
            return a2 - n2;
          };
          var Y = 2e9;
          f.seedPseudoRandom = function() {
            Y = 2e9;
          }, f.pseudoRandom = function() {
            var e3 = Y;
            return Y = (69069 * Y + 1) % 4294967296, Math.abs(Y - e3) < 429496729 ? f.pseudoRandom() : Y / 4294967296;
          }, f.fillText = function(e3, t3, r3) {
            var n2 = Array.isArray(r3) ? function(e4) {
              r3.push(e4);
            } : function(e4) {
              r3.text = e4;
            }, a2 = f.extractOption(e3, t3, "htx", "hovertext");
            if (f.isValidTextValue(a2)) return n2(a2);
            var i2 = f.extractOption(e3, t3, "tx", "text");
            return f.isValidTextValue(i2) ? n2(i2) : void 0;
          }, f.isValidTextValue = function(e3) {
            return e3 || 0 === e3;
          }, f.formatPercent = function(e3, t3) {
            t3 = t3 || 0;
            for (var r3 = (Math.round(100 * e3 * Math.pow(10, t3)) * Math.pow(0.1, t3)).toFixed(t3) + "%", n2 = 0; n2 < t3; n2++) -1 !== r3.indexOf(".") && (r3 = (r3 = r3.replace("0%", "%")).replace(".%", "%"));
            return r3;
          }, f.isHidden = function(e3) {
            var t3 = window.getComputedStyle(e3).display;
            return !t3 || "none" === t3;
          }, f.strTranslate = function(e3, t3) {
            return e3 || t3 ? "translate(" + e3 + "," + t3 + ")" : "";
          }, f.strRotate = function(e3) {
            return e3 ? "rotate(" + e3 + ")" : "";
          }, f.strScale = function(e3) {
            return 1 !== e3 ? "scale(" + e3 + ")" : "";
          }, f.getTextTransform = function(e3) {
            var t3 = e3.noCenter, r3 = e3.textX, n2 = e3.textY, a2 = e3.targetX, i2 = e3.targetY, o2 = e3.anchorX || 0, l2 = e3.anchorY || 0, s2 = e3.rotate, c2 = e3.scale;
            return c2 ? c2 > 1 && (c2 = 1) : c2 = 0, f.strTranslate(a2 - c2 * (r3 + o2), i2 - c2 * (n2 + l2)) + f.strScale(c2) + (s2 ? "rotate(" + s2 + (t3 ? "" : " " + r3 + " " + n2) + ")" : "");
          }, f.setTransormAndDisplay = function(e3, t3) {
            e3.attr("transform", f.getTextTransform(t3)), e3.style("display", t3.scale ? null : "none");
          }, f.ensureUniformFontSize = function(e3, t3) {
            var r3 = f.extendFlat({}, t3);
            return r3.size = Math.max(t3.size, e3._fullLayout.uniformtext.minsize || 0), r3;
          }, f.join2 = function(e3, t3, r3) {
            var n2 = e3.length;
            return n2 > 1 ? e3.slice(0, -1).join(t3) + r3 + e3[n2 - 1] : e3.join(t3);
          }, f.bigFont = function(e3) {
            return Math.round(1.2 * e3);
          };
          var V = f.getFirefoxVersion(), U = null !== V && V < 86;
          f.getPositionFromD3Event = function() {
            return U ? [n.event.layerX, n.event.layerY] : [n.event.offsetX, n.event.offsetY];
          };
        }, 6174: function(e2) {
          e2.exports = function(e3) {
            return window && window.process && window.process.versions ? "[object Object]" === Object.prototype.toString.call(e3) : "[object Object]" === Object.prototype.toString.call(e3) && Object.getPrototypeOf(e3).hasOwnProperty("hasOwnProperty");
          };
        }, 4967: function(e2, t2, r2) {
          var n = r2(5632), a = /^\w*$/;
          e2.exports = function(e3, t3, r3, i) {
            var o, l, s;
            r3 = r3 || "name", i = i || "value";
            var c = {};
            t3 && t3.length ? (s = n(e3, t3), l = s.get()) : l = e3, t3 = t3 || "";
            var u = {};
            if (l) for (o = 0; o < l.length; o++) u[l[o][r3]] = o;
            var f = a.test(i), d = { set: function(e4, t4) {
              var a2 = null === t4 ? 4 : 0;
              if (!l) {
                if (!s || 4 === a2) return;
                l = [], s.set(l);
              }
              var o2 = u[e4];
              if (void 0 === o2) {
                if (4 === a2) return;
                a2 |= 3, o2 = l.length, u[e4] = o2;
              } else t4 !== (f ? l[o2][i] : n(l[o2], i).get()) && (a2 |= 2);
              var h = l[o2] = l[o2] || {};
              return h[r3] = e4, f ? h[i] = t4 : n(h, i).set(t4), null !== t4 && (a2 &= -5), c[o2] = c[o2] | a2, d;
            }, get: function(e4) {
              if (l) {
                var t4 = u[e4];
                return void 0 === t4 ? void 0 : f ? l[t4][i] : n(l[t4], i).get();
              }
            }, rename: function(e4, t4) {
              var n2 = u[e4];
              return void 0 === n2 || (c[n2] = 1 | c[n2], u[t4] = n2, delete u[e4], l[n2][r3] = t4), d;
            }, remove: function(e4) {
              var t4 = u[e4];
              if (void 0 === t4) return d;
              var a2 = l[t4];
              if (Object.keys(a2).length > 2) return c[t4] = 2 | c[t4], d.set(e4, null);
              if (f) {
                for (o = t4; o < l.length; o++) c[o] = 3 | c[o];
                for (o = t4; o < l.length; o++) u[l[o][r3]]--;
                l.splice(t4, 1), delete u[e4];
              } else n(a2, i).set(null), c[t4] = 6 | c[t4];
              return d;
            }, constructUpdate: function() {
              for (var e4, a2, o2 = {}, s2 = Object.keys(c), u2 = 0; u2 < s2.length; u2++) a2 = s2[u2], e4 = t3 + "[" + a2 + "]", l[a2] ? (1 & c[a2] && (o2[e4 + "." + r3] = l[a2][r3]), 2 & c[a2] && (o2[e4 + "." + i] = f ? 4 & c[a2] ? null : l[a2][i] : 4 & c[a2] ? null : n(l[a2], i).get())) : o2[e4] = null;
              return o2;
            } };
            return d;
          };
        }, 8514: function(e2, t2, r2) {
          var n = r2(3626);
          e2.exports = function(e3, t3) {
            for (var r3 = e3._context.locale, a = 0; a < 2; a++) {
              for (var i = e3._context.locales, o = 0; o < 2; o++) {
                var l = (i[r3] || {}).dictionary;
                if (l) {
                  var s = l[t3];
                  if (s) return s;
                }
                i = n.localeRegistry;
              }
              var c = r3.split("-")[0];
              if (c === r3) break;
              r3 = c;
            }
            return t3;
          };
        }, 8636: function(e2, t2, r2) {
          var n = r2(4452).dfltConfig, a = r2(7355), i = e2.exports = {};
          i.log = function() {
            var e3;
            if (n.logging > 1) {
              var t3 = ["LOG:"];
              for (e3 = 0; e3 < arguments.length; e3++) t3.push(arguments[e3]);
              console.trace.apply(console, t3);
            }
            if (n.notifyOnLogging > 1) {
              var r3 = [];
              for (e3 = 0; e3 < arguments.length; e3++) r3.push(arguments[e3]);
              a(r3.join("<br>"), "long");
            }
          }, i.warn = function() {
            var e3;
            if (n.logging > 0) {
              var t3 = ["WARN:"];
              for (e3 = 0; e3 < arguments.length; e3++) t3.push(arguments[e3]);
              console.trace.apply(console, t3);
            }
            if (n.notifyOnLogging > 0) {
              var r3 = [];
              for (e3 = 0; e3 < arguments.length; e3++) r3.push(arguments[e3]);
              a(r3.join("<br>"), "stick");
            }
          }, i.error = function() {
            var e3;
            if (n.logging > 0) {
              var t3 = ["ERROR:"];
              for (e3 = 0; e3 < arguments.length; e3++) t3.push(arguments[e3]);
              console.error.apply(console, t3);
            }
            if (n.notifyOnLogging > 0) {
              var r3 = [];
              for (e3 = 0; e3 < arguments.length; e3++) r3.push(arguments[e3]);
              a(r3.join("<br>"), "stick");
            }
          };
        }, 5944: function(e2, t2, r2) {
          var n = r2(5568);
          e2.exports = function(e3, t3, r3) {
            var a = e3.selectAll("g." + r3.replace(/\s/g, ".")).data(t3, function(e4) {
              return e4[0].trace.uid;
            });
            a.exit().remove(), a.enter().append("g").attr("class", r3), a.order();
            var i = e3.classed("rangeplot") ? "nodeRangePlot3" : "node3";
            return a.each(function(e4) {
              e4[0][i] = n.select(this);
            }), a;
          };
        }, 5236: function(e2, t2, r2) {
          var n = r2(1191);
          t2.init2dArray = function(e3, t3) {
            for (var r3 = new Array(e3), n2 = 0; n2 < e3; n2++) r3[n2] = new Array(t3);
            return r3;
          }, t2.transposeRagged = function(e3) {
            var t3, r3, n2 = 0, a = e3.length;
            for (t3 = 0; t3 < a; t3++) n2 = Math.max(n2, e3[t3].length);
            var i = new Array(n2);
            for (t3 = 0; t3 < n2; t3++) for (i[t3] = new Array(a), r3 = 0; r3 < a; r3++) i[t3][r3] = e3[r3][t3];
            return i;
          }, t2.dot = function(e3, r3) {
            if (!e3.length || !r3.length || e3.length !== r3.length) return null;
            var n2, a, i = e3.length;
            if (e3[0].length) for (n2 = new Array(i), a = 0; a < i; a++) n2[a] = t2.dot(e3[a], r3);
            else if (r3[0].length) {
              var o = t2.transposeRagged(r3);
              for (n2 = new Array(o.length), a = 0; a < o.length; a++) n2[a] = t2.dot(e3, o[a]);
            } else for (n2 = 0, a = 0; a < i; a++) n2 += e3[a] * r3[a];
            return n2;
          }, t2.translationMatrix = function(e3, t3) {
            return [[1, 0, e3], [0, 1, t3], [0, 0, 1]];
          }, t2.rotationMatrix = function(e3) {
            var t3 = e3 * Math.PI / 180;
            return [[Math.cos(t3), -Math.sin(t3), 0], [Math.sin(t3), Math.cos(t3), 0], [0, 0, 1]];
          }, t2.rotationXYMatrix = function(e3, r3, n2) {
            return t2.dot(t2.dot(t2.translationMatrix(r3, n2), t2.rotationMatrix(e3)), t2.translationMatrix(-r3, -n2));
          }, t2.apply3DTransform = function(e3) {
            return function() {
              var r3 = arguments, n2 = 1 === arguments.length ? r3[0] : [r3[0], r3[1], r3[2] || 0];
              return t2.dot(e3, [n2[0], n2[1], n2[2], 1]).slice(0, 3);
            };
          }, t2.apply2DTransform = function(e3) {
            return function() {
              var r3 = arguments;
              3 === r3.length && (r3 = r3[0]);
              var n2 = 1 === arguments.length ? r3[0] : [r3[0], r3[1]];
              return t2.dot(e3, [n2[0], n2[1], 1]).slice(0, 2);
            };
          }, t2.apply2DTransform2 = function(e3) {
            var r3 = t2.apply2DTransform(e3);
            return function(e4) {
              return r3(e4.slice(0, 2)).concat(r3(e4.slice(2, 4)));
            };
          }, t2.convertCssMatrix = function(e3) {
            if (e3) {
              var t3 = e3.length;
              if (16 === t3) return e3;
              if (6 === t3) return [e3[0], e3[1], 0, 0, e3[2], e3[3], 0, 0, 0, 0, 1, 0, e3[4], e3[5], 0, 1];
            }
            return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
          }, t2.inverseTransformMatrix = function(e3) {
            var t3 = [];
            return n.invert(t3, e3), [[t3[0], t3[1], t3[2], t3[3]], [t3[4], t3[5], t3[6], t3[7]], [t3[8], t3[9], t3[10], t3[11]], [t3[12], t3[13], t3[14], t3[15]]];
          };
        }, 8953: function(e2) {
          e2.exports = { mod: function(e3, t2) {
            var r2 = e3 % t2;
            return r2 < 0 ? r2 + t2 : r2;
          }, modHalf: function(e3, t2) {
            return Math.abs(e3) > t2 / 2 ? e3 - Math.round(e3 / t2) * t2 : e3;
          } };
        }, 5632: function(e2, t2, r2) {
          var n = r2(721), a = r2(7800).isArrayOrTypedArray;
          function i(e3, t3) {
            return function() {
              var r3, n2, o2, l2, s2, c2 = e3;
              for (l2 = 0; l2 < t3.length - 1; l2++) {
                if (-1 === (r3 = t3[l2])) {
                  for (n2 = true, o2 = [], s2 = 0; s2 < c2.length; s2++) o2[s2] = i(c2[s2], t3.slice(l2 + 1))(), o2[s2] !== o2[0] && (n2 = false);
                  return n2 ? o2[0] : o2;
                }
                if ("number" == typeof r3 && !a(c2)) return;
                if ("object" != typeof (c2 = c2[r3]) || null === c2) return;
              }
              if ("object" == typeof c2 && null !== c2 && null !== (o2 = c2[t3[l2]])) return o2;
            };
          }
          e2.exports = function(e3, t3) {
            if (n(t3)) t3 = String(t3);
            else if ("string" != typeof t3 || "[-1]" === t3.substr(t3.length - 4)) throw "bad property string";
            var r3, a2, o2, l2, c2 = t3.split(".");
            for (l2 = 0; l2 < c2.length; l2++) if ("__" === String(c2[l2]).slice(0, 2)) throw "bad property string";
            for (l2 = 0; l2 < c2.length; ) {
              if (r3 = String(c2[l2]).match(/^([^\[\]]*)((\[\-?[0-9]*\])+)$/)) {
                if (r3[1]) c2[l2] = r3[1];
                else {
                  if (0 !== l2) throw "bad property string";
                  c2.splice(0, 1);
                }
                for (a2 = r3[2].substr(1, r3[2].length - 2).split("]["), o2 = 0; o2 < a2.length; o2++) l2++, c2.splice(l2, 0, Number(a2[o2]));
              }
              l2++;
            }
            return "object" != typeof e3 ? /* @__PURE__ */ function(e4, t4, r4) {
              return { set: function() {
                throw "bad container";
              }, get: function() {
              }, astr: t4, parts: r4, obj: e4 };
            }(e3, t3, c2) : { set: s(e3, c2, t3), get: i(e3, c2), astr: t3, parts: c2, obj: e3 };
          };
          var o = /(^|\.)args\[/;
          function l(e3, t3) {
            return void 0 === e3 || null === e3 && !t3.match(o);
          }
          function s(e3, t3, r3) {
            return function(n2) {
              var i2, o2, s2 = e3, d = "", p = l(n2, r3);
              for (o2 = 0; o2 < t3.length - 1; o2++) {
                if ("number" == typeof (i2 = t3[o2]) && !a(s2)) throw "array index but container is not an array";
                if (-1 === i2) {
                  if (p = !u(s2, t3.slice(o2 + 1), n2, r3)) break;
                  return;
                }
                if (!f(s2, i2, t3[o2 + 1], p)) break;
                if ("object" != typeof (s2 = s2[i2]) || null === s2) throw "container is not an object";
                d = c(d, i2);
              }
              if (p) {
                if (o2 === t3.length - 1 && (delete s2[t3[o2]], Array.isArray(s2) && +t3[o2] == s2.length - 1)) for (; s2.length && void 0 === s2[s2.length - 1]; ) s2.pop();
              } else s2[t3[o2]] = n2;
            };
          }
          function c(e3, t3) {
            var r3 = t3;
            return n(t3) ? r3 = "[" + t3 + "]" : e3 && (r3 = "." + t3), e3 + r3;
          }
          function u(e3, t3, r3, n2) {
            var i2, o2 = a(r3), c2 = true, u2 = r3, d = n2.replace("-1", 0), h = !o2 && l(r3, d), p = t3[0];
            for (i2 = 0; i2 < e3.length; i2++) d = n2.replace("-1", i2), o2 && (h = l(u2 = r3[i2 % r3.length], d)), h && (c2 = false), f(e3, i2, p, h) && s(e3[i2], t3, n2.replace("-1", i2))(u2);
            return c2;
          }
          function f(e3, t3, r3, n2) {
            if (void 0 === e3[t3]) {
              if (n2) return false;
              e3[t3] = "number" == typeof r3 ? [] : {};
            }
            return true;
          }
        }, 4969: function(e2) {
          e2.exports = function() {
          };
        }, 7355: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = [];
          e2.exports = function(e3, t3) {
            if (-1 === i.indexOf(e3)) {
              i.push(e3);
              var r3 = 1e3;
              a(t3) ? r3 = t3 : "long" === t3 && (r3 = 3e3);
              var o = n.select("body").selectAll(".plotly-notifier").data([0]);
              o.enter().append("div").classed("plotly-notifier", true), o.selectAll(".notifier-note").data(i).enter().append("div").classed("notifier-note", true).style("opacity", 0).each(function(e4) {
                var a2 = n.select(this);
                a2.append("button").classed("notifier-close", true).html("&times;").on("click", function() {
                  a2.transition().call(l);
                });
                for (var i2 = a2.append("p"), o2 = e4.split(/<br\s*\/?>/g), s = 0; s < o2.length; s++) s && i2.append("br"), i2.append("span").text(o2[s]);
                "stick" === t3 ? a2.transition().duration(350).style("opacity", 1) : a2.transition().duration(700).style("opacity", 1).transition().delay(r3).call(l);
              });
            }
            function l(e4) {
              e4.duration(700).style("opacity", 0).each("end", function(e5) {
                var t4 = i.indexOf(e5);
                -1 !== t4 && i.splice(t4, 1), n.select(this).remove();
              });
            }
          };
        }, 3134: function(e2, t2, r2) {
          var n = r2(7983), a = "data-savedcursor";
          e2.exports = function(e3, t3) {
            var r3 = e3.attr(a);
            if (t3) {
              if (!r3) {
                for (var i = (e3.attr("class") || "").split(" "), o = 0; o < i.length; o++) {
                  var l = i[o];
                  0 === l.indexOf("cursor-") && e3.attr(a, l.substr(7)).classed(l, false);
                }
                e3.attr(a) || e3.attr(a, "!!");
              }
              n(e3, t3);
            } else r3 && (e3.attr(a, null), "!!" === r3 ? n(e3) : n(e3, r3));
          };
        }, 899: function(e2, t2, r2) {
          var n = r2(5236).dot, a = r2(3821).BADNUM, i = e2.exports = {};
          i.tester = function(e3) {
            var t3, r3 = e3.slice(), n2 = r3[0][0], i2 = n2, o = r3[0][1], l = o;
            for (r3[r3.length - 1][0] === r3[0][0] && r3[r3.length - 1][1] === r3[0][1] || r3.push(r3[0]), t3 = 1; t3 < r3.length; t3++) n2 = Math.min(n2, r3[t3][0]), i2 = Math.max(i2, r3[t3][0]), o = Math.min(o, r3[t3][1]), l = Math.max(l, r3[t3][1]);
            var s, c = false;
            5 === r3.length && (r3[0][0] === r3[1][0] ? r3[2][0] === r3[3][0] && r3[0][1] === r3[3][1] && r3[1][1] === r3[2][1] && (c = true, s = function(e4) {
              return e4[0] === r3[0][0];
            }) : r3[0][1] === r3[1][1] && r3[2][1] === r3[3][1] && r3[0][0] === r3[3][0] && r3[1][0] === r3[2][0] && (c = true, s = function(e4) {
              return e4[1] === r3[0][1];
            }));
            var u = true, f = r3[0];
            for (t3 = 1; t3 < r3.length; t3++) if (f[0] !== r3[t3][0] || f[1] !== r3[t3][1]) {
              u = false;
              break;
            }
            return { xmin: n2, xmax: i2, ymin: o, ymax: l, pts: r3, contains: c ? function(e4, t4) {
              var r4 = e4[0], c2 = e4[1];
              return !(r4 === a || r4 < n2 || r4 > i2 || c2 === a || c2 < o || c2 > l || t4 && s(e4));
            } : function(e4, t4) {
              var s2 = e4[0], c2 = e4[1];
              if (s2 === a || s2 < n2 || s2 > i2 || c2 === a || c2 < o || c2 > l) return false;
              var u2, f2, d, h, p, v = r3.length, g = r3[0][0], m = r3[0][1], y = 0;
              for (u2 = 1; u2 < v; u2++) if (f2 = g, d = m, g = r3[u2][0], m = r3[u2][1], !(s2 < (h = Math.min(f2, g)) || s2 > Math.max(f2, g) || c2 > Math.max(d, m))) if (c2 < Math.min(d, m)) s2 !== h && y++;
              else {
                if (c2 === (p = g === f2 ? c2 : d + (s2 - f2) * (m - d) / (g - f2))) return 1 !== u2 || !t4;
                c2 <= p && s2 !== h && y++;
              }
              return y % 2 == 1;
            }, isRect: c, degenerate: u };
          }, i.isSegmentBent = function(e3, t3, r3, a2) {
            var i2, o, l, s = e3[t3], c = [e3[r3][0] - s[0], e3[r3][1] - s[1]], u = n(c, c), f = Math.sqrt(u), d = [-c[1] / f, c[0] / f];
            for (i2 = t3 + 1; i2 < r3; i2++) if (o = [e3[i2][0] - s[0], e3[i2][1] - s[1]], (l = n(o, c)) < 0 || l > u || Math.abs(n(o, d)) > a2) return true;
            return false;
          }, i.filter = function(e3, t3) {
            var r3 = [e3[0]], n2 = 0, a2 = 0;
            function o(o2) {
              e3.push(o2);
              var l = r3.length, s = n2;
              r3.splice(a2 + 1);
              for (var c = s + 1; c < e3.length; c++) (c === e3.length - 1 || i.isSegmentBent(e3, s, c + 1, t3)) && (r3.push(e3[c]), r3.length < l - 2 && (n2 = c, a2 = r3.length - 1), s = c);
            }
            return e3.length > 1 && o(e3.pop()), { addPt: o, raw: e3, filtered: r3 };
          };
        }, 2521: function(e2, t2, r2) {
          var n = r2(721), a = r2(3087);
          e2.exports = function(e3) {
            var t3;
            if ("string" != typeof (t3 = e3 && e3.hasOwnProperty("userAgent") ? e3.userAgent : function() {
              var e4;
              return "undefined" != typeof navigator && (e4 = navigator.userAgent), e4 && e4.headers && "string" == typeof e4.headers["user-agent"] && (e4 = e4.headers["user-agent"]), e4;
            }())) return true;
            var r3 = a({ ua: { headers: { "user-agent": t3 } }, tablet: true, featureDetect: false });
            if (!r3) {
              for (var i = t3.split(" "), o = 1; o < i.length; o++) if (-1 !== i[o].indexOf("Safari")) for (var l = o - 1; l > -1; l--) {
                var s = i[l];
                if ("Version/" === s.substr(0, 8)) {
                  var c = s.substr(8).split(".")[0];
                  if (n(c) && (c = +c), c >= 13) return true;
                }
              }
            }
            return r3;
          };
        }, 6539: function(e2) {
          e2.exports = function(e3, t2) {
            if (t2 instanceof RegExp) {
              for (var r2 = t2.toString(), n = 0; n < e3.length; n++) if (e3[n] instanceof RegExp && e3[n].toString() === r2) return e3;
              e3.push(t2);
            } else !t2 && 0 !== t2 || -1 !== e3.indexOf(t2) || e3.push(t2);
            return e3;
          };
        }, 486: function(e2, t2, r2) {
          var n = r2(4809), a = r2(4452).dfltConfig, i = { add: function(e3, t3, r3, n2, i2) {
            var o, l;
            e3.undoQueue = e3.undoQueue || { index: 0, queue: [], sequence: false }, l = e3.undoQueue.index, e3.autoplay ? e3.undoQueue.inSequence || (e3.autoplay = false) : (!e3.undoQueue.sequence || e3.undoQueue.beginSequence ? (o = { undo: { calls: [], args: [] }, redo: { calls: [], args: [] } }, e3.undoQueue.queue.splice(l, e3.undoQueue.queue.length - l, o), e3.undoQueue.index += 1) : o = e3.undoQueue.queue[l - 1], e3.undoQueue.beginSequence = false, o && (o.undo.calls.unshift(t3), o.undo.args.unshift(r3), o.redo.calls.push(n2), o.redo.args.push(i2)), e3.undoQueue.queue.length > a.queueLength && (e3.undoQueue.queue.shift(), e3.undoQueue.index--));
          }, startSequence: function(e3) {
            e3.undoQueue = e3.undoQueue || { index: 0, queue: [], sequence: false }, e3.undoQueue.sequence = true, e3.undoQueue.beginSequence = true;
          }, stopSequence: function(e3) {
            e3.undoQueue = e3.undoQueue || { index: 0, queue: [], sequence: false }, e3.undoQueue.sequence = false, e3.undoQueue.beginSequence = false;
          }, undo: function(e3) {
            var t3, r3;
            if (!(void 0 === e3.undoQueue || isNaN(e3.undoQueue.index) || e3.undoQueue.index <= 0)) {
              for (e3.undoQueue.index--, t3 = e3.undoQueue.queue[e3.undoQueue.index], e3.undoQueue.inSequence = true, r3 = 0; r3 < t3.undo.calls.length; r3++) i.plotDo(e3, t3.undo.calls[r3], t3.undo.args[r3]);
              e3.undoQueue.inSequence = false, e3.autoplay = false;
            }
          }, redo: function(e3) {
            var t3, r3;
            if (!(void 0 === e3.undoQueue || isNaN(e3.undoQueue.index) || e3.undoQueue.index >= e3.undoQueue.queue.length)) {
              for (t3 = e3.undoQueue.queue[e3.undoQueue.index], e3.undoQueue.inSequence = true, r3 = 0; r3 < t3.redo.calls.length; r3++) i.plotDo(e3, t3.redo.calls[r3], t3.redo.args[r3]);
              e3.undoQueue.inSequence = false, e3.autoplay = false, e3.undoQueue.index++;
            }
          }, plotDo: function(e3, t3, r3) {
            e3.autoplay = true, r3 = function(e4, t4) {
              for (var r4, a2 = [], i2 = 0; i2 < t4.length; i2++) r4 = t4[i2], a2[i2] = r4 === e4 ? r4 : "object" == typeof r4 ? Array.isArray(r4) ? n.extendDeep([], r4) : n.extendDeepAll({}, r4) : r4;
              return a2;
            }(e3, r3), t3.apply(null, r3);
          } };
          e2.exports = i;
        }, 694: function(e2, t2) {
          t2.counter = function(e3, t3, r2, n) {
            var a = (t3 || "") + (r2 ? "" : "$"), i = false === n ? "" : "^";
            return "xy" === e3 ? new RegExp(i + "x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?" + a) : new RegExp(i + e3 + "([2-9]|[1-9][0-9]+)?" + a);
          };
        }, 2047: function(e2) {
          var t2 = /^(.*)(\.[^\.\[\]]+|\[\d\])$/, r2 = /^[^\.\[\]]+$/;
          e2.exports = function(e3, n) {
            for (; n; ) {
              var a = e3.match(t2);
              if (a) e3 = a[1];
              else {
                if (!e3.match(r2)) throw new Error("bad relativeAttr call:" + [e3, n]);
                e3 = "";
              }
              if ("^" !== n.charAt(0)) break;
              n = n.slice(1);
            }
            return e3 && "[" !== n.charAt(0) ? e3 + "." + n : e3 + n;
          };
        }, 428: function(e2, t2, r2) {
          var n = r2(7800).isArrayOrTypedArray, a = r2(6174);
          e2.exports = function e3(t3, r3) {
            for (var i in r3) {
              var o = r3[i], l = t3[i];
              if (l !== o) if ("_" === i.charAt(0) || "function" == typeof o) {
                if (i in t3) continue;
                t3[i] = o;
              } else if (n(o) && n(l) && a(o[0])) {
                if ("customdata" === i || "ids" === i) continue;
                for (var s = Math.min(o.length, l.length), c = 0; c < s; c++) l[c] !== o[c] && a(o[c]) && a(l[c]) && e3(l[c], o[c]);
              } else a(o) && a(l) && (e3(l, o), Object.keys(l).length || delete t3[i]);
            }
          };
        }, 8813: function(e2, t2, r2) {
          var n = r2(721), a = r2(8636), i = r2(9527), o = r2(3821).BADNUM, l = 1e-9;
          function s(e3, t3) {
            return e3 < t3;
          }
          function c(e3, t3) {
            return e3 <= t3;
          }
          function u(e3, t3) {
            return e3 > t3;
          }
          function f(e3, t3) {
            return e3 >= t3;
          }
          t2.findBin = function(e3, t3, r3) {
            if (n(t3.start)) return r3 ? Math.ceil((e3 - t3.start) / t3.size - l) - 1 : Math.floor((e3 - t3.start) / t3.size + l);
            var i2, o2, d = 0, h = t3.length, p = 0, v = h > 1 ? (t3[h - 1] - t3[0]) / (h - 1) : 1;
            for (o2 = v >= 0 ? r3 ? s : c : r3 ? f : u, e3 += v * l * (r3 ? -1 : 1) * (v >= 0 ? 1 : -1); d < h && p++ < 100; ) o2(t3[i2 = Math.floor((d + h) / 2)], e3) ? d = i2 + 1 : h = i2;
            return p > 90 && a.log("Long binary search..."), d - 1;
          }, t2.sorterAsc = function(e3, t3) {
            return e3 - t3;
          }, t2.sorterDes = function(e3, t3) {
            return t3 - e3;
          }, t2.distinctVals = function(e3) {
            var r3, n2 = e3.slice();
            for (n2.sort(t2.sorterAsc), r3 = n2.length - 1; r3 > -1 && n2[r3] === o; r3--) ;
            for (var a2, i2 = n2[r3] - n2[0] || 1, l2 = i2 / (r3 || 1) / 1e4, s2 = [], c2 = 0; c2 <= r3; c2++) {
              var u2 = n2[c2], f2 = u2 - a2;
              void 0 === a2 ? (s2.push(u2), a2 = u2) : f2 > l2 && (i2 = Math.min(i2, f2), s2.push(u2), a2 = u2);
            }
            return { vals: s2, minDiff: i2 };
          }, t2.roundUp = function(e3, t3, r3) {
            for (var n2, a2 = 0, i2 = t3.length - 1, o2 = 0, l2 = r3 ? 0 : 1, s2 = r3 ? 1 : 0, c2 = r3 ? Math.ceil : Math.floor; a2 < i2 && o2++ < 100; ) t3[n2 = c2((a2 + i2) / 2)] <= e3 ? a2 = n2 + l2 : i2 = n2 - s2;
            return t3[a2];
          }, t2.sort = function(e3, t3) {
            for (var r3 = 0, n2 = 0, a2 = 1; a2 < e3.length; a2++) {
              var i2 = t3(e3[a2], e3[a2 - 1]);
              if (i2 < 0 ? r3 = 1 : i2 > 0 && (n2 = 1), r3 && n2) return e3.sort(t3);
            }
            return n2 ? e3 : e3.reverse();
          }, t2.findIndexOfMin = function(e3, t3) {
            t3 = t3 || i;
            for (var r3, n2 = 1 / 0, a2 = 0; a2 < e3.length; a2++) {
              var o2 = t3(e3[a2]);
              o2 < n2 && (n2 = o2, r3 = a2);
            }
            return r3;
          };
        }, 7983: function(e2) {
          e2.exports = function(e3, t2) {
            (e3.attr("class") || "").split(" ").forEach(function(t3) {
              0 === t3.indexOf("cursor-") && e3.classed(t3, false);
            }), t2 && e3.classed("cursor-" + t2, true);
          };
        }, 2994: function(e2) {
          e2.exports = function(e3) {
            return Object.keys(e3).sort();
          };
        }, 9258: function(e2, t2, r2) {
          var n = r2(721), a = r2(7800).isArrayOrTypedArray;
          t2.aggNums = function(e3, r3, i, o) {
            var l, s;
            if ((!o || o > i.length) && (o = i.length), n(r3) || (r3 = false), a(i[0])) {
              for (s = new Array(o), l = 0; l < o; l++) s[l] = t2.aggNums(e3, r3, i[l]);
              i = s;
            }
            for (l = 0; l < o; l++) n(r3) ? n(i[l]) && (r3 = e3(+r3, +i[l])) : r3 = i[l];
            return r3;
          }, t2.len = function(e3) {
            return t2.aggNums(function(e4) {
              return e4 + 1;
            }, 0, e3);
          }, t2.mean = function(e3, r3) {
            return r3 || (r3 = t2.len(e3)), t2.aggNums(function(e4, t3) {
              return e4 + t3;
            }, 0, e3) / r3;
          }, t2.geometricMean = function(e3, r3) {
            return r3 || (r3 = t2.len(e3)), Math.pow(t2.aggNums(function(e4, t3) {
              return e4 * t3;
            }, 1, e3), 1 / r3);
          }, t2.midRange = function(e3) {
            if (void 0 !== e3 && 0 !== e3.length) return (t2.aggNums(Math.max, null, e3) + t2.aggNums(Math.min, null, e3)) / 2;
          }, t2.variance = function(e3, r3, a2) {
            return r3 || (r3 = t2.len(e3)), n(a2) || (a2 = t2.mean(e3, r3)), t2.aggNums(function(e4, t3) {
              return e4 + Math.pow(t3 - a2, 2);
            }, 0, e3) / r3;
          }, t2.stdev = function(e3, r3, n2) {
            return Math.sqrt(t2.variance(e3, r3, n2));
          }, t2.median = function(e3) {
            var r3 = e3.slice().sort();
            return t2.interp(r3, 0.5);
          }, t2.interp = function(e3, t3) {
            if (!n(t3)) throw "n should be a finite number";
            if ((t3 = t3 * e3.length - 0.5) < 0) return e3[0];
            if (t3 > e3.length - 1) return e3[e3.length - 1];
            var r3 = t3 % 1;
            return r3 * e3[Math.ceil(t3)] + (1 - r3) * e3[Math.floor(t3)];
          };
        }, 635: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = a.strTranslate, o = r2(2972), l = r2(4530).LINE_SPACING, s = /([^$]*)([$]+[^$]*[$]+)([^$]*)/;
          t2.convertToTspans = function(e3, r3, g2) {
            var L2 = e3.text(), S2 = !e3.attr("data-notex") && r3 && r3._context.typesetMath && "undefined" != typeof MathJax && L2.match(s), D2 = n.select(e3.node().parentNode);
            if (!D2.empty()) {
              var P2 = e3.attr("class") ? e3.attr("class").split(" ")[0] : "text";
              return P2 += "-math", D2.selectAll("svg." + P2).remove(), D2.selectAll("g." + P2 + "-group").remove(), e3.style("display", null).attr({ "data-unformatted": L2, "data-math": "N" }), S2 ? (r3 && r3._promises || []).push(new Promise(function(t3) {
                e3.style("display", "none");
                var r4 = parseInt(e3.node().style.fontSize, 10), o2 = { fontSize: r4 };
                !function(e4, t4, r5) {
                  var i2, o3, l2, s2, d2 = parseInt((MathJax.version || "").split(".")[0]);
                  if (2 === d2 || 3 === d2) {
                    var h2 = function() {
                      var r6 = "math-output-" + a.randstr({}, 64), i3 = (s2 = n.select("body").append("div").attr({ id: r6 }).style({ visibility: "hidden", position: "absolute", "font-size": t4.fontSize + "px" }).text(e4.replace(c, "\\lt ").replace(u, "\\gt "))).node();
                      return 2 === d2 ? MathJax.Hub.Typeset(i3) : MathJax.typeset([i3]);
                    }, p2 = function() {
                      var t5 = s2.select(2 === d2 ? ".MathJax_SVG" : ".MathJax"), i3 = !t5.empty() && s2.select("svg").node();
                      if (i3) {
                        var o4, l3 = i3.getBoundingClientRect();
                        o4 = 2 === d2 ? n.select("body").select("#MathJax_SVG_glyphs") : t5.select("defs"), r5(t5, o4, l3);
                      } else a.log("There was an error in the tex syntax.", e4), r5();
                      s2.remove();
                    };
                    2 === d2 ? MathJax.Hub.Queue(function() {
                      return o3 = a.extendDeepAll({}, MathJax.Hub.config), l2 = MathJax.Hub.processSectionDelay, void 0 !== MathJax.Hub.processSectionDelay && (MathJax.Hub.processSectionDelay = 0), MathJax.Hub.Config({ messageStyle: "none", tex2jax: { inlineMath: f }, displayAlign: "left" });
                    }, function() {
                      if ("SVG" !== (i2 = MathJax.Hub.config.menuSettings.renderer)) return MathJax.Hub.setRenderer("SVG");
                    }, h2, p2, function() {
                      if ("SVG" !== i2) return MathJax.Hub.setRenderer(i2);
                    }, function() {
                      return void 0 !== l2 && (MathJax.Hub.processSectionDelay = l2), MathJax.Hub.Config(o3);
                    }) : 3 === d2 && (o3 = a.extendDeepAll({}, MathJax.config), MathJax.config.tex || (MathJax.config.tex = {}), MathJax.config.tex.inlineMath = f, "svg" !== (i2 = MathJax.config.startup.output) && (MathJax.config.startup.output = "svg"), MathJax.startup.defaultReady(), MathJax.startup.promise.then(function() {
                      h2(), p2(), "svg" !== i2 && (MathJax.config.startup.output = i2), MathJax.config = o3;
                    }));
                  } else a.warn("No MathJax version:", MathJax.version);
                }(S2[2], o2, function(n2, a2, o3) {
                  D2.selectAll("svg." + P2).remove(), D2.selectAll("g." + P2 + "-group").remove();
                  var l2 = n2 && n2.select("svg");
                  if (!l2 || !l2.node()) return z(), void t3();
                  var s2 = D2.append("g").classed(P2 + "-group", true).attr({ "pointer-events": "none", "data-unformatted": L2, "data-math": "Y" });
                  s2.node().appendChild(l2.node()), a2 && a2.node() && l2.node().insertBefore(a2.node().cloneNode(true), l2.node().firstChild);
                  var c2 = o3.width, u2 = o3.height;
                  l2.attr({ class: P2, height: u2, preserveAspectRatio: "xMinYMin meet" }).style({ overflow: "visible", "pointer-events": "none" });
                  var f2 = e3.node().style.fill || "black", d2 = l2.select("g");
                  d2.attr({ fill: f2, stroke: f2 });
                  var h2 = d2.node().getBoundingClientRect(), p2 = h2.width, v2 = h2.height;
                  (p2 > c2 || v2 > u2) && (l2.style("overflow", "hidden"), p2 = (h2 = l2.node().getBoundingClientRect()).width, v2 = h2.height);
                  var m2 = +e3.attr("x"), y2 = +e3.attr("y"), x2 = -(r4 || e3.node().getBoundingClientRect().height) / 4;
                  if ("y" === P2[0]) s2.attr({ transform: "rotate(" + [-90, m2, y2] + ")" + i(-p2 / 2, x2 - v2 / 2) });
                  else if ("l" === P2[0]) y2 = x2 - v2 / 2;
                  else if ("a" === P2[0] && 0 !== P2.indexOf("atitle")) m2 = 0, y2 = x2;
                  else {
                    var b2 = e3.attr("text-anchor");
                    m2 -= p2 * ("middle" === b2 ? 0.5 : "end" === b2 ? 1 : 0), y2 = y2 + x2 - v2 / 2;
                  }
                  l2.attr({ x: m2, y: y2 }), g2 && g2.call(e3, s2), t3(s2);
                });
              })) : z(), e3;
            }
            function z() {
              D2.empty() || (P2 = e3.attr("class") + "-math", D2.select("svg." + P2).remove()), e3.text("").style("white-space", "pre");
              var r4 = function(e4, t3) {
                t3 = t3.replace(m, " ");
                var r5, i2 = false, s2 = [], c2 = -1;
                function u2() {
                  c2++;
                  var t4 = document.createElementNS(o.svg, "tspan");
                  n.select(t4).attr({ class: "line", dy: c2 * l + "em" }), e4.appendChild(t4), r5 = t4;
                  var a2 = s2;
                  if (s2 = [{ node: t4 }], a2.length > 1) for (var i3 = 1; i3 < a2.length; i3++) f2(a2[i3]);
                }
                function f2(e5) {
                  var t4, a2 = e5.type, i3 = {};
                  if ("a" === a2) {
                    t4 = "a";
                    var l2 = e5.target, c3 = e5.href, u3 = e5.popup;
                    c3 && (i3 = { "xlink:xlink:show": "_blank" === l2 || "_" !== l2.charAt(0) ? "new" : "replace", target: l2, "xlink:xlink:href": c3 }, u3 && (i3.onclick = 'window.open(this.href.baseVal,this.target.baseVal,"' + u3 + '");return false;'));
                  } else t4 = "tspan";
                  e5.style && (i3.style = e5.style);
                  var f3 = document.createElementNS(o.svg, t4);
                  if ("sup" === a2 || "sub" === a2) {
                    g3(r5, v), r5.appendChild(f3);
                    var d2 = document.createElementNS(o.svg, "tspan");
                    g3(d2, v), n.select(d2).attr("dy", p[a2]), i3.dy = h[a2], r5.appendChild(f3), r5.appendChild(d2);
                  } else r5.appendChild(f3);
                  n.select(f3).attr(i3), r5 = e5.node = f3, s2.push(e5);
                }
                function g3(e5, t4) {
                  e5.appendChild(document.createTextNode(t4));
                }
                function L3(e5) {
                  if (1 !== s2.length) {
                    var n2 = s2.pop();
                    e5 !== n2.type && a.log("Start tag <" + n2.type + "> doesnt match end tag <" + e5 + ">. Pretending it did match.", t3), r5 = s2[s2.length - 1].node;
                  } else a.log("Ignoring unexpected end tag </" + e5 + ">.", t3);
                }
                b.test(t3) ? u2() : (r5 = e4, s2 = [{ node: e4 }]);
                for (var S3 = t3.split(y), D3 = 0; D3 < S3.length; D3++) {
                  var P3 = S3[D3], z2 = P3.match(x), I = z2 && z2[2].toLowerCase(), E = d[I];
                  if ("br" === I) u2();
                  else if (void 0 === E) g3(r5, C(P3));
                  else if (z2[1]) L3(I);
                  else {
                    var R = z2[4], N = { type: I }, F = k(R, _);
                    if (F ? (F = F.replace(A, "$1 fill:"), E && (F += ";" + E)) : E && (F = E), F && (N.style = F), "a" === I) {
                      i2 = true;
                      var H = k(R, w);
                      if (H) {
                        var B = O(H);
                        B && (N.href = B, N.target = k(R, T) || "_blank", N.popup = k(R, M));
                      }
                    }
                    f2(N);
                  }
                }
                return i2;
              }(e3.node(), L2);
              r4 && e3.style("pointer-events", "all"), t2.positionText(e3), g2 && g2.call(e3);
            }
          };
          var c = /(<|&lt;|&#60;)/g, u = /(>|&gt;|&#62;)/g, f = [["$", "$"], ["\\(", "\\)"]], d = { sup: "font-size:70%", sub: "font-size:70%", s: "text-decoration:line-through", u: "text-decoration:underline", b: "font-weight:bold", i: "font-style:italic", a: "cursor:pointer", span: "", em: "font-style:italic;font-weight:bold" }, h = { sub: "0.3em", sup: "-0.6em" }, p = { sub: "-0.21em", sup: "0.42em" }, v = "​", g = ["http:", "https:", "mailto:", "", void 0, ":"], m = t2.NEWLINES = /(\r\n?|\n)/g, y = /(<[^<>]*>)/, x = /<(\/?)([^ >]*)(\s+(.*))?>/i, b = /<br(\s+.*)?>/i;
          t2.BR_TAG_ALL = /<br(\s+.*)?>/gi;
          var _ = /(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i, w = /(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i, T = /(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i, M = /(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;
          function k(e3, t3) {
            if (!e3) return null;
            var r3 = e3.match(t3), n2 = r3 && (r3[3] || r3[4]);
            return n2 && C(n2);
          }
          var A = /(^|;)\s*color:/;
          t2.plainText = function(e3, t3) {
            for (var r3 = void 0 !== (t3 = t3 || {}).len && -1 !== t3.len ? t3.len : 1 / 0, n2 = void 0 !== t3.allowedTags ? t3.allowedTags : ["br"], a2 = e3.split(y), i2 = [], o2 = "", l2 = 0, s2 = 0; s2 < a2.length; s2++) {
              var c2 = a2[s2], u2 = c2.match(x), f2 = u2 && u2[2].toLowerCase();
              if (f2) -1 !== n2.indexOf(f2) && (i2.push(c2), o2 = f2);
              else {
                var d2 = c2.length;
                if (l2 + d2 < r3) i2.push(c2), l2 += d2;
                else if (l2 < r3) {
                  var h2 = r3 - l2;
                  o2 && ("br" !== o2 || h2 <= 3 || d2 <= 3) && i2.pop(), r3 > 3 ? i2.push(c2.substr(0, h2 - 3) + "...") : i2.push(c2.substr(0, h2));
                  break;
                }
                o2 = "";
              }
            }
            return i2.join("");
          };
          var L = { mu: "μ", amp: "&", lt: "<", gt: ">", nbsp: " ", times: "×", plusmn: "±", deg: "°" }, S = /&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;
          function C(e3) {
            return e3.replace(S, function(e4, t3) {
              return ("#" === t3.charAt(0) ? function(e5) {
                if (!(e5 > 1114111)) {
                  var t4 = String.fromCodePoint;
                  if (t4) return t4(e5);
                  var r3 = String.fromCharCode;
                  return e5 <= 65535 ? r3(e5) : r3(55232 + (e5 >> 10), e5 % 1024 + 56320);
                }
              }("x" === t3.charAt(1) ? parseInt(t3.substr(2), 16) : parseInt(t3.substr(1), 10)) : L[t3]) || e4;
            });
          }
          function O(e3) {
            var t3 = encodeURI(decodeURI(e3)), r3 = document.createElement("a"), n2 = document.createElement("a");
            r3.href = e3, n2.href = t3;
            var a2 = r3.protocol, i2 = n2.protocol;
            return -1 !== g.indexOf(a2) && -1 !== g.indexOf(i2) ? t3 : "";
          }
          function D(e3, t3, r3) {
            var n2, i2, o2, l2 = r3.horizontalAlign, s2 = r3.verticalAlign || "top", c2 = e3.node().getBoundingClientRect(), u2 = t3.node().getBoundingClientRect();
            return i2 = "bottom" === s2 ? function() {
              return c2.bottom - n2.height;
            } : "middle" === s2 ? function() {
              return c2.top + (c2.height - n2.height) / 2;
            } : function() {
              return c2.top;
            }, o2 = "right" === l2 ? function() {
              return c2.right - n2.width;
            } : "center" === l2 ? function() {
              return c2.left + (c2.width - n2.width) / 2;
            } : function() {
              return c2.left;
            }, function() {
              n2 = this.node().getBoundingClientRect();
              var e4 = o2() - u2.left, t4 = i2() - u2.top, l3 = r3.gd || {};
              if (r3.gd) {
                l3._fullLayout._calcInverseTransform(l3);
                var s3 = a.apply3DTransform(l3._fullLayout._invTransform)(e4, t4);
                e4 = s3[0], t4 = s3[1];
              }
              return this.style({ top: t4 + "px", left: e4 + "px", "z-index": 1e3 }), this;
            };
          }
          t2.convertEntities = C, t2.sanitizeHTML = function(e3) {
            e3 = e3.replace(m, " ");
            for (var t3 = document.createElement("p"), r3 = t3, a2 = [], i2 = e3.split(y), o2 = 0; o2 < i2.length; o2++) {
              var l2 = i2[o2], s2 = l2.match(x), c2 = s2 && s2[2].toLowerCase();
              if (c2 in d) if (s2[1]) a2.length && (r3 = a2.pop());
              else {
                var u2 = s2[4], f2 = k(u2, _), h2 = f2 ? { style: f2 } : {};
                if ("a" === c2) {
                  var p2 = k(u2, w);
                  if (p2) {
                    var v2 = O(p2);
                    if (v2) {
                      h2.href = v2;
                      var g2 = k(u2, T);
                      g2 && (h2.target = g2);
                    }
                  }
                }
                var b2 = document.createElement(c2);
                r3.appendChild(b2), n.select(b2).attr(h2), r3 = b2, a2.push(b2);
              }
              else r3.appendChild(document.createTextNode(C(l2)));
            }
            return t3.innerHTML;
          }, t2.lineCount = function(e3) {
            return e3.selectAll("tspan.line").size() || 1;
          }, t2.positionText = function(e3, t3, r3) {
            return e3.each(function() {
              var e4 = n.select(this);
              function a2(t4, r4) {
                return void 0 === r4 ? null === (r4 = e4.attr(t4)) && (e4.attr(t4, 0), r4 = 0) : e4.attr(t4, r4), r4;
              }
              var i2 = a2("x", t3), o2 = a2("y", r3);
              "text" === this.nodeName && e4.selectAll("tspan.line").attr({ x: i2, y: o2 });
            });
          };
          var P = "1px ";
          t2.makeTextShadow = function(e3) {
            return P + P + P + e3 + ", -" + P + "-" + P + P + e3 + ", " + P + "-" + P + P + e3 + ", -" + P + P + P + e3;
          }, t2.makeEditable = function(e3, t3) {
            var r3 = t3.gd, a2 = t3.delegate, i2 = n.dispatch("edit", "input", "cancel"), o2 = a2 || e3;
            if (e3.style({ "pointer-events": a2 ? "none" : "all" }), 1 !== e3.size()) throw new Error("boo");
            function l2() {
              var a3, l3, c2, u2, f2;
              a3 = n.select(r3).select(".svg-container"), l3 = a3.append("div"), c2 = e3.node().style, u2 = parseFloat(c2.fontSize || 12), void 0 === (f2 = t3.text) && (f2 = e3.attr("data-unformatted")), l3.classed("plugin-editable editable", true).style({ position: "absolute", "font-family": c2.fontFamily || "Arial", "font-size": u2, color: t3.fill || c2.fill || "black", opacity: 1, "background-color": t3.background || "transparent", outline: "#ffffff33 1px solid", margin: [-u2 / 8 + 1, 0, 0, -1].join("px ") + "px", padding: "0", "box-sizing": "border-box" }).attr({ contenteditable: true }).text(f2).call(D(e3, a3, t3)).on("blur", function() {
                r3._editing = false, e3.text(this.textContent).style({ opacity: 1 });
                var t4, a4 = n.select(this).attr("class");
                (t4 = a4 ? "." + a4.split(" ")[0] + "-math-group" : "[class*=-math-group]") && n.select(e3.node().parentNode).select(t4).style({ opacity: 0 });
                var o3 = this.textContent;
                n.select(this).transition().duration(0).remove(), n.select(document).on("mouseup", null), i2.edit.call(e3, o3);
              }).on("focus", function() {
                var e4 = this;
                r3._editing = true, n.select(document).on("mouseup", function() {
                  if (n.event.target === e4) return false;
                  document.activeElement === l3.node() && l3.node().blur();
                });
              }).on("keyup", function() {
                27 === n.event.which ? (r3._editing = false, e3.style({ opacity: 1 }), n.select(this).style({ opacity: 0 }).on("blur", function() {
                  return false;
                }).transition().remove(), i2.cancel.call(e3, this.textContent)) : (i2.input.call(e3, this.textContent), n.select(this).call(D(e3, a3, t3)));
              }).on("keydown", function() {
                13 === n.event.which && this.blur();
              }).call(s2), e3.style({ opacity: 0 });
              var d2, h2 = o2.attr("class");
              (d2 = h2 ? "." + h2.split(" ")[0] + "-math-group" : "[class*=-math-group]") && n.select(e3.node().parentNode).select(d2).style({ opacity: 0 });
            }
            function s2(e4) {
              var t4 = e4.node(), r4 = document.createRange();
              r4.selectNodeContents(t4);
              var n2 = window.getSelection();
              n2.removeAllRanges(), n2.addRange(r4), t4.focus();
            }
            return t3.immediate ? l2() : o2.on("click", l2), n.rebind(e3, i2, "on");
          };
        }, 4025: function(e2, t2) {
          var r2 = {};
          function n(e3) {
            e3 && null !== e3.timer && (clearTimeout(e3.timer), e3.timer = null);
          }
          t2.throttle = function(e3, t3, a) {
            var i = r2[e3], o = Date.now();
            if (!i) {
              for (var l in r2) r2[l].ts < o - 6e4 && delete r2[l];
              i = r2[e3] = { ts: 0, timer: null };
            }
            function s() {
              a(), i.ts = Date.now(), i.onDone && (i.onDone(), i.onDone = null);
            }
            n(i), o > i.ts + t3 ? s() : i.timer = setTimeout(function() {
              s(), i.timer = null;
            }, t3);
          }, t2.done = function(e3) {
            var t3 = r2[e3];
            return t3 && t3.timer ? new Promise(function(e4) {
              var r3 = t3.onDone;
              t3.onDone = function() {
                r3 && r3(), e4(), t3.onDone = null;
              };
            }) : Promise.resolve();
          }, t2.clear = function(e3) {
            if (e3) n(r2[e3]), delete r2[e3];
            else for (var a in r2) t2.clear(a);
          };
        }, 8083: function(e2, t2, r2) {
          var n = r2(721);
          e2.exports = function(e3, t3) {
            if (e3 > 0) return Math.log(e3) / Math.LN10;
            var r3 = Math.log(Math.min(t3[0], t3[1])) / Math.LN10;
            return n(r3) || (r3 = Math.log(Math.max(t3[0], t3[1])) / Math.LN10 - 6), r3;
          };
        }, 4611: function(e2) {
          e2.exports = { moduleType: "locale", name: "en-US", dictionary: { "Click to enter Colorscale title": "Click to enter Colorscale title" }, format: { date: "%m/%d/%Y" } };
        }, 227: function(e2) {
          e2.exports = { moduleType: "locale", name: "en", dictionary: { "Click to enter Colorscale title": "Click to enter Colourscale title" }, format: { days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], periods: ["AM", "PM"], dateTime: "%a %b %e %X %Y", date: "%d/%m/%Y", time: "%H:%M:%S", decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""], year: "%Y", month: "%b %Y", dayMonth: "%b %-d", dayMonthYear: "%b %-d, %Y" } };
        }, 6037: function(e2, t2, r2) {
          var n = r2(3626);
          e2.exports = function(e3) {
            for (var t3, r3, a = n.layoutArrayContainers, i = n.layoutArrayRegexes, o = e3.split("[")[0], l = 0; l < i.length; l++) if ((r3 = e3.match(i[l])) && 0 === r3.index) {
              t3 = r3[0];
              break;
            }
            if (t3 || (t3 = a[a.indexOf(o)]), !t3) return false;
            var s = e3.substr(t3.length);
            return s ? !!(r3 = s.match(/^\[(0|[1-9][0-9]*)\](\.(.+))?$/)) && { array: t3, index: Number(r3[1]), property: r3[3] || "" } : { array: t3, index: "", property: "" };
          };
        }, 3582: function(e2, t2, r2) {
          var n = r2(3049).extendFlat, a = r2(6174), i = { valType: "flaglist", extras: ["none"], flags: ["calc", "clearAxisTypes", "plot", "style", "markerSize", "colorbars"] }, o = { valType: "flaglist", extras: ["none"], flags: ["calc", "plot", "legend", "ticks", "axrange", "layoutstyle", "modebar", "camera", "arraydraw", "colorbars"] }, l = i.flags.slice().concat(["fullReplot"]), s = o.flags.slice().concat("layoutReplot");
          function c(e3) {
            for (var t3 = {}, r3 = 0; r3 < e3.length; r3++) t3[e3[r3]] = false;
            return t3;
          }
          function u(e3, t3, r3) {
            var i2 = n({}, e3);
            for (var o2 in i2) {
              var l2 = i2[o2];
              a(l2) && (i2[o2] = f(l2, t3, 0, o2));
            }
            return "from-root" === r3 && (i2.editType = t3), i2;
          }
          function f(e3, t3, r3, a2) {
            if (e3.valType) {
              var i2 = n({}, e3);
              if (i2.editType = t3, Array.isArray(e3.items)) {
                i2.items = new Array(e3.items.length);
                for (var o2 = 0; o2 < e3.items.length; o2++) i2.items[o2] = f(e3.items[o2], t3);
              }
              return i2;
            }
            return u(e3, t3, "_" === a2.charAt(0) ? "nested" : "from-root");
          }
          e2.exports = { traces: i, layout: o, traceFlags: function() {
            return c(l);
          }, layoutFlags: function() {
            return c(s);
          }, update: function(e3, t3) {
            var r3 = t3.editType;
            if (r3 && "none" !== r3) for (var n2 = r3.split("+"), a2 = 0; a2 < n2.length; a2++) e3[n2[a2]] = true;
          }, overrideAll: u };
        }, 887: function(e2, t2, r2) {
          var n = r2(721), a = r2(6472), i = r2(3626), o = r2(4809), l = r2(4122), s = r2(5975), c = r2(8766), u = s.cleanId, f = s.getFromTrace, d = i.traceIs;
          function h(e3, t3) {
            var r3 = e3[t3], n2 = t3.charAt(0);
            r3 && "paper" !== r3 && (e3[t3] = u(r3, n2, true));
          }
          function p(e3) {
            function t3(t4, r3) {
              var n2 = e3[t4], a2 = e3.title && e3.title[r3];
              n2 && !a2 && (e3.title || (e3.title = {}), e3.title[r3] = e3[t4], delete e3[t4]);
            }
            e3 && ("string" != typeof e3.title && "number" != typeof e3.title || (e3.title = { text: e3.title }), t3("titlefont", "font"), t3("titleposition", "position"), t3("titleside", "side"), t3("titleoffset", "offset"));
          }
          function v(e3) {
            if (!o.isPlainObject(e3)) return false;
            var t3 = e3.name;
            return delete e3.name, delete e3.showlegend, ("string" == typeof t3 || "number" == typeof t3) && String(t3);
          }
          function g(e3, t3, r3, n2) {
            if (r3 && !n2) return e3;
            if (n2 && !r3) return t3;
            if (!e3.trim()) return t3;
            if (!t3.trim()) return e3;
            var a2, i2 = Math.min(e3.length, t3.length);
            for (a2 = 0; a2 < i2 && e3.charAt(a2) === t3.charAt(a2); a2++) ;
            return e3.substr(0, a2).trim();
          }
          function m(e3) {
            var t3 = "middle", r3 = "center";
            return "string" == typeof e3 && (-1 !== e3.indexOf("top") ? t3 = "top" : -1 !== e3.indexOf("bottom") && (t3 = "bottom"), -1 !== e3.indexOf("left") ? r3 = "left" : -1 !== e3.indexOf("right") && (r3 = "right")), t3 + " " + r3;
          }
          function y(e3, t3) {
            return t3 in e3 && "object" == typeof e3[t3] && 0 === Object.keys(e3[t3]).length;
          }
          t2.clearPromiseQueue = function(e3) {
            Array.isArray(e3._promises) && e3._promises.length > 0 && o.log("Clearing previous rejected promises from queue."), e3._promises = [];
          }, t2.cleanLayout = function(e3) {
            var r3, n2;
            e3 || (e3 = {}), e3.xaxis1 && (e3.xaxis || (e3.xaxis = e3.xaxis1), delete e3.xaxis1), e3.yaxis1 && (e3.yaxis || (e3.yaxis = e3.yaxis1), delete e3.yaxis1), e3.scene1 && (e3.scene || (e3.scene = e3.scene1), delete e3.scene1);
            var i2 = (l.subplotsRegistry.cartesian || {}).attrRegex, s2 = (l.subplotsRegistry.polar || {}).attrRegex, f2 = (l.subplotsRegistry.ternary || {}).attrRegex, d2 = (l.subplotsRegistry.gl3d || {}).attrRegex, v2 = Object.keys(e3);
            for (r3 = 0; r3 < v2.length; r3++) {
              var g2 = v2[r3];
              if (i2 && i2.test(g2)) {
                var m2 = e3[g2];
                m2.anchor && "free" !== m2.anchor && (m2.anchor = u(m2.anchor)), m2.overlaying && (m2.overlaying = u(m2.overlaying)), m2.type || (m2.isdate ? m2.type = "date" : m2.islog ? m2.type = "log" : false === m2.isdate && false === m2.islog && (m2.type = "linear")), "withzero" !== m2.autorange && "tozero" !== m2.autorange || (m2.autorange = true, m2.rangemode = "tozero"), m2.insiderange && delete m2.range, delete m2.islog, delete m2.isdate, delete m2.categories, y(m2, "domain") && delete m2.domain, void 0 !== m2.autotick && (void 0 === m2.tickmode && (m2.tickmode = m2.autotick ? "auto" : "linear"), delete m2.autotick), p(m2);
              } else if (s2 && s2.test(g2)) p(e3[g2].radialaxis);
              else if (f2 && f2.test(g2)) {
                var x2 = e3[g2];
                p(x2.aaxis), p(x2.baxis), p(x2.caxis);
              } else if (d2 && d2.test(g2)) {
                var b2 = e3[g2], _2 = b2.cameraposition;
                if (Array.isArray(_2) && 4 === _2[0].length) {
                  var w = _2[0], T = _2[1], M = _2[2], k = a([], w), A = [];
                  for (n2 = 0; n2 < 3; ++n2) A[n2] = T[n2] + M * k[2 + 4 * n2];
                  b2.camera = { eye: { x: A[0], y: A[1], z: A[2] }, center: { x: T[0], y: T[1], z: T[2] }, up: { x: 0, y: 0, z: 1 } }, delete b2.cameraposition;
                }
                p(b2.xaxis), p(b2.yaxis), p(b2.zaxis);
              }
            }
            var L = Array.isArray(e3.annotations) ? e3.annotations.length : 0;
            for (r3 = 0; r3 < L; r3++) {
              var S = e3.annotations[r3];
              o.isPlainObject(S) && (S.ref && ("paper" === S.ref ? (S.xref = "paper", S.yref = "paper") : "data" === S.ref && (S.xref = "x", S.yref = "y"), delete S.ref), h(S, "xref"), h(S, "yref"));
            }
            var C = Array.isArray(e3.shapes) ? e3.shapes.length : 0;
            for (r3 = 0; r3 < C; r3++) {
              var O = e3.shapes[r3];
              o.isPlainObject(O) && (h(O, "xref"), h(O, "yref"));
            }
            var D = Array.isArray(e3.images) ? e3.images.length : 0;
            for (r3 = 0; r3 < D; r3++) {
              var P = e3.images[r3];
              o.isPlainObject(P) && (h(P, "xref"), h(P, "yref"));
            }
            var z = e3.legend;
            return z && (z.x > 3 ? (z.x = 1.02, z.xanchor = "left") : z.x < -2 && (z.x = -0.02, z.xanchor = "right"), z.y > 3 ? (z.y = 1.02, z.yanchor = "bottom") : z.y < -2 && (z.y = -0.02, z.yanchor = "top")), p(e3), "rotate" === e3.dragmode && (e3.dragmode = "orbit"), c.clean(e3), e3.template && e3.template.layout && t2.cleanLayout(e3.template.layout), e3;
          }, t2.cleanData = function(e3) {
            for (var r3 = 0; r3 < e3.length; r3++) {
              var n2, a2 = e3[r3];
              if ("histogramy" === a2.type && "xbins" in a2 && !("ybins" in a2) && (a2.ybins = a2.xbins, delete a2.xbins), a2.error_y && "opacity" in a2.error_y) {
                var s2 = c.defaults, f2 = a2.error_y.color || (d(a2, "bar") ? c.defaultLine : s2[r3 % s2.length]);
                a2.error_y.color = c.addOpacity(c.rgb(f2), c.opacity(f2) * a2.error_y.opacity), delete a2.error_y.opacity;
              }
              if ("bardir" in a2 && ("h" !== a2.bardir || !d(a2, "bar") && "histogram" !== a2.type.substr(0, 9) || (a2.orientation = "h", t2.swapXYData(a2)), delete a2.bardir), "histogramy" === a2.type && t2.swapXYData(a2), "histogramx" !== a2.type && "histogramy" !== a2.type || (a2.type = "histogram"), "scl" in a2 && !("colorscale" in a2) && (a2.colorscale = a2.scl, delete a2.scl), "reversescl" in a2 && !("reversescale" in a2) && (a2.reversescale = a2.reversescl, delete a2.reversescl), a2.xaxis && (a2.xaxis = u(a2.xaxis, "x")), a2.yaxis && (a2.yaxis = u(a2.yaxis, "y")), d(a2, "gl3d") && a2.scene && (a2.scene = l.subplotsRegistry.gl3d.cleanId(a2.scene)), !d(a2, "pie-like") && !d(a2, "bar-like")) if (Array.isArray(a2.textposition)) for (n2 = 0; n2 < a2.textposition.length; n2++) a2.textposition[n2] = m(a2.textposition[n2]);
              else a2.textposition && (a2.textposition = m(a2.textposition));
              var h2 = i.getModule(a2);
              if (h2 && h2.colorbar) {
                var x2 = h2.colorbar.container, b2 = x2 ? a2[x2] : a2;
                b2 && b2.colorscale && ("YIGnBu" === b2.colorscale && (b2.colorscale = "YlGnBu"), "YIOrRd" === b2.colorscale && (b2.colorscale = "YlOrRd"));
              }
              if ("surface" === a2.type && o.isPlainObject(a2.contours)) {
                var _2 = ["x", "y", "z"];
                for (n2 = 0; n2 < _2.length; n2++) {
                  var w = a2.contours[_2[n2]];
                  o.isPlainObject(w) && (w.highlightColor && (w.highlightcolor = w.highlightColor, delete w.highlightColor), w.highlightWidth && (w.highlightwidth = w.highlightWidth, delete w.highlightWidth));
                }
              }
              if ("candlestick" === a2.type || "ohlc" === a2.type) {
                var T = false !== (a2.increasing || {}).showlegend, M = false !== (a2.decreasing || {}).showlegend, k = v(a2.increasing), A = v(a2.decreasing);
                if (false !== k && false !== A) {
                  var L = g(k, A, T, M);
                  L && (a2.name = L);
                } else !k && !A || a2.name || (a2.name = k || A);
              }
              if (Array.isArray(a2.transforms)) {
                var S = a2.transforms;
                for (n2 = 0; n2 < S.length; n2++) {
                  var C = S[n2];
                  if (o.isPlainObject(C)) switch (C.type) {
                    case "filter":
                      C.filtersrc && (C.target = C.filtersrc, delete C.filtersrc), C.calendar && (C.valuecalendar || (C.valuecalendar = C.calendar), delete C.calendar);
                      break;
                    case "groupby":
                      if (C.styles = C.styles || C.style, C.styles && !Array.isArray(C.styles)) {
                        var O = C.styles, D = Object.keys(O);
                        C.styles = [];
                        for (var P = 0; P < D.length; P++) C.styles.push({ target: D[P], value: O[D[P]] });
                      }
                  }
                }
              }
              y(a2, "line") && delete a2.line, "marker" in a2 && (y(a2.marker, "line") && delete a2.marker.line, y(a2, "marker") && delete a2.marker), c.clean(a2), a2.autobinx && (delete a2.autobinx, delete a2.xbins), a2.autobiny && (delete a2.autobiny, delete a2.ybins), p(a2), a2.colorbar && p(a2.colorbar), a2.marker && a2.marker.colorbar && p(a2.marker.colorbar), a2.line && a2.line.colorbar && p(a2.line.colorbar), a2.aaxis && p(a2.aaxis), a2.baxis && p(a2.baxis);
            }
          }, t2.swapXYData = function(e3) {
            var t3;
            if (o.swapAttrs(e3, ["?", "?0", "d?", "?bins", "nbins?", "autobin?", "?src", "error_?"]), Array.isArray(e3.z) && Array.isArray(e3.z[0]) && (e3.transpose ? delete e3.transpose : e3.transpose = true), e3.error_x && e3.error_y) {
              var r3 = e3.error_y, n2 = "copy_ystyle" in r3 ? r3.copy_ystyle : !(r3.color || r3.thickness || r3.width);
              o.swapAttrs(e3, ["error_?.copy_ystyle"]), n2 && o.swapAttrs(e3, ["error_?.color", "error_?.thickness", "error_?.width"]);
            }
            if ("string" == typeof e3.hoverinfo) {
              var a2 = e3.hoverinfo.split("+");
              for (t3 = 0; t3 < a2.length; t3++) "x" === a2[t3] ? a2[t3] = "y" : "y" === a2[t3] && (a2[t3] = "x");
              e3.hoverinfo = a2.join("+");
            }
          }, t2.coerceTraceIndices = function(e3, t3) {
            if (n(t3)) return [t3];
            if (!Array.isArray(t3) || !t3.length) return e3.data.map(function(e4, t4) {
              return t4;
            });
            if (Array.isArray(t3)) {
              for (var r3 = [], a2 = 0; a2 < t3.length; a2++) o.isIndex(t3[a2], e3.data.length) ? r3.push(t3[a2]) : o.warn("trace index (", t3[a2], ") is not a number or is out of bounds");
              return r3;
            }
            return t3;
          }, t2.manageArrayContainers = function(e3, t3, r3) {
            var a2 = e3.obj, i2 = e3.parts, l2 = i2.length, s2 = i2[l2 - 1], c2 = n(s2);
            if (c2 && null === t3) {
              var u2 = i2.slice(0, l2 - 1).join(".");
              o.nestedProperty(a2, u2).get().splice(s2, 1);
            } else c2 && void 0 === e3.get() ? (void 0 === e3.get() && (r3[e3.astr] = null), e3.set(t3)) : e3.set(t3);
          };
          var x = /(\.[^\[\]\.]+|\[[^\[\]\.]+\])$/;
          function b(e3) {
            var t3 = e3.search(x);
            if (t3 > 0) return e3.substr(0, t3);
          }
          t2.hasParent = function(e3, t3) {
            for (var r3 = b(t3); r3; ) {
              if (r3 in e3) return true;
              r3 = b(r3);
            }
            return false;
          };
          var _ = ["x", "y", "z"];
          t2.clearAxisTypes = function(e3, t3, r3) {
            for (var n2 = 0; n2 < t3.length; n2++) for (var a2 = e3._fullData[n2], i2 = 0; i2 < 3; i2++) {
              var l2 = f(e3, a2, _[i2]);
              if (l2 && "log" !== l2.type) {
                var s2 = l2._name, c2 = l2._id.substr(1);
                if ("scene" === c2.substr(0, 5)) {
                  if (void 0 !== r3[c2]) continue;
                  s2 = c2 + "." + s2;
                }
                var u2 = s2 + ".type";
                void 0 === r3[s2] && void 0 === r3[u2] && o.nestedProperty(e3.layout, u2).set(null);
              }
            }
          };
        }, 742: function(e2, t2, r2) {
          var n = r2(1420);
          t2._doPlot = n._doPlot, t2.newPlot = n.newPlot, t2.restyle = n.restyle, t2.relayout = n.relayout, t2.redraw = n.redraw, t2.update = n.update, t2._guiRestyle = n._guiRestyle, t2._guiRelayout = n._guiRelayout, t2._guiUpdate = n._guiUpdate, t2._storeDirectGUIEdit = n._storeDirectGUIEdit, t2.react = n.react, t2.extendTraces = n.extendTraces, t2.prependTraces = n.prependTraces, t2.addTraces = n.addTraces, t2.deleteTraces = n.deleteTraces, t2.moveTraces = n.moveTraces, t2.purge = n.purge, t2.addFrames = n.addFrames, t2.deleteFrames = n.deleteFrames, t2.animate = n.animate, t2.setPlotConfig = n.setPlotConfig;
          var a = r2(5425).getGraphDiv, i = r2(8231).eraseActiveShape;
          t2.deleteActiveShape = function(e3) {
            return i(a(e3));
          }, t2.toImage = r2(491), t2.validate = r2(2466), t2.downloadImage = r2(6452);
          var o = r2(3853);
          t2.makeTemplate = o.makeTemplate, t2.validateTemplate = o.validateTemplate;
        }, 5844: function(e2, t2, r2) {
          var n = r2(6174), a = r2(4969), i = r2(8636), o = r2(8813).sorterAsc, l = r2(3626);
          t2.containerArrayMatch = r2(6037);
          var s = t2.isAddVal = function(e3) {
            return "add" === e3 || n(e3);
          }, c = t2.isRemoveVal = function(e3) {
            return null === e3 || "remove" === e3;
          };
          t2.applyContainerArrayChanges = function(e3, t3, r3, n2, u) {
            var f = t3.astr, d = l.getComponentMethod(f, "supplyLayoutDefaults"), h = l.getComponentMethod(f, "draw"), p = l.getComponentMethod(f, "drawOne"), v = n2.replot || n2.recalc || d === a || h === a, g = e3.layout, m = e3._fullLayout;
            if (r3[""]) {
              Object.keys(r3).length > 1 && i.warn("Full array edits are incompatible with other edits", f);
              var y = r3[""][""];
              if (c(y)) t3.set(null);
              else {
                if (!Array.isArray(y)) return i.warn("Unrecognized full array edit value", f, y), true;
                t3.set(y);
              }
              return !v && (d(g, m), h(e3), true);
            }
            var x, b, _, w, T, M, k, A, L = Object.keys(r3).map(Number).sort(o), S = t3.get(), C = S || [], O = u(m, f).get(), D = [], P = -1, z = C.length;
            for (x = 0; x < L.length; x++) if (w = r3[_ = L[x]], T = Object.keys(w), M = w[""], k = s(M), _ < 0 || _ > C.length - (k ? 0 : 1)) i.warn("index out of range", f, _);
            else if (void 0 !== M) T.length > 1 && i.warn("Insertion & removal are incompatible with edits to the same index.", f, _), c(M) ? D.push(_) : k ? ("add" === M && (M = {}), C.splice(_, 0, M), O && O.splice(_, 0, {})) : i.warn("Unrecognized full object edit value", f, _, M), -1 === P && (P = _);
            else for (b = 0; b < T.length; b++) A = f + "[" + _ + "].", u(C[_], T[b], A).set(w[T[b]]);
            for (x = D.length - 1; x >= 0; x--) C.splice(D[x], 1), O && O.splice(D[x], 1);
            if (C.length ? S || t3.set(C) : t3.set(null), v) return false;
            if (d(g, m), p !== a) {
              var I;
              if (-1 === P) I = L;
              else {
                for (z = Math.max(C.length, z), I = [], x = 0; x < L.length && !((_ = L[x]) >= P); x++) I.push(_);
                for (x = P; x < z; x++) I.push(x);
              }
              for (x = 0; x < I.length; x++) p(e3, I[x]);
            } else h(e3);
            return true;
          };
        }, 1420: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(9784), o = r2(4809), l = o.nestedProperty, s = r2(8596), c = r2(486), u = r2(3626), f = r2(7297), d = r2(4122), h = r2(9714), p = r2(259), v = r2(5829), g = r2(2203), m = r2(8766), y = r2(5284).initInteractions, x = r2(2972), b = r2(4844).clearOutline, _ = r2(4452).dfltConfig, w = r2(5844), T = r2(887), M = r2(1817), k = r2(3582), A = r2(4826).AX_NAME_PATTERN, L = 0;
          function S(e3) {
            var t3 = e3._fullLayout;
            t3._redrawFromAutoMarginCount ? t3._redrawFromAutoMarginCount-- : e3.emit("plotly_afterplot");
          }
          function C(e3, t3) {
            try {
              e3._fullLayout._paper.style("background", t3);
            } catch (e4) {
              o.error(e4);
            }
          }
          function O(e3, t3) {
            C(e3, m.combine(t3, "white"));
          }
          function D(e3, t3) {
            if (!e3._context) {
              e3._context = o.extendDeep({}, _);
              var r3 = n.select("base");
              e3._context._baseUrl = r3.size() && r3.attr("href") ? window.location.href.split("#")[0] : "";
            }
            var a2, l2, s2, c2 = e3._context;
            if (t3) {
              for (l2 = Object.keys(t3), a2 = 0; a2 < l2.length; a2++) "editable" !== (s2 = l2[a2]) && "edits" !== s2 && s2 in c2 && ("setBackground" === s2 && "opaque" === t3[s2] ? c2[s2] = O : c2[s2] = t3[s2]);
              t3.plot3dPixelRatio && !c2.plotGlPixelRatio && (c2.plotGlPixelRatio = c2.plot3dPixelRatio);
              var u2 = t3.editable;
              if (void 0 !== u2) for (c2.editable = u2, l2 = Object.keys(c2.edits), a2 = 0; a2 < l2.length; a2++) c2.edits[l2[a2]] = u2;
              if (t3.edits) for (l2 = Object.keys(t3.edits), a2 = 0; a2 < l2.length; a2++) (s2 = l2[a2]) in c2.edits && (c2.edits[s2] = t3.edits[s2]);
              c2._exportedPlot = t3._exportedPlot;
            }
            c2.staticPlot && (c2.editable = false, c2.edits = {}, c2.autosizable = false, c2.scrollZoom = false, c2.doubleClick = false, c2.showTips = false, c2.showLink = false, c2.displayModeBar = false), "hover" !== c2.displayModeBar || i || (c2.displayModeBar = true), "transparent" !== c2.setBackground && "function" == typeof c2.setBackground || (c2.setBackground = C), c2._hasZeroHeight = c2._hasZeroHeight || 0 === e3.clientHeight, c2._hasZeroWidth = c2._hasZeroWidth || 0 === e3.clientWidth;
            var f2 = c2.scrollZoom, d2 = c2._scrollZoom = {};
            if (true === f2) d2.cartesian = 1, d2.gl3d = 1, d2.geo = 1, d2.mapbox = 1, d2.map = 1;
            else if ("string" == typeof f2) {
              var h2 = f2.split("+");
              for (a2 = 0; a2 < h2.length; a2++) d2[h2[a2]] = 1;
            } else false !== f2 && (d2.gl3d = 1, d2.geo = 1, d2.mapbox = 1, d2.map = 1);
          }
          function P(e3, t3) {
            var r3, n2, a2 = t3 + 1, i2 = [];
            for (r3 = 0; r3 < e3.length; r3++) (n2 = e3[r3]) < 0 ? i2.push(a2 + n2) : i2.push(n2);
            return i2;
          }
          function z(e3, t3, r3) {
            var n2, a2;
            for (n2 = 0; n2 < t3.length; n2++) {
              if ((a2 = t3[n2]) !== parseInt(a2, 10)) throw new Error("all values in " + r3 + " must be integers");
              if (a2 >= e3.data.length || a2 < -e3.data.length) throw new Error(r3 + " must be valid indices for gd.data.");
              if (t3.indexOf(a2, n2 + 1) > -1 || a2 >= 0 && t3.indexOf(-e3.data.length + a2) > -1 || a2 < 0 && t3.indexOf(e3.data.length + a2) > -1) throw new Error("each index in " + r3 + " must be unique.");
            }
          }
          function I(e3, t3, r3) {
            if (!Array.isArray(e3.data)) throw new Error("gd.data must be an array.");
            if (void 0 === t3) throw new Error("currentIndices is a required argument.");
            if (Array.isArray(t3) || (t3 = [t3]), z(e3, t3, "currentIndices"), void 0 === r3 || Array.isArray(r3) || (r3 = [r3]), void 0 !== r3 && z(e3, r3, "newIndices"), void 0 !== r3 && t3.length !== r3.length) throw new Error("current and new indices must be of equal length.");
          }
          function E(e3, t3, r3, n2, i2) {
            !function(e4, t4, r4, n3) {
              var a2 = o.isPlainObject(n3);
              if (!Array.isArray(e4.data)) throw new Error("gd.data must be an array");
              if (!o.isPlainObject(t4)) throw new Error("update must be a key:value object");
              if (void 0 === r4) throw new Error("indices must be an integer or array of integers");
              for (var i3 in z(e4, r4, "indices"), t4) {
                if (!Array.isArray(t4[i3]) || t4[i3].length !== r4.length) throw new Error("attribute " + i3 + " must be an array of length equal to indices array length");
                if (a2 && (!(i3 in n3) || !Array.isArray(n3[i3]) || n3[i3].length !== t4[i3].length)) throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object");
              }
            }(e3, t3, r3, n2);
            for (var s2 = function(e4, t4, r4, n3) {
              var i3, s3, c3, u3, f3, d3 = o.isPlainObject(n3), h3 = [];
              for (var p3 in Array.isArray(r4) || (r4 = [r4]), r4 = P(r4, e4.data.length - 1), t4) for (var v2 = 0; v2 < r4.length; v2++) {
                if (i3 = e4.data[r4[v2]], s3 = (c3 = l(i3, p3)).get(), u3 = t4[p3][v2], !o.isArrayOrTypedArray(u3)) throw new Error("attribute: " + p3 + " index: " + v2 + " must be an array");
                if (!o.isArrayOrTypedArray(s3)) throw new Error("cannot extend missing or non-array attribute: " + p3);
                if (s3.constructor !== u3.constructor) throw new Error("cannot extend array with an array of a different type: " + p3);
                f3 = d3 ? n3[p3][v2] : n3, a(f3) || (f3 = -1), h3.push({ prop: c3, target: s3, insert: u3, maxp: Math.floor(f3) });
              }
              return h3;
            }(e3, t3, r3, n2), c2 = {}, u2 = {}, f2 = 0; f2 < s2.length; f2++) {
              var d2 = s2[f2].prop, h2 = s2[f2].maxp, p2 = i2(s2[f2].target, s2[f2].insert, h2);
              d2.set(p2[0]), Array.isArray(c2[d2.astr]) || (c2[d2.astr] = []), c2[d2.astr].push(p2[1]), Array.isArray(u2[d2.astr]) || (u2[d2.astr] = []), u2[d2.astr].push(s2[f2].target.length);
            }
            return { update: c2, maxPoints: u2 };
          }
          function R(e3, t3) {
            var r3 = new e3.constructor(e3.length + t3.length);
            return r3.set(e3), r3.set(t3, e3.length), r3;
          }
          function N(e3, r3, n2, a2) {
            e3 = o.getGraphDiv(e3), T.clearPromiseQueue(e3);
            var i2 = {};
            if ("string" == typeof r3) i2[r3] = n2;
            else {
              if (!o.isPlainObject(r3)) return o.warn("Restyle fail.", r3, n2, a2), Promise.reject();
              i2 = o.extendFlat({}, r3), void 0 === a2 && (a2 = n2);
            }
            Object.keys(i2).length && (e3.changed = true);
            var l2 = T.coerceTraceIndices(e3, a2), s2 = j(e3, i2, l2), u2 = s2.flags;
            u2.calc && (e3.calcdata = void 0), u2.clearAxisTypes && T.clearAxisTypes(e3, l2, {});
            var f2 = [];
            u2.fullReplot ? f2.push(t2._doPlot) : (f2.push(d.previousPromises), d.supplyDefaults(e3), u2.markerSize && (d.doCalcdata(e3), q(f2)), u2.style && f2.push(M.doTraceStyle), u2.colorbars && f2.push(M.doColorBars), f2.push(S)), f2.push(d.rehover, d.redrag, d.reselect), c.add(e3, N, [e3, s2.undoit, s2.traces], N, [e3, s2.redoit, s2.traces]);
            var h2 = o.syncOrAsync(f2, e3);
            return h2 && h2.then || (h2 = Promise.resolve()), h2.then(function() {
              return e3.emit("plotly_restyle", s2.eventData), e3;
            });
          }
          function F(e3) {
            return void 0 === e3 ? null : e3;
          }
          function H(e3, t3) {
            return t3 ? function(t4, r3, n2) {
              var a2 = l(t4, r3), i2 = a2.set;
              return a2.set = function(t5) {
                B((n2 || "") + r3, a2.get(), t5, e3), i2(t5);
              }, a2;
            } : l;
          }
          function B(e3, t3, r3, n2) {
            if (Array.isArray(t3) || Array.isArray(r3)) for (var a2 = Array.isArray(t3) ? t3 : [], i2 = Array.isArray(r3) ? r3 : [], l2 = Math.max(a2.length, i2.length), s2 = 0; s2 < l2; s2++) B(e3 + "[" + s2 + "]", a2[s2], i2[s2], n2);
            else if (o.isPlainObject(t3) || o.isPlainObject(r3)) {
              var c2 = o.isPlainObject(t3) ? t3 : {}, u2 = o.isPlainObject(r3) ? r3 : {}, f2 = o.extendFlat({}, c2, u2);
              for (var d2 in f2) B(e3 + "." + d2, c2[d2], u2[d2], n2);
            } else void 0 === n2[e3] && (n2[e3] = F(t3));
          }
          function j(e3, t3, r3) {
            var n2, a2 = e3._fullLayout, i2 = e3._fullData, s2 = e3.data, c2 = a2._guiEditing, p2 = H(a2._preGUI, c2), v2 = o.extendDeepAll({}, t3);
            Y(t3);
            var g2, m2 = k.traceFlags(), y2 = {}, x2 = {};
            function b2() {
              return r3.map(function() {
              });
            }
            function _2(e4) {
              var t4 = h.id2name(e4);
              -1 === g2.indexOf(t4) && g2.push(t4);
            }
            function w2(e4) {
              return "LAYOUT" + e4 + ".autorange";
            }
            function M2(e4) {
              return "LAYOUT" + e4 + ".range";
            }
            function A2(e4) {
              for (var t4 = e4; t4 < i2.length; t4++) if (i2[t4]._input === s2[e4]) return i2[t4];
            }
            function L2(n3, i3, o2) {
              if (Array.isArray(n3)) n3.forEach(function(e4) {
                L2(e4, i3, o2);
              });
              else if (!(n3 in t3) && !T.hasParent(t3, n3)) {
                var l2;
                if ("LAYOUT" === n3.substr(0, 6)) l2 = p2(e3.layout, n3.replace("LAYOUT", ""));
                else {
                  var u2 = r3[o2];
                  l2 = H(a2._tracePreGUI[A2(u2)._fullInput.uid], c2)(s2[u2], n3);
                }
                n3 in x2 || (x2[n3] = b2()), void 0 === x2[n3][o2] && (x2[n3][o2] = F(l2.get())), void 0 !== i3 && l2.set(i3);
              }
            }
            function S2(e4) {
              return function(t4) {
                return i2[t4][e4];
              };
            }
            function C2(e4) {
              return function(t4, n3) {
                return false === t4 ? i2[r3[n3]][e4] : null;
              };
            }
            for (var O2 in t3) {
              if (T.hasParent(t3, O2)) throw new Error("cannot set " + O2 + " and a parent attribute simultaneously");
              var D2, P2, z2, I2, E2, R2, N2 = t3[O2];
              if ("autobinx" !== O2 && "autobiny" !== O2 || (O2 = O2.charAt(O2.length - 1) + "bins", N2 = Array.isArray(N2) ? N2.map(C2(O2)) : false === N2 ? r3.map(S2(O2)) : null), y2[O2] = N2, "LAYOUT" !== O2.substr(0, 6)) {
                for (x2[O2] = b2(), n2 = 0; n2 < r3.length; n2++) if (D2 = s2[r3[n2]], P2 = A2(r3[n2]), I2 = (z2 = H(a2._tracePreGUI[P2._fullInput.uid], c2)(D2, O2)).get(), void 0 !== (E2 = Array.isArray(N2) ? N2[n2 % N2.length] : N2)) {
                  var B2 = z2.parts[z2.parts.length - 1], j2 = O2.substr(0, O2.length - B2.length - 1), V2 = j2 ? j2 + "." : "", U2 = j2 ? l(P2, j2).get() : P2;
                  if ((R2 = f.getTraceValObject(P2, z2.parts)) && R2.impliedEdits && null !== E2) for (var q2 in R2.impliedEdits) L2(o.relativeAttr(O2, q2), R2.impliedEdits[q2], n2);
                  else if ("thicknessmode" !== B2 && "lenmode" !== B2 || I2 === E2 || "fraction" !== E2 && "pixels" !== E2 || !U2) {
                    if ("type" === O2 && ("pie" === E2 != ("pie" === I2) || "funnelarea" === E2 != ("funnelarea" === I2))) {
                      var G2 = "x", Z2 = "y";
                      "bar" !== E2 && "bar" !== I2 || "h" !== D2.orientation || (G2 = "y", Z2 = "x"), o.swapAttrs(D2, ["?", "?src"], "labels", G2), o.swapAttrs(D2, ["d?", "?0"], "label", G2), o.swapAttrs(D2, ["?", "?src"], "values", Z2), "pie" === I2 || "funnelarea" === I2 ? (l(D2, "marker.color").set(l(D2, "marker.colors").get()), a2._pielayer.selectAll("g.trace").remove()) : u.traceIs(D2, "cartesian") && l(D2, "marker.colors").set(l(D2, "marker.color").get());
                    }
                  } else {
                    var W2 = a2._size, J2 = U2.orient, X2 = "top" === J2 || "bottom" === J2;
                    if ("thicknessmode" === B2) {
                      var K2 = X2 ? W2.h : W2.w;
                      L2(V2 + "thickness", U2.thickness * ("fraction" === E2 ? 1 / K2 : K2), n2);
                    } else {
                      var Q2 = X2 ? W2.w : W2.h;
                      L2(V2 + "len", U2.len * ("fraction" === E2 ? 1 / Q2 : Q2), n2);
                    }
                  }
                  if (x2[O2][n2] = F(I2), -1 !== ["swapxy", "swapxyaxes", "orientation", "orientationaxes"].indexOf(O2)) {
                    if ("orientation" === O2) {
                      z2.set(E2);
                      var $2 = D2.x && !D2.y ? "h" : "v";
                      if ((z2.get() || $2) === P2.orientation) continue;
                    } else "orientationaxes" === O2 && (D2.orientation = { v: "h", h: "v" }[P2.orientation]);
                    T.swapXYData(D2), m2.calc = m2.clearAxisTypes = true;
                  } else -1 !== d.dataArrayContainers.indexOf(z2.parts[0]) ? (T.manageArrayContainers(z2, E2, x2), m2.calc = true) : (R2 ? R2.arrayOk && !u.traceIs(P2, "regl") && (o.isArrayOrTypedArray(E2) || o.isArrayOrTypedArray(I2)) ? m2.calc = true : k.update(m2, R2) : m2.calc = true, z2.set(E2));
                }
                if (-1 !== ["swapxyaxes", "orientationaxes"].indexOf(O2) && h.swap(e3, r3), "orientationaxes" === O2) {
                  var ee2 = l(e3.layout, "hovermode"), te2 = ee2.get();
                  "x" === te2 ? ee2.set("y") : "y" === te2 ? ee2.set("x") : "x unified" === te2 ? ee2.set("y unified") : "y unified" === te2 && ee2.set("x unified");
                }
                if (-1 !== ["orientation", "type"].indexOf(O2)) {
                  for (g2 = [], n2 = 0; n2 < r3.length; n2++) {
                    var re2 = s2[r3[n2]];
                    u.traceIs(re2, "cartesian") && (_2(re2.xaxis || "x"), _2(re2.yaxis || "y"));
                  }
                  L2(g2.map(w2), true, 0), L2(g2.map(M2), [0, 1], 0);
                }
              } else z2 = p2(e3.layout, O2.replace("LAYOUT", "")), x2[O2] = [F(z2.get())], z2.set(Array.isArray(N2) ? N2[0] : N2), m2.calc = true;
            }
            return (m2.calc || m2.plot) && (m2.fullReplot = true), { flags: m2, undoit: x2, redoit: y2, traces: r3, eventData: o.extendDeepNoArrays([], [v2, r3]) };
          }
          function Y(e3) {
            var t3, r3, n2, a2 = o.counterRegex("axis", ".title", false, false), i2 = /colorbar\.title$/, l2 = Object.keys(e3);
            for (t3 = 0; t3 < l2.length; t3++) r3 = l2[t3], n2 = e3[r3], "title" !== r3 && !a2.test(r3) && !i2.test(r3) || "string" != typeof n2 && "number" != typeof n2 ? r3.indexOf("titlefont") > -1 && -1 === r3.indexOf("grouptitlefont") ? s2(r3, r3.replace("titlefont", "title.font")) : r3.indexOf("titleposition") > -1 ? s2(r3, r3.replace("titleposition", "title.position")) : r3.indexOf("titleside") > -1 ? s2(r3, r3.replace("titleside", "title.side")) : r3.indexOf("titleoffset") > -1 && s2(r3, r3.replace("titleoffset", "title.offset")) : s2(r3, r3.replace("title", "title.text"));
            function s2(t4, r4) {
              e3[r4] = e3[t4], delete e3[t4];
            }
          }
          function V(e3, t3, r3) {
            e3 = o.getGraphDiv(e3), T.clearPromiseQueue(e3);
            var n2 = {};
            if ("string" == typeof t3) n2[t3] = r3;
            else {
              if (!o.isPlainObject(t3)) return o.warn("Relayout fail.", t3, r3), Promise.reject();
              n2 = o.extendFlat({}, t3);
            }
            Object.keys(n2).length && (e3.changed = true);
            var a2 = J(e3, n2), i2 = a2.flags;
            i2.calc && (e3.calcdata = void 0);
            var l2 = [d.previousPromises];
            i2.layoutReplot ? l2.push(M.layoutReplot) : Object.keys(n2).length && (U(e3, i2, a2) || d.supplyDefaults(e3), i2.legend && l2.push(M.doLegend), i2.layoutstyle && l2.push(M.layoutStyles), i2.axrange && q(l2, a2.rangesAltered), i2.ticks && l2.push(M.doTicksRelayout), i2.modebar && l2.push(M.doModeBar), i2.camera && l2.push(M.doCamera), i2.colorbars && l2.push(M.doColorBars), l2.push(S)), l2.push(d.rehover, d.redrag, d.reselect), c.add(e3, V, [e3, a2.undoit], V, [e3, a2.redoit]);
            var s2 = o.syncOrAsync(l2, e3);
            return s2 && s2.then || (s2 = Promise.resolve(e3)), s2.then(function() {
              return e3.emit("plotly_relayout", a2.eventData), e3;
            });
          }
          function U(e3, t3, r3) {
            var n2, a2, i2 = e3._fullLayout;
            if (!t3.axrange) return false;
            for (var l2 in t3) if ("axrange" !== l2 && t3[l2]) return false;
            var s2 = function(e4, t4) {
              return o.coerce(n2, a2, v, e4, t4);
            }, c2 = {};
            for (var u2 in r3.rangesAltered) {
              var f2 = h.id2name(u2);
              if (n2 = e3.layout[f2], a2 = i2[f2], p(n2, a2, s2, c2), a2._matchGroup) {
                for (var d2 in a2._matchGroup) if (d2 !== u2) {
                  var g2 = i2[h.id2name(d2)];
                  g2.autorange = a2.autorange, g2.range = a2.range.slice(), g2._input.range = a2.range.slice();
                }
              }
            }
            return true;
          }
          function q(e3, t3) {
            var r3 = t3 ? function(e4) {
              var r4 = [];
              for (var n2 in t3) {
                var a2 = h.getFromId(e4, n2);
                if (r4.push(n2), -1 !== (a2.ticklabelposition || "").indexOf("inside") && a2._anchorAxis && r4.push(a2._anchorAxis._id), a2._matchGroup) for (var i2 in a2._matchGroup) t3[i2] || r4.push(i2);
              }
              return h.draw(e4, r4, { skipTitle: true });
            } : function(e4) {
              return h.draw(e4, "redraw");
            };
            e3.push(b, M.doAutoRangeAndConstraints, r3, M.drawData, M.finalDraw);
          }
          var G = /^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/, Z = /^[xyz]axis[0-9]*\.autorange$/, W = /^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;
          function J(e3, t3) {
            var r3, n2, a2, i2 = e3.layout, s2 = e3._fullLayout, c2 = s2._guiEditing, d2 = H(s2._preGUI, c2), p2 = Object.keys(t3), v2 = h.list(e3), g2 = o.extendDeepAll({}, t3), m2 = {};
            for (Y(t3), p2 = Object.keys(t3), n2 = 0; n2 < p2.length; n2++) if (0 === p2[n2].indexOf("allaxes")) {
              for (a2 = 0; a2 < v2.length; a2++) {
                var y2 = v2[a2]._id.substr(1), x2 = -1 !== y2.indexOf("scene") ? y2 + "." : "", b2 = p2[n2].replace("allaxes", x2 + v2[a2]._name);
                t3[b2] || (t3[b2] = t3[p2[n2]]);
              }
              delete t3[p2[n2]];
            }
            var _2 = k.layoutFlags(), M2 = {}, L2 = {};
            function S2(e4, r4) {
              if (Array.isArray(e4)) e4.forEach(function(e5) {
                S2(e5, r4);
              });
              else if (!(e4 in t3) && !T.hasParent(t3, e4)) {
                var n3 = d2(i2, e4);
                e4 in L2 || (L2[e4] = F(n3.get())), void 0 !== r4 && n3.set(r4);
              }
            }
            var C2, O2 = {};
            function D2(e4) {
              var t4 = h.name2id(e4.split(".")[0]);
              return O2[t4] = 1, t4;
            }
            for (var P2 in t3) {
              if (T.hasParent(t3, P2)) throw new Error("cannot set " + P2 + " and a parent attribute simultaneously");
              for (var z2 = d2(i2, P2), I2 = t3[P2], E2 = z2.parts.length - 1; E2 > 0 && "string" != typeof z2.parts[E2]; ) E2--;
              var R2 = z2.parts[E2], N2 = z2.parts[E2 - 1] + "." + R2, B2 = z2.parts.slice(0, E2).join("."), j2 = l(e3.layout, B2).get(), V2 = l(s2, B2).get(), U2 = z2.get();
              if (void 0 !== I2) {
                M2[P2] = I2, L2[P2] = "reverse" === R2 ? I2 : F(U2);
                var q2 = f.getLayoutValObject(s2, z2.parts);
                if (q2 && q2.impliedEdits && null !== I2) for (var J2 in q2.impliedEdits) S2(o.relativeAttr(P2, J2), q2.impliedEdits[J2]);
                if (-1 !== ["width", "height"].indexOf(P2)) if (I2) {
                  S2("autosize", null);
                  var K2 = "height" === P2 ? "width" : "height";
                  S2(K2, s2[K2]);
                } else s2[P2] = e3._initialAutoSize[P2];
                else if ("autosize" === P2) S2("width", I2 ? null : s2.width), S2("height", I2 ? null : s2.height);
                else if (N2.match(G)) D2(N2), l(s2, B2 + "._inputRange").set(null);
                else if (N2.match(Z)) {
                  D2(N2), l(s2, B2 + "._inputRange").set(null);
                  var Q2 = l(s2, B2).get();
                  Q2._inputDomain && (Q2._input.domain = Q2._inputDomain.slice());
                } else N2.match(W) && l(s2, B2 + "._inputDomain").set(null);
                if ("type" === R2) {
                  C2 = j2;
                  var $2 = "linear" === V2.type && "log" === I2, ee2 = "log" === V2.type && "linear" === I2;
                  if ($2 || ee2) {
                    if (C2 && C2.range) if (V2.autorange) $2 && (C2.range = C2.range[1] > C2.range[0] ? [1, 2] : [2, 1]);
                    else {
                      var te2 = C2.range[0], re2 = C2.range[1];
                      $2 ? (te2 <= 0 && re2 <= 0 && S2(B2 + ".autorange", true), te2 <= 0 ? te2 = re2 / 1e6 : re2 <= 0 && (re2 = te2 / 1e6), S2(B2 + ".range[0]", Math.log(te2) / Math.LN10), S2(B2 + ".range[1]", Math.log(re2) / Math.LN10)) : (S2(B2 + ".range[0]", Math.pow(10, te2)), S2(B2 + ".range[1]", Math.pow(10, re2)));
                    }
                    else S2(B2 + ".autorange", true);
                    Array.isArray(s2._subplots.polar) && s2._subplots.polar.length && s2[z2.parts[0]] && "radialaxis" === z2.parts[1] && delete s2[z2.parts[0]]._subplot.viewInitial["radialaxis.range"], u.getComponentMethod("annotations", "convertCoords")(e3, V2, I2, S2), u.getComponentMethod("images", "convertCoords")(e3, V2, I2, S2);
                  } else S2(B2 + ".autorange", true), S2(B2 + ".range", null);
                  l(s2, B2 + "._inputRange").set(null);
                } else if (R2.match(A)) {
                  var ne2 = l(s2, P2).get(), ae2 = (I2 || {}).type;
                  ae2 && "-" !== ae2 || (ae2 = "linear"), u.getComponentMethod("annotations", "convertCoords")(e3, ne2, ae2, S2), u.getComponentMethod("images", "convertCoords")(e3, ne2, ae2, S2);
                }
                var ie2 = w.containerArrayMatch(P2);
                if (ie2) {
                  r3 = ie2.array, n2 = ie2.index;
                  var oe2 = ie2.property, le2 = q2 || { editType: "calc" };
                  "" !== n2 && "" === oe2 && (w.isAddVal(I2) ? L2[P2] = null : w.isRemoveVal(I2) ? L2[P2] = (l(i2, r3).get() || [])[n2] : o.warn("unrecognized full object value", t3)), k.update(_2, le2), m2[r3] || (m2[r3] = {});
                  var se2 = m2[r3][n2];
                  se2 || (se2 = m2[r3][n2] = {}), se2[oe2] = I2, delete t3[P2];
                } else "reverse" === R2 ? (j2.range ? j2.range.reverse() : (S2(B2 + ".autorange", true), j2.range = [1, 0]), V2.autorange ? _2.calc = true : _2.plot = true) : ("dragmode" === P2 && (false === I2 && false !== U2 || false !== I2 && false === U2) || s2._has("scatter-like") && s2._has("regl") && "dragmode" === P2 && ("lasso" === I2 || "select" === I2) && "lasso" !== U2 && "select" !== U2 || s2._has("gl2d") ? _2.plot = true : q2 ? k.update(_2, q2) : _2.calc = true, z2.set(I2));
              }
            }
            for (r3 in m2) w.applyContainerArrayChanges(e3, d2(i2, r3), m2[r3], _2, d2) || (_2.plot = true);
            for (var ce in O2) {
              var ue = (C2 = h.getFromId(e3, ce)) && C2._constraintGroup;
              if (ue) for (var fe in _2.calc = true, ue) O2[fe] || (h.getFromId(e3, fe)._constraintShrinkable = true);
            }
            (X(e3) || t3.height || t3.width) && (_2.plot = true);
            var de = s2.shapes;
            for (n2 = 0; n2 < de.length; n2++) if (de[n2].showlegend) {
              _2.calc = true;
              break;
            }
            return (_2.plot || _2.calc) && (_2.layoutReplot = true), { flags: _2, rangesAltered: O2, undoit: L2, redoit: M2, eventData: g2 };
          }
          function X(e3) {
            var t3 = e3._fullLayout, r3 = t3.width, n2 = t3.height;
            return e3.layout.autosize && d.plotAutoSize(e3, e3.layout, t3), t3.width !== r3 || t3.height !== n2;
          }
          function K(e3, r3, n2, a2) {
            e3 = o.getGraphDiv(e3), T.clearPromiseQueue(e3), o.isPlainObject(r3) || (r3 = {}), o.isPlainObject(n2) || (n2 = {}), Object.keys(r3).length && (e3.changed = true), Object.keys(n2).length && (e3.changed = true);
            var i2 = T.coerceTraceIndices(e3, a2), l2 = j(e3, o.extendFlat({}, r3), i2), s2 = l2.flags, u2 = J(e3, o.extendFlat({}, n2)), f2 = u2.flags;
            (s2.calc || f2.calc) && (e3.calcdata = void 0), s2.clearAxisTypes && T.clearAxisTypes(e3, i2, n2);
            var h2 = [];
            f2.layoutReplot ? h2.push(M.layoutReplot) : s2.fullReplot ? h2.push(t2._doPlot) : (h2.push(d.previousPromises), U(e3, f2, u2) || d.supplyDefaults(e3), s2.style && h2.push(M.doTraceStyle), (s2.colorbars || f2.colorbars) && h2.push(M.doColorBars), f2.legend && h2.push(M.doLegend), f2.layoutstyle && h2.push(M.layoutStyles), f2.axrange && q(h2, u2.rangesAltered), f2.ticks && h2.push(M.doTicksRelayout), f2.modebar && h2.push(M.doModeBar), f2.camera && h2.push(M.doCamera), h2.push(S)), h2.push(d.rehover, d.redrag, d.reselect), c.add(e3, K, [e3, l2.undoit, u2.undoit, l2.traces], K, [e3, l2.redoit, u2.redoit, l2.traces]);
            var p2 = o.syncOrAsync(h2, e3);
            return p2 && p2.then || (p2 = Promise.resolve(e3)), p2.then(function() {
              return e3.emit("plotly_update", { data: l2.eventData, layout: u2.eventData }), e3;
            });
          }
          function Q(e3) {
            return function(t3) {
              t3._fullLayout._guiEditing = true;
              var r3 = e3.apply(null, arguments);
              return t3._fullLayout._guiEditing = false, r3;
            };
          }
          var $ = [{ pattern: /^hiddenlabels/, attr: "legend.uirevision" }, { pattern: /^((x|y)axis\d*)\.((auto)?range|title\.text)/ }, { pattern: /axis\d*\.showspikes$/, attr: "modebar.uirevision" }, { pattern: /(hover|drag)mode$/, attr: "modebar.uirevision" }, { pattern: /^(scene\d*)\.camera/ }, { pattern: /^(geo\d*)\.(projection|center|fitbounds)/ }, { pattern: /^(ternary\d*\.[abc]axis)\.(min|title\.text)$/ }, { pattern: /^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/ }, { pattern: /^(polar\d*\.angularaxis)\.rotation/ }, { pattern: /^(mapbox\d*)\.(center|zoom|bearing|pitch)/ }, { pattern: /^(map\d*)\.(center|zoom|bearing|pitch)/ }, { pattern: /^legend\.(x|y)$/, attr: "editrevision" }, { pattern: /^(shapes|annotations)/, attr: "editrevision" }, { pattern: /^title\.text$/, attr: "editrevision" }], ee = [{ pattern: /^selectedpoints$/, attr: "selectionrevision" }, { pattern: /(^|value\.)visible$/, attr: "legend.uirevision" }, { pattern: /^dimensions\[\d+\]\.constraintrange/ }, { pattern: /^node\.(x|y|groups)/ }, { pattern: /^level$/ }, { pattern: /(^|value\.)name$/ }, { pattern: /colorbar\.title\.text$/ }, { pattern: /colorbar\.(x|y)$/, attr: "editrevision" }];
          function te(e3, t3) {
            for (var r3 = 0; r3 < t3.length; r3++) {
              var n2 = t3[r3], a2 = e3.match(n2.pattern);
              if (a2) {
                var i2 = a2[1] || "";
                return { head: i2, tail: e3.substr(i2.length + 1), attr: n2.attr };
              }
            }
          }
          function re(e3, t3) {
            var r3 = l(t3, e3).get();
            if (void 0 !== r3) return r3;
            var n2 = e3.split(".");
            for (n2.pop(); n2.length > 1; ) if (n2.pop(), void 0 !== (r3 = l(t3, n2.join(".") + ".uirevision").get())) return r3;
            return t3.uirevision;
          }
          function ne(e3, t3) {
            for (var r3 = 0; r3 < t3.length; r3++) if (t3[r3]._fullInput.uid === e3) return r3;
            return -1;
          }
          function ae(e3, t3, r3) {
            for (var n2 = 0; n2 < t3.length; n2++) if (t3[n2].uid === e3) return n2;
            return !t3[r3] || t3[r3].uid ? -1 : r3;
          }
          function ie(e3, t3) {
            var r3 = o.isPlainObject(e3), n2 = Array.isArray(e3);
            return r3 || n2 ? (r3 && o.isPlainObject(t3) || n2 && Array.isArray(t3)) && JSON.stringify(e3) === JSON.stringify(t3) : e3 === t3;
          }
          function oe(e3, t3, r3, n2) {
            var a2, i2, s2, c2 = n2.getValObject, u2 = n2.flags, f2 = n2.immutable, d2 = n2.inArray, h2 = n2.arrayIndex;
            function p2() {
              var e4 = a2.editType;
              d2 && -1 !== e4.indexOf("arraydraw") ? o.pushUnique(u2.arrays[d2], h2) : (k.update(u2, a2), "none" !== e4 && u2.nChanges++, n2.transition && a2.anim && u2.nChangesAnim++, (G.test(s2) || Z.test(s2)) && (u2.rangesAltered[r3[0]] = 1), W.test(s2) && l(t3, "_inputDomain").set(null), "datarevision" === i2 && (u2.newDataRevision = 1));
            }
            function v2(e4) {
              return "data_array" === e4.valType || e4.arrayOk;
            }
            for (i2 in e3) {
              if (u2.calc && !n2.transition) return;
              var g2 = e3[i2], m2 = t3[i2], y2 = r3.concat(i2);
              if (s2 = y2.join("."), "_" !== i2.charAt(0) && "function" != typeof g2 && g2 !== m2) {
                if (("tick0" === i2 || "dtick" === i2) && "geo" !== r3[0]) {
                  var x2 = t3.tickmode;
                  if ("auto" === x2 || "array" === x2 || !x2) continue;
                }
                if (("range" !== i2 || !t3.autorange) && ("zmin" !== i2 && "zmax" !== i2 || "contourcarpet" !== t3.type) && (a2 = c2(y2)) && (!a2._compareAsJSON || JSON.stringify(g2) !== JSON.stringify(m2))) {
                  var b2, _2 = a2.valType, w2 = v2(a2), T2 = Array.isArray(g2), M2 = Array.isArray(m2);
                  if (T2 && M2) {
                    var A2 = "_input_" + i2, L2 = e3[A2], S2 = t3[A2];
                    if (Array.isArray(L2) && L2 === S2) continue;
                  }
                  if (void 0 === m2) w2 && T2 ? u2.calc = true : p2();
                  else if (a2._isLinkedToArray) {
                    var C2 = [], O2 = false;
                    d2 || (u2.arrays[i2] = C2);
                    var D2 = Math.min(g2.length, m2.length), P2 = Math.max(g2.length, m2.length);
                    if (D2 !== P2) {
                      if ("arraydraw" !== a2.editType) {
                        p2();
                        continue;
                      }
                      O2 = true;
                    }
                    for (b2 = 0; b2 < D2; b2++) oe(g2[b2], m2[b2], y2.concat(b2), o.extendFlat({ inArray: i2, arrayIndex: b2 }, n2));
                    if (O2) for (b2 = D2; b2 < P2; b2++) C2.push(b2);
                  } else !_2 && o.isPlainObject(g2) ? oe(g2, m2, y2, n2) : w2 ? T2 && M2 ? (f2 && (u2.calc = true), (f2 || n2.newDataRevision) && p2()) : T2 !== M2 ? u2.calc = true : p2() : T2 && M2 && g2.length === m2.length && String(g2) === String(m2) || p2();
                }
              }
            }
            for (i2 in t3) if (!(i2 in e3) && "_" !== i2.charAt(0) && "function" != typeof t3[i2]) {
              if (v2(a2 = c2(r3.concat(i2))) && Array.isArray(t3[i2])) return void (u2.calc = true);
              p2();
            }
          }
          function le(e3, t3) {
            var r3;
            for (r3 in e3) if ("_" !== r3.charAt(0)) {
              var n2 = e3[r3], a2 = t3[r3];
              if (n2 !== a2) if (o.isPlainObject(n2) && o.isPlainObject(a2)) {
                if (le(n2, a2)) return true;
              } else {
                if (!Array.isArray(n2) || !Array.isArray(a2)) return true;
                if (n2.length !== a2.length) return true;
                for (var i2 = 0; i2 < n2.length; i2++) if (n2[i2] !== a2[i2]) {
                  if (!o.isPlainObject(n2[i2]) || !o.isPlainObject(a2[i2])) return true;
                  if (le(n2[i2], a2[i2])) return true;
                }
              }
            }
          }
          function se(e3) {
            var t3 = e3._fullLayout, r3 = e3.getBoundingClientRect();
            if (!o.equalDomRects(r3, t3._lastBBox)) {
              var n2 = t3._invTransform = o.inverseTransformMatrix(o.getFullTransformMatrix(e3));
              t3._invScaleX = Math.sqrt(n2[0][0] * n2[0][0] + n2[0][1] * n2[0][1] + n2[0][2] * n2[0][2]), t3._invScaleY = Math.sqrt(n2[1][0] * n2[1][0] + n2[1][1] * n2[1][1] + n2[1][2] * n2[1][2]), t3._lastBBox = r3;
            }
          }
          t2.animate = function(e3, t3, r3) {
            if (e3 = o.getGraphDiv(e3), !o.isPlotDiv(e3)) throw new Error("This element is not a Plotly plot: " + e3 + ". It's likely that you've failed to create a plot before animating it. For more details, see https://plotly.com/javascript/animations/");
            var n2 = e3._transitionData;
            n2._frameQueue || (n2._frameQueue = []);
            var a2 = (r3 = d.supplyAnimationDefaults(r3)).transition, i2 = r3.frame;
            function l2(e4) {
              return Array.isArray(a2) ? e4 >= a2.length ? a2[0] : a2[e4] : a2;
            }
            function s2(e4) {
              return Array.isArray(i2) ? e4 >= i2.length ? i2[0] : i2[e4] : i2;
            }
            function c2(e4, t4) {
              var r4 = 0;
              return function() {
                if (e4 && ++r4 === t4) return e4();
              };
            }
            return void 0 === n2._frameWaitingCnt && (n2._frameWaitingCnt = 0), new Promise(function(i3, u2) {
              function f2() {
                e3.emit("plotly_animating"), n2._lastFrameAt = -1 / 0, n2._timeToNext = 0, n2._runningTransitions = 0, n2._currentFrame = null;
                var t4 = function() {
                  n2._animationRaf = window.requestAnimationFrame(t4), Date.now() - n2._lastFrameAt > n2._timeToNext && function() {
                    n2._currentFrame && n2._currentFrame.onComplete && n2._currentFrame.onComplete();
                    var t5 = n2._currentFrame = n2._frameQueue.shift();
                    if (t5) {
                      var r4 = t5.name ? t5.name.toString() : null;
                      e3._fullLayout._currentFrame = r4, n2._lastFrameAt = Date.now(), n2._timeToNext = t5.frameOpts.duration, d.transition(e3, t5.frame.data, t5.frame.layout, T.coerceTraceIndices(e3, t5.frame.traces), t5.frameOpts, t5.transitionOpts).then(function() {
                        t5.onComplete && t5.onComplete();
                      }), e3.emit("plotly_animatingframe", { name: r4, frame: t5.frame, animation: { frame: t5.frameOpts, transition: t5.transitionOpts } });
                    } else e3.emit("plotly_animated"), window.cancelAnimationFrame(n2._animationRaf), n2._animationRaf = null;
                  }();
                };
                t4();
              }
              var h2, p2, v2 = 0;
              function g2(e4) {
                return Array.isArray(a2) ? v2 >= a2.length ? e4.transitionOpts = a2[v2] : e4.transitionOpts = a2[0] : e4.transitionOpts = a2, v2++, e4;
              }
              var m2 = [], y2 = null == t3, x2 = Array.isArray(t3);
              if (y2 || x2 || !o.isPlainObject(t3)) {
                if (y2 || -1 !== ["string", "number"].indexOf(typeof t3)) for (h2 = 0; h2 < n2._frames.length; h2++) (p2 = n2._frames[h2]) && (y2 || String(p2.group) === String(t3)) && m2.push({ type: "byname", name: String(p2.name), data: g2({ name: p2.name }) });
                else if (x2) for (h2 = 0; h2 < t3.length; h2++) {
                  var b2 = t3[h2];
                  -1 !== ["number", "string"].indexOf(typeof b2) ? (b2 = String(b2), m2.push({ type: "byname", name: b2, data: g2({ name: b2 }) })) : o.isPlainObject(b2) && m2.push({ type: "object", data: g2(o.extendFlat({}, b2)) });
                }
              } else m2.push({ type: "object", data: g2(o.extendFlat({}, t3)) });
              for (h2 = 0; h2 < m2.length; h2++) if ("byname" === (p2 = m2[h2]).type && !n2._frameHash[p2.data.name]) return o.warn('animate failure: frame not found: "' + p2.data.name + '"'), void u2();
              -1 !== ["next", "immediate"].indexOf(r3.mode) && function() {
                if (0 !== n2._frameQueue.length) {
                  for (; n2._frameQueue.length; ) {
                    var t4 = n2._frameQueue.pop();
                    t4.onInterrupt && t4.onInterrupt();
                  }
                  e3.emit("plotly_animationinterrupted", []);
                }
              }(), "reverse" === r3.direction && m2.reverse();
              var _2 = e3._fullLayout._currentFrame;
              if (_2 && r3.fromcurrent) {
                var w2 = -1;
                for (h2 = 0; h2 < m2.length; h2++) if ("byname" === (p2 = m2[h2]).type && p2.name === _2) {
                  w2 = h2;
                  break;
                }
                if (w2 > 0 && w2 < m2.length - 1) {
                  var M2 = [];
                  for (h2 = 0; h2 < m2.length; h2++) p2 = m2[h2], ("byname" !== m2[h2].type || h2 > w2) && M2.push(p2);
                  m2 = M2;
                }
              }
              m2.length > 0 ? function(t4) {
                if (0 !== t4.length) {
                  for (var a3 = 0; a3 < t4.length; a3++) {
                    var o2;
                    o2 = "byname" === t4[a3].type ? d.computeFrame(e3, t4[a3].name) : t4[a3].data;
                    var h3 = s2(a3), p3 = l2(a3);
                    p3.duration = Math.min(p3.duration, h3.duration);
                    var v3 = { frame: o2, name: t4[a3].name, frameOpts: h3, transitionOpts: p3 };
                    a3 === t4.length - 1 && (v3.onComplete = c2(i3, 2), v3.onInterrupt = u2), n2._frameQueue.push(v3);
                  }
                  "immediate" === r3.mode && (n2._lastFrameAt = -1 / 0), n2._animationRaf || f2();
                }
              }(m2) : (e3.emit("plotly_animated"), i3());
            });
          }, t2.addFrames = function(e3, t3, r3) {
            if (e3 = o.getGraphDiv(e3), null == t3) return Promise.resolve();
            if (!o.isPlotDiv(e3)) throw new Error("This element is not a Plotly plot: " + e3 + ". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");
            var n2, a2, i2, l2, s2 = e3._transitionData._frames, u2 = e3._transitionData._frameHash;
            if (!Array.isArray(t3)) throw new Error("addFrames failure: frameList must be an Array of frame definitions" + t3);
            var f2 = s2.length + 2 * t3.length, h2 = [], p2 = {};
            for (n2 = t3.length - 1; n2 >= 0; n2--) if (o.isPlainObject(t3[n2])) {
              var v2 = t3[n2].name, g2 = (u2[v2] || p2[v2] || {}).name, m2 = t3[n2].name, y2 = u2[g2] || p2[g2];
              g2 && m2 && "number" == typeof m2 && y2 && L < 5 && (L++, o.warn('addFrames: overwriting frame "' + (u2[g2] || p2[g2]).name + '" with a frame whose name of type "number" also equates to "' + g2 + '". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'), 5 === L && o.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")), p2[v2] = { name: v2 }, h2.push({ frame: d.supplyFrameDefaults(t3[n2]), index: r3 && void 0 !== r3[n2] && null !== r3[n2] ? r3[n2] : f2 + n2 });
            }
            h2.sort(function(e4, t4) {
              return e4.index > t4.index ? -1 : e4.index < t4.index ? 1 : 0;
            });
            var x2 = [], b2 = [], _2 = s2.length;
            for (n2 = h2.length - 1; n2 >= 0; n2--) {
              if ("number" == typeof (a2 = h2[n2].frame).name && o.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"), !a2.name) for (; u2[a2.name = "frame " + e3._transitionData._counter++]; ) ;
              if (u2[a2.name]) {
                for (i2 = 0; i2 < s2.length && (s2[i2] || {}).name !== a2.name; i2++) ;
                x2.push({ type: "replace", index: i2, value: a2 }), b2.unshift({ type: "replace", index: i2, value: s2[i2] });
              } else l2 = Math.max(0, Math.min(h2[n2].index, _2)), x2.push({ type: "insert", index: l2, value: a2 }), b2.unshift({ type: "delete", index: l2 }), _2++;
            }
            var w2 = d.modifyFrames, T2 = d.modifyFrames, M2 = [e3, b2], k2 = [e3, x2];
            return c && c.add(e3, w2, M2, T2, k2), d.modifyFrames(e3, x2);
          }, t2.deleteFrames = function(e3, t3) {
            if (e3 = o.getGraphDiv(e3), !o.isPlotDiv(e3)) throw new Error("This element is not a Plotly plot: " + e3);
            var r3, n2, a2 = e3._transitionData._frames, i2 = [], l2 = [];
            if (!t3) for (t3 = [], r3 = 0; r3 < a2.length; r3++) t3.push(r3);
            for ((t3 = t3.slice()).sort(), r3 = t3.length - 1; r3 >= 0; r3--) n2 = t3[r3], i2.push({ type: "delete", index: n2 }), l2.unshift({ type: "insert", index: n2, value: a2[n2] });
            var s2 = d.modifyFrames, u2 = d.modifyFrames, f2 = [e3, l2], h2 = [e3, i2];
            return c && c.add(e3, s2, f2, u2, h2), d.modifyFrames(e3, i2);
          }, t2.addTraces = function e3(r3, n2, a2) {
            r3 = o.getGraphDiv(r3);
            var i2, l2, s2 = [], u2 = t2.deleteTraces, f2 = e3, d2 = [r3, s2], h2 = [r3, n2];
            for (function(e4, t3, r4) {
              var n3, a3;
              if (!Array.isArray(e4.data)) throw new Error("gd.data must be an array.");
              if (void 0 === t3) throw new Error("traces must be defined.");
              for (Array.isArray(t3) || (t3 = [t3]), n3 = 0; n3 < t3.length; n3++) if ("object" != typeof (a3 = t3[n3]) || Array.isArray(a3) || null === a3) throw new Error("all values in traces array must be non-array objects");
              if (void 0 === r4 || Array.isArray(r4) || (r4 = [r4]), void 0 !== r4 && r4.length !== t3.length) throw new Error("if indices is specified, traces.length must equal indices.length");
            }(r3, n2, a2), Array.isArray(n2) || (n2 = [n2]), n2 = n2.map(function(e4) {
              return o.extendFlat({}, e4);
            }), T.cleanData(n2), i2 = 0; i2 < n2.length; i2++) r3.data.push(n2[i2]);
            for (i2 = 0; i2 < n2.length; i2++) s2.push(-n2.length + i2);
            if (void 0 === a2) return l2 = t2.redraw(r3), c.add(r3, u2, d2, f2, h2), l2;
            Array.isArray(a2) || (a2 = [a2]);
            try {
              I(r3, s2, a2);
            } catch (e4) {
              throw r3.data.splice(r3.data.length - n2.length, n2.length), e4;
            }
            return c.startSequence(r3), c.add(r3, u2, d2, f2, h2), l2 = t2.moveTraces(r3, s2, a2), c.stopSequence(r3), l2;
          }, t2.deleteTraces = function e3(r3, n2) {
            r3 = o.getGraphDiv(r3);
            var a2, i2, l2 = [], s2 = t2.addTraces, u2 = e3, f2 = [r3, l2, n2], d2 = [r3, n2];
            if (void 0 === n2) throw new Error("indices must be an integer or array of integers.");
            for (Array.isArray(n2) || (n2 = [n2]), z(r3, n2, "indices"), (n2 = P(n2, r3.data.length - 1)).sort(o.sorterDes), a2 = 0; a2 < n2.length; a2 += 1) i2 = r3.data.splice(n2[a2], 1)[0], l2.push(i2);
            var h2 = t2.redraw(r3);
            return c.add(r3, s2, f2, u2, d2), h2;
          }, t2.extendTraces = function e3(r3, n2, a2, i2) {
            var l2 = E(r3 = o.getGraphDiv(r3), n2, a2, i2, function(e4, t3, r4) {
              var n3, a3;
              if (o.isTypedArray(e4)) if (r4 < 0) {
                var i3 = new e4.constructor(0), l3 = R(e4, t3);
                r4 < 0 ? (n3 = l3, a3 = i3) : (n3 = i3, a3 = l3);
              } else if (n3 = new e4.constructor(r4), a3 = new e4.constructor(e4.length + t3.length - r4), r4 === t3.length) n3.set(t3), a3.set(e4);
              else if (r4 < t3.length) {
                var s3 = t3.length - r4;
                n3.set(t3.subarray(s3)), a3.set(e4), a3.set(t3.subarray(0, s3), e4.length);
              } else {
                var c2 = r4 - t3.length, u3 = e4.length - c2;
                n3.set(e4.subarray(u3)), n3.set(t3, c2), a3.set(e4.subarray(0, u3));
              }
              else n3 = e4.concat(t3), a3 = r4 >= 0 && r4 < n3.length ? n3.splice(0, n3.length - r4) : [];
              return [n3, a3];
            }), s2 = t2.redraw(r3), u2 = [r3, l2.update, a2, l2.maxPoints];
            return c.add(r3, t2.prependTraces, u2, e3, arguments), s2;
          }, t2.moveTraces = function e3(r3, n2, a2) {
            var i2, l2 = [], s2 = [], u2 = e3, f2 = e3, d2 = [r3 = o.getGraphDiv(r3), a2, n2], h2 = [r3, n2, a2];
            if (I(r3, n2, a2), n2 = Array.isArray(n2) ? n2 : [n2], void 0 === a2) for (a2 = [], i2 = 0; i2 < n2.length; i2++) a2.push(-n2.length + i2);
            for (a2 = Array.isArray(a2) ? a2 : [a2], n2 = P(n2, r3.data.length - 1), a2 = P(a2, r3.data.length - 1), i2 = 0; i2 < r3.data.length; i2++) -1 === n2.indexOf(i2) && l2.push(r3.data[i2]);
            for (i2 = 0; i2 < n2.length; i2++) s2.push({ newIndex: a2[i2], trace: r3.data[n2[i2]] });
            for (s2.sort(function(e4, t3) {
              return e4.newIndex - t3.newIndex;
            }), i2 = 0; i2 < s2.length; i2 += 1) l2.splice(s2[i2].newIndex, 0, s2[i2].trace);
            r3.data = l2;
            var p2 = t2.redraw(r3);
            return c.add(r3, u2, d2, f2, h2), p2;
          }, t2.prependTraces = function e3(r3, n2, a2, i2) {
            var l2 = E(r3 = o.getGraphDiv(r3), n2, a2, i2, function(e4, t3, r4) {
              var n3, a3;
              if (o.isTypedArray(e4)) if (r4 <= 0) {
                var i3 = new e4.constructor(0), l3 = R(t3, e4);
                r4 < 0 ? (n3 = l3, a3 = i3) : (n3 = i3, a3 = l3);
              } else if (n3 = new e4.constructor(r4), a3 = new e4.constructor(e4.length + t3.length - r4), r4 === t3.length) n3.set(t3), a3.set(e4);
              else if (r4 < t3.length) {
                var s3 = t3.length - r4;
                n3.set(t3.subarray(0, s3)), a3.set(t3.subarray(s3)), a3.set(e4, s3);
              } else {
                var c2 = r4 - t3.length;
                n3.set(t3), n3.set(e4.subarray(0, c2), t3.length), a3.set(e4.subarray(c2));
              }
              else n3 = t3.concat(e4), a3 = r4 >= 0 && r4 < n3.length ? n3.splice(r4, n3.length) : [];
              return [n3, a3];
            }), s2 = t2.redraw(r3), u2 = [r3, l2.update, a2, l2.maxPoints];
            return c.add(r3, t2.extendTraces, u2, e3, arguments), s2;
          }, t2.newPlot = function(e3, r3, n2, a2) {
            return e3 = o.getGraphDiv(e3), d.cleanPlot([], {}, e3._fullData || [], e3._fullLayout || {}), d.purge(e3), t2._doPlot(e3, r3, n2, a2);
          }, t2._doPlot = function(e3, r3, a2, i2) {
            var l2;
            if (e3 = o.getGraphDiv(e3), s.init(e3), o.isPlainObject(r3)) {
              var c2 = r3;
              r3 = c2.data, a2 = c2.layout, i2 = c2.config, l2 = c2.frames;
            }
            if (false === s.triggerHandler(e3, "plotly_beforeplot", [r3, a2, i2])) return Promise.reject();
            r3 || a2 || o.isPlotDiv(e3) || o.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.", e3), D(e3, i2), a2 || (a2 = {}), n.select(e3).classed("js-plotly-plot", true), g.makeTester(), Array.isArray(e3._promises) || (e3._promises = []);
            var f2 = 0 === (e3.data || []).length && Array.isArray(r3);
            Array.isArray(r3) && (T.cleanData(r3), f2 ? e3.data = r3 : e3.data.push.apply(e3.data, r3), e3.empty = false), e3.layout && !f2 || (e3.layout = T.cleanLayout(a2)), d.supplyDefaults(e3);
            var p2 = e3._fullLayout, v2 = p2._has("cartesian");
            p2._replotting = true, (f2 || p2._shouldCreateBgLayer) && (function(e4) {
              var t3 = n.select(e4), r4 = e4._fullLayout;
              if (r4._calcInverseTransform = se, r4._calcInverseTransform(e4), r4._container = t3.selectAll(".plot-container").data([0]), r4._container.enter().insert("div", ":first-child").classed("plot-container", true).classed("plotly", true).style({ width: "100%", height: "100%" }), r4._paperdiv = r4._container.selectAll(".svg-container").data([0]), r4._paperdiv.enter().append("div").classed("user-select-none", true).classed("svg-container", true).style("position", "relative"), r4._glcontainer = r4._paperdiv.selectAll(".gl-container").data([{}]), r4._glcontainer.enter().append("div").classed("gl-container", true), r4._paperdiv.selectAll(".main-svg").remove(), r4._paperdiv.select(".modebar-container").remove(), r4._paper = r4._paperdiv.insert("svg", ":first-child").classed("main-svg", true), r4._toppaper = r4._paperdiv.append("svg").classed("main-svg", true), r4._modebardiv = r4._paperdiv.append("div"), delete r4._modeBar, r4._hoverpaper = r4._paperdiv.append("svg").classed("main-svg", true), !r4._uid) {
                var a3 = {};
                n.selectAll("defs").each(function() {
                  this.id && (a3[this.id.split("-")[1]] = 1);
                }), r4._uid = o.randstr(a3);
              }
              r4._paperdiv.selectAll(".main-svg").attr(x.svgAttrs), r4._defs = r4._paper.append("defs").attr("id", "defs-" + r4._uid), r4._clips = r4._defs.append("g").classed("clips", true), r4._topdefs = r4._toppaper.append("defs").attr("id", "topdefs-" + r4._uid), r4._topclips = r4._topdefs.append("g").classed("clips", true), r4._bgLayer = r4._paper.append("g").classed("bglayer", true), r4._draggers = r4._paper.append("g").classed("draglayer", true);
              var i3 = r4._paper.append("g").classed("layer-below", true);
              r4._imageLowerLayer = i3.append("g").classed("imagelayer", true), r4._shapeLowerLayer = i3.append("g").classed("shapelayer", true), r4._cartesianlayer = r4._paper.append("g").classed("cartesianlayer", true), r4._polarlayer = r4._paper.append("g").classed("polarlayer", true), r4._smithlayer = r4._paper.append("g").classed("smithlayer", true), r4._ternarylayer = r4._paper.append("g").classed("ternarylayer", true), r4._geolayer = r4._paper.append("g").classed("geolayer", true), r4._funnelarealayer = r4._paper.append("g").classed("funnelarealayer", true), r4._pielayer = r4._paper.append("g").classed("pielayer", true), r4._iciclelayer = r4._paper.append("g").classed("iciclelayer", true), r4._treemaplayer = r4._paper.append("g").classed("treemaplayer", true), r4._sunburstlayer = r4._paper.append("g").classed("sunburstlayer", true), r4._indicatorlayer = r4._toppaper.append("g").classed("indicatorlayer", true), r4._glimages = r4._paper.append("g").classed("glimages", true);
              var l3 = r4._toppaper.append("g").classed("layer-above", true);
              r4._imageUpperLayer = l3.append("g").classed("imagelayer", true), r4._shapeUpperLayer = l3.append("g").classed("shapelayer", true), r4._selectionLayer = r4._toppaper.append("g").classed("selectionlayer", true), r4._infolayer = r4._toppaper.append("g").classed("infolayer", true), r4._menulayer = r4._toppaper.append("g").classed("menulayer", true), r4._zoomlayer = r4._toppaper.append("g").classed("zoomlayer", true), r4._hoverlayer = r4._hoverpaper.append("g").classed("hoverlayer", true), r4._modebardiv.classed("modebar-container", true).style("position", "absolute").style("top", "0px").style("right", "0px"), e4.emit("plotly_framework");
            }(e3), p2._shouldCreateBgLayer && delete p2._shouldCreateBgLayer), g.initGradients(e3), g.initPatterns(e3), f2 && h.saveShowSpikeInitial(e3);
            var m2 = !e3.calcdata || e3.calcdata.length !== (e3._fullData || []).length;
            m2 && d.doCalcdata(e3);
            for (var b2 = 0; b2 < e3.calcdata.length; b2++) e3.calcdata[b2][0].trace = e3._fullData[b2];
            e3._context.responsive ? e3._responsiveChartHandler || (e3._responsiveChartHandler = function() {
              o.isHidden(e3) || d.resize(e3);
            }, window.addEventListener("resize", e3._responsiveChartHandler)) : o.clearResponsive(e3);
            var _2 = o.extendFlat({}, p2._size), w2 = 0;
            function k2() {
              if (d.clearAutoMarginIds(e3), M.drawMarginPushers(e3), h.allowAutoMargin(e3), e3._fullLayout.title.text && e3._fullLayout.title.automargin && d.allowAutoMargin(e3, "title.automargin"), p2._has("pie")) for (var t3 = e3._fullData, r4 = 0; r4 < t3.length; r4++) {
                var n2 = t3[r4];
                "pie" === n2.type && n2.automargin && d.allowAutoMargin(e3, "pie." + n2.uid + ".automargin");
              }
              return d.doAutoMargin(e3), d.previousPromises(e3);
            }
            function A2() {
              e3._transitioning || (M.doAutoRangeAndConstraints(e3), f2 && h.saveRangeInitial(e3), u.getComponentMethod("rangeslider", "calcAutorange")(e3));
            }
            var L2 = [d.previousPromises, function() {
              if (l2) return t2.addFrames(e3, l2);
            }, function t3() {
              for (var r4 = p2._basePlotModules, n2 = 0; n2 < r4.length; n2++) r4[n2].drawFramework && r4[n2].drawFramework(e3);
              !p2._glcanvas && p2._has("gl") && (p2._glcanvas = p2._glcontainer.selectAll(".gl-canvas").data([{ key: "contextLayer", context: true, pick: false }, { key: "focusLayer", context: false, pick: false }, { key: "pickLayer", context: false, pick: true }], function(e4) {
                return e4.key;
              }), p2._glcanvas.enter().append("canvas").attr("class", function(e4) {
                return "gl-canvas gl-canvas-" + e4.key.replace("Layer", "");
              }).style({ position: "absolute", top: 0, left: 0, overflow: "visible", "pointer-events": "none" }));
              var a3 = e3._context.plotGlPixelRatio;
              if (p2._glcanvas) {
                p2._glcanvas.attr("width", p2.width * a3).attr("height", p2.height * a3).style("width", p2.width + "px").style("height", p2.height + "px");
                var i3 = p2._glcanvas.data()[0].regl;
                if (i3 && (Math.floor(p2.width * a3) !== i3._gl.drawingBufferWidth || Math.floor(p2.height * a3) !== i3._gl.drawingBufferHeight)) {
                  var l3 = "WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug.";
                  if (!w2) return o.log(l3 + " Clearing graph and plotting again."), d.cleanPlot([], {}, e3._fullData, p2), d.supplyDefaults(e3), p2 = e3._fullLayout, d.doCalcdata(e3), w2++, t3();
                  o.error(l3);
                }
              }
              return "h" === p2.modebar.orientation ? p2._modebardiv.style("height", null).style("width", "100%") : p2._modebardiv.style("width", null).style("height", p2.height + "px"), d.previousPromises(e3);
            }, k2, function() {
              if (d.didMarginChange(_2, p2._size)) return o.syncOrAsync([k2, M.layoutStyles], e3);
            }];
            v2 && L2.push(function() {
              if (m2) return o.syncOrAsync([u.getComponentMethod("shapes", "calcAutorange"), u.getComponentMethod("annotations", "calcAutorange"), A2], e3);
              A2();
            }), L2.push(M.layoutStyles), v2 && L2.push(function() {
              return h.draw(e3, f2 ? "" : "redraw");
            }, function(e4) {
              var t3 = e4._fullLayout._insideTickLabelsUpdaterange;
              if (t3) return e4._fullLayout._insideTickLabelsUpdaterange = void 0, V(e4, t3).then(function() {
                h.saveRangeInitial(e4, true);
              });
            }), L2.push(M.drawData, M.finalDraw, y, d.addLinks, d.rehover, d.redrag, d.reselect, d.doAutoMargin, d.previousPromises);
            var C2 = o.syncOrAsync(L2, e3);
            return C2 && C2.then || (C2 = Promise.resolve()), C2.then(function() {
              return S(e3), e3;
            });
          }, t2.purge = function(e3) {
            var t3 = (e3 = o.getGraphDiv(e3))._fullLayout || {}, r3 = e3._fullData || [];
            return d.cleanPlot([], {}, r3, t3), d.purge(e3), s.purge(e3), t3._container && t3._container.remove(), delete e3._context, e3;
          }, t2.react = function(e3, r3, n2, a2) {
            var i2, s2;
            e3 = o.getGraphDiv(e3), T.clearPromiseQueue(e3);
            var c2 = e3._fullData, h2 = e3._fullLayout;
            if (o.isPlotDiv(e3) && c2 && h2) {
              if (o.isPlainObject(r3)) {
                var p2 = r3;
                r3 = p2.data, n2 = p2.layout, a2 = p2.config, i2 = p2.frames;
              }
              var v2 = false;
              if (a2) {
                var g2 = o.extendDeep({}, e3._context);
                e3._context = void 0, D(e3, a2), v2 = le(g2, e3._context);
              }
              e3.data = r3 || [], T.cleanData(e3.data), e3.layout = n2 || {}, T.cleanLayout(e3.layout), function(e4, t3, r4, n3) {
                var a3, i3, s3, c3, u2, f2, d2, h3, p3, v3, g3 = n3._preGUI, m3 = [], y3 = {}, x3 = {};
                for (a3 in g3) {
                  if (u2 = te(a3, $)) {
                    if (p3 = u2.head, v3 = u2.tail, i3 = u2.attr || p3 + ".uirevision", (c3 = (s3 = l(n3, i3).get()) && re(i3, t3)) && c3 === s3) {
                      if (null === (f2 = g3[a3]) && (f2 = void 0), ie(h3 = (d2 = l(t3, a3)).get(), f2)) {
                        void 0 === h3 && "autorange" === v3 && m3.push(p3), d2.set(F(l(n3, a3).get()));
                        continue;
                      }
                      if ("autorange" === v3 || "range[" === v3.substr(0, 6)) {
                        var b3 = g3[p3 + ".range[0]"], _3 = g3[p3 + ".range[1]"], w3 = g3[p3 + ".autorange"];
                        if (w3 || null === w3 && null === b3 && null === _3) {
                          if (!(p3 in y3)) {
                            var T2 = l(t3, p3).get();
                            y3[p3] = T2 && (T2.autorange || false !== T2.autorange && (!T2.range || 2 !== T2.range.length));
                          }
                          if (y3[p3]) {
                            d2.set(F(l(n3, a3).get()));
                            continue;
                          }
                        }
                      }
                    }
                  } else o.warn("unrecognized GUI edit: " + a3);
                  delete g3[a3], u2 && "range[" === u2.tail.substr(0, 6) && (x3[u2.head] = 1);
                }
                for (var M2 = 0; M2 < m3.length; M2++) {
                  var k2 = m3[M2];
                  if (x3[k2]) {
                    var A3 = l(t3, k2).get();
                    A3 && delete A3.autorange;
                  }
                }
                var L3 = n3._tracePreGUI;
                for (var S2 in L3) {
                  var C3, O3 = L3[S2], D2 = null;
                  for (a3 in O3) {
                    if (!D2) {
                      var P3 = ne(S2, r4);
                      if (P3 < 0) {
                        delete L3[S2];
                        break;
                      }
                      var z3 = ae(S2, e4, (C3 = r4[P3]._fullInput).index);
                      if (z3 < 0) {
                        delete L3[S2];
                        break;
                      }
                      D2 = e4[z3];
                    }
                    if (u2 = te(a3, ee)) {
                      if (u2.attr ? c3 = (s3 = l(n3, u2.attr).get()) && re(u2.attr, t3) : (s3 = C3.uirevision, void 0 === (c3 = D2.uirevision) && (c3 = t3.uirevision)), c3 && c3 === s3 && (null === (f2 = O3[a3]) && (f2 = void 0), ie(h3 = (d2 = l(D2, a3)).get(), f2))) {
                        d2.set(F(l(C3, a3).get()));
                        continue;
                      }
                    } else o.warn("unrecognized GUI edit: " + a3 + " in trace uid " + S2);
                    delete O3[a3];
                  }
                }
              }(e3.data, e3.layout, c2, h2), d.supplyDefaults(e3, { skipUpdateCalc: true });
              var m2 = e3._fullData, y2 = e3._fullLayout, x2 = void 0 === y2.datarevision, b2 = y2.transition, _2 = function(e4, t3, r4, n3, a3) {
                var i3 = k.layoutFlags();
                return i3.arrays = {}, i3.rangesAltered = {}, i3.nChanges = 0, i3.nChangesAnim = 0, oe(t3, r4, [], { getValObject: function(e5) {
                  return f.getLayoutValObject(r4, e5);
                }, flags: i3, immutable: n3, transition: a3, gd: e4 }), (i3.plot || i3.calc) && (i3.layoutReplot = true), a3 && i3.nChanges && i3.nChangesAnim && (i3.anim = i3.nChanges === i3.nChangesAnim ? "all" : "some"), i3;
              }(e3, h2, y2, x2, b2), w2 = _2.newDataRevision, A2 = function(e4, t3, r4, n3, a3, i3) {
                var o2 = t3.length === r4.length;
                if (!a3 && !o2) return { fullReplot: true, calc: true };
                var l2, s3, c3 = k.traceFlags();
                c3.arrays = {}, c3.nChanges = 0, c3.nChangesAnim = 0;
                var u2 = { getValObject: function(e5) {
                  var t4 = f.getTraceValObject(s3, e5);
                  return !s3._module.animatable && t4.anim && (t4.anim = false), t4;
                }, flags: c3, immutable: n3, transition: a3, newDataRevision: i3, gd: e4 }, h3 = {};
                for (l2 = 0; l2 < t3.length; l2++) if (r4[l2]) {
                  if (s3 = r4[l2]._fullInput, d.hasMakesDataTransform(s3) && (s3 = r4[l2]), h3[s3.uid]) continue;
                  h3[s3.uid] = 1, oe(t3[l2]._fullInput, s3, [], u2);
                }
                return (c3.calc || c3.plot) && (c3.fullReplot = true), a3 && c3.nChanges && c3.nChangesAnim && (c3.anim = c3.nChanges === c3.nChangesAnim && o2 ? "all" : "some"), c3;
              }(e3, c2, m2, x2, b2, w2);
              if (X(e3) && (_2.layoutReplot = true), A2.calc || _2.calc) {
                e3.calcdata = void 0;
                for (var L2 = Object.getOwnPropertyNames(y2), C2 = 0; C2 < L2.length; C2++) {
                  var O2 = L2[C2], P2 = O2.substring(0, 5);
                  if ("xaxis" === P2 || "yaxis" === P2) {
                    var z2 = y2[O2]._emptyCategories;
                    z2 && z2();
                  }
                }
              } else d.supplyDefaultsUpdateCalc(e3.calcdata, m2);
              var I2 = [];
              if (i2 && (e3._transitionData = {}, d.createTransitionData(e3), I2.push(function() {
                return t2.addFrames(e3, i2);
              })), y2.transition && !v2 && (A2.anim || _2.anim)) _2.ticks && I2.push(M.doTicksRelayout), d.doCalcdata(e3), M.doAutoRangeAndConstraints(e3), I2.push(function() {
                return d.transitionFromReact(e3, A2, _2, h2);
              });
              else if (A2.fullReplot || _2.layoutReplot || v2) e3._fullLayout._skipDefaults = true, I2.push(t2._doPlot);
              else {
                for (var E2 in _2.arrays) {
                  var R2 = _2.arrays[E2];
                  if (R2.length) {
                    var N2 = u.getComponentMethod(E2, "drawOne");
                    if (N2 !== o.noop) for (var H2 = 0; H2 < R2.length; H2++) N2(e3, R2[H2]);
                    else {
                      var B2 = u.getComponentMethod(E2, "draw");
                      if (B2 === o.noop) throw new Error("cannot draw components: " + E2);
                      B2(e3);
                    }
                  }
                }
                I2.push(d.previousPromises), A2.style && I2.push(M.doTraceStyle), (A2.colorbars || _2.colorbars) && I2.push(M.doColorBars), _2.legend && I2.push(M.doLegend), _2.layoutstyle && I2.push(M.layoutStyles), _2.axrange && q(I2), _2.ticks && I2.push(M.doTicksRelayout), _2.modebar && I2.push(M.doModeBar), _2.camera && I2.push(M.doCamera), I2.push(S);
              }
              I2.push(d.rehover, d.redrag, d.reselect), (s2 = o.syncOrAsync(I2, e3)) && s2.then || (s2 = Promise.resolve(e3));
            } else s2 = t2.newPlot(e3, r3, n2, a2);
            return s2.then(function() {
              return e3.emit("plotly_react", { data: r3, layout: n2 }), e3;
            });
          }, t2.redraw = function(e3) {
            if (e3 = o.getGraphDiv(e3), !o.isPlotDiv(e3)) throw new Error("This element is not a Plotly plot: " + e3);
            return T.cleanData(e3.data), T.cleanLayout(e3.layout), e3.calcdata = void 0, t2._doPlot(e3).then(function() {
              return e3.emit("plotly_redraw"), e3;
            });
          }, t2.relayout = V, t2.restyle = N, t2.setPlotConfig = function(e3) {
            return o.extendFlat(_, e3);
          }, t2.update = K, t2._guiRelayout = Q(V), t2._guiRestyle = Q(N), t2._guiUpdate = Q(K), t2._storeDirectGUIEdit = function(e3, t3, r3) {
            for (var n2 in r3) B(n2, l(e3, n2).get(), r3[n2], t3);
          };
        }, 4452: function(e2) {
          var t2 = { staticPlot: { valType: "boolean", dflt: false }, typesetMath: { valType: "boolean", dflt: true }, plotlyServerURL: { valType: "string", dflt: "" }, editable: { valType: "boolean", dflt: false }, edits: { annotationPosition: { valType: "boolean", dflt: false }, annotationTail: { valType: "boolean", dflt: false }, annotationText: { valType: "boolean", dflt: false }, axisTitleText: { valType: "boolean", dflt: false }, colorbarPosition: { valType: "boolean", dflt: false }, colorbarTitleText: { valType: "boolean", dflt: false }, legendPosition: { valType: "boolean", dflt: false }, legendText: { valType: "boolean", dflt: false }, shapePosition: { valType: "boolean", dflt: false }, titleText: { valType: "boolean", dflt: false } }, editSelection: { valType: "boolean", dflt: true }, autosizable: { valType: "boolean", dflt: false }, responsive: { valType: "boolean", dflt: false }, fillFrame: { valType: "boolean", dflt: false }, frameMargins: { valType: "number", dflt: 0, min: 0, max: 0.5 }, scrollZoom: { valType: "flaglist", flags: ["cartesian", "gl3d", "geo", "mapbox", "map"], extras: [true, false], dflt: "gl3d+geo+map" }, doubleClick: { valType: "enumerated", values: [false, "reset", "autosize", "reset+autosize"], dflt: "reset+autosize" }, doubleClickDelay: { valType: "number", dflt: 300, min: 0 }, showAxisDragHandles: { valType: "boolean", dflt: true }, showAxisRangeEntryBoxes: { valType: "boolean", dflt: true }, showTips: { valType: "boolean", dflt: true }, showLink: { valType: "boolean", dflt: false }, linkText: { valType: "string", dflt: "Edit chart", noBlank: true }, sendData: { valType: "boolean", dflt: true }, showSources: { valType: "any", dflt: false }, displayModeBar: { valType: "enumerated", values: ["hover", true, false], dflt: "hover" }, showSendToCloud: { valType: "boolean", dflt: false }, showEditInChartStudio: { valType: "boolean", dflt: false }, modeBarButtonsToRemove: { valType: "any", dflt: [] }, modeBarButtonsToAdd: { valType: "any", dflt: [] }, modeBarButtons: { valType: "any", dflt: false }, toImageButtonOptions: { valType: "any", dflt: {} }, displaylogo: { valType: "boolean", dflt: true }, watermark: { valType: "boolean", dflt: false }, plotGlPixelRatio: { valType: "number", dflt: 2, min: 1, max: 4 }, setBackground: { valType: "any", dflt: "transparent" }, topojsonURL: { valType: "string", noBlank: true, dflt: "https://cdn.plot.ly/" }, mapboxAccessToken: { valType: "string", dflt: null }, logging: { valType: "integer", min: 0, max: 2, dflt: 1 }, notifyOnLogging: { valType: "integer", min: 0, max: 2, dflt: 0 }, queueLength: { valType: "integer", min: 0, dflt: 0 }, globalTransforms: { valType: "any", dflt: [] }, locale: { valType: "string", dflt: "en-US" }, locales: { valType: "any", dflt: {} } }, r2 = {};
          !function e3(t3, r3) {
            for (var n in t3) {
              var a = t3[n];
              a.valType ? r3[n] = a.dflt : (r3[n] || (r3[n] = {}), e3(a, r3[n]));
            }
          }(t2, r2), e2.exports = { configAttributes: t2, dfltConfig: r2 };
        }, 7297: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809), i = r2(9829), o = r2(6704), l = r2(8935), s = r2(9722), c = r2(4452).configAttributes, u = r2(3582), f = a.extendDeepAll, d = a.isPlainObject, h = a.isArrayOrTypedArray, p = a.nestedProperty, v = a.valObjectMeta, g = "_isSubplotObj", m = "_isLinkedToArray", y = "_deprecated", x = [g, m, "_arrayAttrRegexps", y];
          function b(e3, t3, r3) {
            if (!e3) return false;
            if (e3._isLinkedToArray) {
              if (_(t3[r3])) r3++;
              else if (r3 < t3.length) return false;
            }
            for (; r3 < t3.length; r3++) {
              var n2 = e3[t3[r3]];
              if (!d(n2)) break;
              if (e3 = n2, r3 === t3.length - 1) break;
              if (e3._isLinkedToArray) {
                if (!_(t3[++r3])) return false;
              } else if ("info_array" === e3.valType) {
                var a2 = t3[++r3];
                if (!_(a2)) return false;
                var i2 = e3.items;
                if (Array.isArray(i2)) {
                  if (a2 >= i2.length) return false;
                  if (2 === e3.dimensions) {
                    if (r3++, t3.length === r3) return e3;
                    var o2 = t3[r3];
                    if (!_(o2)) return false;
                    e3 = i2[a2][o2];
                  } else e3 = i2[a2];
                } else e3 = i2;
              }
            }
            return e3;
          }
          function _(e3) {
            return e3 === Math.round(e3) && e3 >= 0;
          }
          function w() {
            var e3, t3, r3 = {};
            for (e3 in f(r3, o), n.subplotsRegistry) if ((t3 = n.subplotsRegistry[e3]).layoutAttributes) if (Array.isArray(t3.attr)) for (var a2 = 0; a2 < t3.attr.length; a2++) M(r3, t3, t3.attr[a2]);
            else M(r3, t3, "subplot" === t3.attr ? t3.name : t3.attr);
            for (e3 in n.componentsRegistry) {
              var i2 = (t3 = n.componentsRegistry[e3]).schema;
              if (i2 && (i2.subplots || i2.layout)) {
                var l2 = i2.subplots;
                if (l2 && l2.xaxis && !l2.yaxis) for (var s2 in l2.xaxis) delete r3.yaxis[s2];
                delete r3.xaxis.shift, delete r3.xaxis.autoshift;
              } else "colorscale" === t3.name ? f(r3, t3.layoutAttributes) : t3.layoutAttributes && k(r3, t3.layoutAttributes, t3.name);
            }
            return { layoutAttributes: T(r3) };
          }
          function T(e3) {
            return function(e4) {
              t2.crawl(e4, function(e5, r3, n2) {
                t2.isValObject(e5) ? true !== e5.arrayOk && "data_array" !== e5.valType || (n2[r3 + "src"] = { valType: "string", editType: "none" }) : d(e5) && (e5.role = "object");
              });
            }(e3), function(e4) {
              t2.crawl(e4, function(e5, t3, r3) {
                if (e5) {
                  var n2 = e5[m];
                  n2 && (delete e5[m], r3[t3] = { items: {} }, r3[t3].items[n2] = e5, r3[t3].role = "object");
                }
              });
            }(e3), function(e4) {
              !function e5(t3) {
                for (var r3 in t3) if (d(t3[r3])) e5(t3[r3]);
                else if (Array.isArray(t3[r3])) for (var n2 = 0; n2 < t3[r3].length; n2++) e5(t3[r3][n2]);
                else t3[r3] instanceof RegExp && (t3[r3] = t3[r3].toString());
              }(e4);
            }(e3), e3;
          }
          function M(e3, t3, r3) {
            var n2 = p(e3, r3), a2 = f({}, t3.layoutAttributes);
            a2[g] = true, n2.set(a2);
          }
          function k(e3, t3, r3) {
            var n2 = p(e3, r3);
            n2.set(f(n2.get() || {}, t3));
          }
          t2.IS_SUBPLOT_OBJ = g, t2.IS_LINKED_TO_ARRAY = m, t2.DEPRECATED = y, t2.UNDERSCORE_ATTRS = x, t2.get = function() {
            var e3 = {};
            n.allTypes.forEach(function(r4) {
              e3[r4] = function(e4) {
                var r5, a3;
                a3 = (r5 = n.modules[e4]._module).basePlotModule;
                var o2 = { type: null }, l2 = f({}, i), s2 = f({}, r5.attributes);
                t2.crawl(s2, function(e5, t3, r6, n2, a4) {
                  p(l2, a4).set(void 0), void 0 === e5 && p(s2, a4).set(void 0);
                }), f(o2, l2), n.traceIs(e4, "noOpacity") && delete o2.opacity, n.traceIs(e4, "showLegend") || (delete o2.showlegend, delete o2.legendgroup), n.traceIs(e4, "noHover") && (delete o2.hoverinfo, delete o2.hoverlabel), r5.selectPoints || delete o2.selectedpoints, f(o2, s2), a3.attributes && f(o2, a3.attributes), o2.type = e4;
                var c2 = { meta: r5.meta || {}, categories: r5.categories || {}, animatable: Boolean(r5.animatable), type: e4, attributes: T(o2) };
                if (r5.layoutAttributes) {
                  var u2 = {};
                  f(u2, r5.layoutAttributes), c2.layoutAttributes = T(u2);
                }
                return r5.animatable || t2.crawl(c2, function(e5) {
                  t2.isValObject(e5) && "anim" in e5 && delete e5.anim;
                }), c2;
              }(r4);
            });
            var r3, a2 = {};
            return Object.keys(n.transformsRegistry).forEach(function(e4) {
              a2[e4] = function(e5) {
                var t3 = n.transformsRegistry[e5], r4 = f({}, t3.attributes);
                return Object.keys(n.componentsRegistry).forEach(function(t4) {
                  var a3 = n.componentsRegistry[t4];
                  a3.schema && a3.schema.transforms && a3.schema.transforms[e5] && Object.keys(a3.schema.transforms[e5]).forEach(function(t5) {
                    k(r4, a3.schema.transforms[e5][t5], t5);
                  });
                }), { attributes: T(r4) };
              }(e4);
            }), { defs: { valObjects: v, metaKeys: x.concat(["description", "role", "editType", "impliedEdits"]), editType: { traces: u.traces, layout: u.layout }, impliedEdits: {} }, traces: e3, layout: w(), transforms: a2, frames: (r3 = { frames: f({}, l) }, T(r3), r3.frames), animation: T(s), config: T(c) };
          }, t2.crawl = function(e3, r3, n2, a2) {
            var i2 = n2 || 0;
            a2 = a2 || "", Object.keys(e3).forEach(function(n3) {
              var o2 = e3[n3];
              if (-1 === x.indexOf(n3)) {
                var l2 = (a2 ? a2 + "." : "") + n3;
                r3(o2, n3, e3, i2, l2), t2.isValObject(o2) || d(o2) && "impliedEdits" !== n3 && t2.crawl(o2, r3, i2 + 1, l2);
              }
            });
          }, t2.isValObject = function(e3) {
            return e3 && void 0 !== e3.valType;
          }, t2.findArrayAttributes = function(e3) {
            var r3, n2, a2 = [], o2 = [], l2 = [];
            function s2(e4, t3, n3, a3) {
              o2 = o2.slice(0, a3).concat([t3]), l2 = l2.slice(0, a3).concat([e4 && e4._isLinkedToArray]), e4 && ("data_array" === e4.valType || true === e4.arrayOk) && ("colorbar" !== o2[a3 - 1] || "ticktext" !== t3 && "tickvals" !== t3) && c2(r3, 0, "");
            }
            function c2(e4, t3, r4) {
              var i2 = e4[o2[t3]], s3 = r4 + o2[t3];
              if (t3 === o2.length - 1) h(i2) && a2.push(n2 + s3);
              else if (l2[t3]) {
                if (Array.isArray(i2)) for (var u3 = 0; u3 < i2.length; u3++) d(i2[u3]) && c2(i2[u3], t3 + 1, s3 + "[" + u3 + "].");
              } else d(i2) && c2(i2, t3 + 1, s3 + ".");
            }
            r3 = e3, n2 = "", t2.crawl(i, s2), e3._module && e3._module.attributes && t2.crawl(e3._module.attributes, s2);
            var u2 = e3.transforms;
            if (u2) for (var f2 = 0; f2 < u2.length; f2++) {
              var p2 = u2[f2], v2 = p2._module;
              v2 && (n2 = "transforms[" + f2 + "].", r3 = p2, t2.crawl(v2.attributes, s2));
            }
            return a2;
          }, t2.getTraceValObject = function(e3, t3) {
            var r3, a2, o2 = t3[0], l2 = 1;
            if ("transforms" === o2) {
              if (1 === t3.length) return i.transforms;
              var s2 = e3.transforms;
              if (!Array.isArray(s2) || !s2.length) return false;
              var c2 = t3[1];
              if (!_(c2) || c2 >= s2.length) return false;
              a2 = (r3 = (n.transformsRegistry[s2[c2].type] || {}).attributes) && r3[t3[2]], l2 = 3;
            } else {
              var u2 = e3._module;
              if (u2 || (u2 = (n.modules[e3.type || i.type.dflt] || {})._module), !u2) return false;
              if (!(a2 = (r3 = u2.attributes) && r3[o2])) {
                var f2 = u2.basePlotModule;
                f2 && f2.attributes && (a2 = f2.attributes[o2]);
              }
              a2 || (a2 = i[o2]);
            }
            return b(a2, t3, l2);
          }, t2.getLayoutValObject = function(e3, t3) {
            var r3 = function(e4, t4) {
              var r4, a2, i2, l2, s2 = e4._basePlotModules;
              if (s2) {
                var c2;
                for (r4 = 0; r4 < s2.length; r4++) {
                  if ((i2 = s2[r4]).attrRegex && i2.attrRegex.test(t4)) {
                    if (i2.layoutAttrOverrides) return i2.layoutAttrOverrides;
                    !c2 && i2.layoutAttributes && (c2 = i2.layoutAttributes);
                  }
                  var u2 = i2.baseLayoutAttrOverrides;
                  if (u2 && t4 in u2) return u2[t4];
                }
                if (c2) return c2;
              }
              var f2 = e4._modules;
              if (f2) {
                for (r4 = 0; r4 < f2.length; r4++) if ((l2 = f2[r4].layoutAttributes) && t4 in l2) return l2[t4];
              }
              for (a2 in n.componentsRegistry) {
                if ("colorscale" === (i2 = n.componentsRegistry[a2]).name && 0 === t4.indexOf("coloraxis")) return i2.layoutAttributes[t4];
                if (!i2.schema && t4 === i2.name) return i2.layoutAttributes;
              }
              return t4 in o && o[t4];
            }(e3, t3[0]);
            return b(r3, t3, 1);
          };
        }, 8032: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9829), i = "templateitemname", o = { name: { valType: "string", editType: "none" } };
          function l(e3) {
            return e3 && "string" == typeof e3;
          }
          function s(e3) {
            var t3 = e3.length - 1;
            return "s" !== e3.charAt(t3) && n.warn("bad argument to arrayDefaultKey: " + e3), e3.substr(0, e3.length - 1) + "defaults";
          }
          o[i] = { valType: "string", editType: "calc" }, t2.templatedArray = function(e3, t3) {
            return t3._isLinkedToArray = e3, t3.name = o.name, t3[i] = o[i], t3;
          }, t2.traceTemplater = function(e3) {
            var t3, r3, i2 = {};
            for (t3 in e3) r3 = e3[t3], Array.isArray(r3) && r3.length && (i2[t3] = 0);
            return { newTrace: function(o2) {
              var l2 = { type: t3 = n.coerce(o2, {}, a, "type"), _template: null };
              if (t3 in i2) {
                r3 = e3[t3];
                var s2 = i2[t3] % r3.length;
                i2[t3]++, l2._template = r3[s2];
              }
              return l2;
            } };
          }, t2.newContainer = function(e3, t3, r3) {
            var a2 = e3._template, i2 = a2 && (a2[t3] || r3 && a2[r3]);
            return n.isPlainObject(i2) || (i2 = null), e3[t3] = { _template: i2 };
          }, t2.arrayTemplater = function(e3, t3, r3) {
            var n2 = e3._template, a2 = n2 && n2[s(t3)], o2 = n2 && n2[t3];
            Array.isArray(o2) && o2.length || (o2 = []);
            var c = {};
            return { newItem: function(e4) {
              var t4 = { name: e4.name, _input: e4 }, n3 = t4[i] = e4[i];
              if (!l(n3)) return t4._template = a2, t4;
              for (var s2 = 0; s2 < o2.length; s2++) {
                var u = o2[s2];
                if (u.name === n3) return c[n3] = 1, t4._template = u, t4;
              }
              return t4[r3] = e4[r3] || false, t4._template = false, t4;
            }, defaultItems: function() {
              for (var e4 = [], t4 = 0; t4 < o2.length; t4++) {
                var r4 = o2[t4], n3 = r4.name;
                if (l(n3) && !c[n3]) {
                  var a3 = { _template: r4, name: n3, _input: { _templateitemname: n3 } };
                  a3[i] = r4[i], e4.push(a3), c[n3] = 1;
                }
              }
              return e4;
            } };
          }, t2.arrayDefaultKey = s, t2.arrayEditor = function(e3, t3, r3) {
            var a2 = (n.nestedProperty(e3, t3).get() || []).length, o2 = r3._index, l2 = o2 >= a2 && (r3._input || {})._templateitemname;
            l2 && (o2 = a2);
            var s2, c = t3 + "[" + o2 + "]";
            function u() {
              s2 = {}, l2 && (s2[c] = {}, s2[c][i] = l2);
            }
            function f(e4, t4) {
              l2 ? n.nestedProperty(s2[c], e4).set(t4) : s2[c + "." + e4] = t4;
            }
            function d() {
              var e4 = s2;
              return u(), e4;
            }
            return u(), { modifyBase: function(e4, t4) {
              s2[e4] = t4;
            }, modifyItem: f, getUpdateObj: d, applyUpdate: function(t4, r4) {
              t4 && f(t4, r4);
              var a3 = d();
              for (var i2 in a3) n.nestedProperty(e3, i2).set(a3[i2]);
            } };
          };
        }, 1817: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4122), o = r2(4809), l = r2(635), s = r2(4823), c = r2(8766), u = r2(2203), f = r2(7240), d = r2(5433), h = r2(9714), p = r2(4530), v = r2(4391), g = v.enforce, m = v.clean, y = r2(2919).doAutoRange, x = "start", b = r2(4826).zindexSeparator;
          function _(e3, t3, r3) {
            for (var n2 = 0; n2 < r3.length; n2++) {
              var a2 = r3[n2][0], i2 = r3[n2][1];
              if (!(a2[0] >= e3[1] || a2[1] <= e3[0]) && i2[0] < t3[1] && i2[1] > t3[0]) return true;
            }
            return false;
          }
          function w(e3) {
            var r3, a2, l2, s2, f2, v2, g2 = e3._fullLayout, m2 = g2._size, y2 = m2.p, x2 = h.list(e3, "", true);
            if (g2._paperdiv.style({ width: e3._context.responsive && g2.autosize && !e3._context._hasZeroWidth && !e3.layout.width ? "100%" : g2.width + "px", height: e3._context.responsive && g2.autosize && !e3._context._hasZeroHeight && !e3.layout.height ? "100%" : g2.height + "px" }).selectAll(".main-svg").call(u.setSize, g2.width, g2.height), e3._context.setBackground(e3, g2.paper_bgcolor), t2.drawMainTitle(e3), d.manage(e3), !g2._has("cartesian")) return i.previousPromises(e3);
            function w2(e4, t3, r4) {
              var n2 = e4._lw / 2;
              return "x" === e4._id.charAt(0) ? t3 ? "top" === r4 ? t3._offset - y2 - n2 : t3._offset + t3._length + y2 + n2 : m2.t + m2.h * (1 - (e4.position || 0)) + n2 % 1 : t3 ? "right" === r4 ? t3._offset + t3._length + y2 + n2 : t3._offset - y2 - n2 : m2.l + m2.w * (e4.position || 0) + n2 % 1;
            }
            for (r3 = 0; r3 < x2.length; r3++) {
              var M2 = (s2 = x2[r3])._anchorAxis;
              s2._linepositions = {}, s2._lw = u.crispRound(e3, s2.linewidth, 1), s2._mainLinePosition = w2(s2, M2, s2.side), s2._mainMirrorPosition = s2.mirror && M2 ? w2(s2, M2, p.OPPOSITE_SIDE[s2.side]) : null;
            }
            var A2 = [], L = [], S = [], C = 1 === c.opacity(g2.paper_bgcolor) && 1 === c.opacity(g2.plot_bgcolor) && g2.paper_bgcolor === g2.plot_bgcolor;
            for (a2 in g2._plots) if ((l2 = g2._plots[a2]).mainplot) l2.bg && l2.bg.remove(), l2.bg = void 0;
            else {
              var O = l2.xaxis.domain, D = l2.yaxis.domain, P = l2.plotgroup;
              if (_(O, D, S) && -1 === a2.indexOf(b)) {
                var z = P.node(), I = l2.bg = o.ensureSingle(P, "rect", "bg");
                z.insertBefore(I.node(), z.childNodes[0]), L.push(a2);
              } else P.select("rect.bg").remove(), S.push([O, D]), C || (A2.push(a2), L.push(a2));
            }
            var E, R, N, F, H, B, j, Y, V, U, q, G, Z, W = g2._bgLayer.selectAll(".bg").data(A2);
            for (W.enter().append("rect").classed("bg", true), W.exit().remove(), W.each(function(e4) {
              g2._plots[e4].bg = n.select(this);
            }), r3 = 0; r3 < L.length; r3++) l2 = g2._plots[L[r3]], f2 = l2.xaxis, v2 = l2.yaxis, l2.bg && void 0 !== f2._offset && void 0 !== v2._offset && l2.bg.call(u.setRect, f2._offset - y2, v2._offset - y2, f2._length + 2 * y2, v2._length + 2 * y2).call(c.fill, g2.plot_bgcolor).style("stroke-width", 0);
            if (!g2._hasOnlyLargeSploms) for (a2 in g2._plots) {
              l2 = g2._plots[a2], f2 = l2.xaxis, v2 = l2.yaxis;
              var J, X, K = l2.clipId = "clip" + g2._uid + a2 + "plot", Q = o.ensureSingleById(g2._clips, "clipPath", K, function(e4) {
                e4.classed("plotclip", true).append("rect");
              });
              l2.clipRect = Q.select("rect").attr({ width: f2._length, height: v2._length }), u.setTranslate(l2.plot, f2._offset, v2._offset), l2._hasClipOnAxisFalse ? (J = null, X = K) : (J = K, X = null), u.setClipUrl(l2.plot, J, e3), l2.layerClipId = X;
            }
            function $(e4) {
              return "M" + E + "," + e4 + "H" + R;
            }
            function ee(e4) {
              return "M" + f2._offset + "," + e4 + "h" + f2._length;
            }
            function te(e4) {
              return "M" + e4 + "," + Y + "V" + j;
            }
            function re(e4) {
              return void 0 !== v2._shift && (e4 += v2._shift), "M" + e4 + "," + v2._offset + "v" + v2._length;
            }
            function ne(e4, t3, r4) {
              if (!e4.showline || a2 !== e4._mainSubplot) return "";
              if (!e4._anchorAxis) return r4(e4._mainLinePosition);
              var n2 = t3(e4._mainLinePosition);
              return e4.mirror && (n2 += t3(e4._mainMirrorPosition)), n2;
            }
            for (a2 in g2._plots) {
              l2 = g2._plots[a2], f2 = l2.xaxis, v2 = l2.yaxis;
              var ae = "M0,0";
              T(f2, a2) && (H = k(f2, "left", v2, x2), E = f2._offset - (H ? y2 + H : 0), B = k(f2, "right", v2, x2), R = f2._offset + f2._length + (B ? y2 + B : 0), N = w2(f2, v2, "bottom"), F = w2(f2, v2, "top"), !(Z = !f2._anchorAxis || a2 !== f2._mainSubplot) || "allticks" !== f2.mirror && "all" !== f2.mirror || (f2._linepositions[a2] = [N, F]), ae = ne(f2, $, ee), Z && f2.showline && ("all" === f2.mirror || "allticks" === f2.mirror) && (ae += $(N) + $(F)), l2.xlines.style("stroke-width", f2._lw + "px").call(c.stroke, f2.showline ? f2.linecolor : "rgba(0,0,0,0)")), l2.xlines.attr("d", ae);
              var ie = "M0,0";
              T(v2, a2) && (q = k(v2, "bottom", f2, x2), j = v2._offset + v2._length + (q ? y2 : 0), G = k(v2, "top", f2, x2), Y = v2._offset - (G ? y2 : 0), V = w2(v2, f2, "left"), U = w2(v2, f2, "right"), !(Z = !v2._anchorAxis || a2 !== v2._mainSubplot) || "allticks" !== v2.mirror && "all" !== v2.mirror || (v2._linepositions[a2] = [V, U]), ie = ne(v2, te, re), Z && v2.showline && ("all" === v2.mirror || "allticks" === v2.mirror) && (ie += te(V) + te(U)), l2.ylines.style("stroke-width", v2._lw + "px").call(c.stroke, v2.showline ? v2.linecolor : "rgba(0,0,0,0)")), l2.ylines.attr("d", ie);
            }
            return h.makeClipPaths(e3), i.previousPromises(e3);
          }
          function T(e3, t3) {
            return (e3.ticks || e3.showline) && (t3 === e3._mainSubplot || "all" === e3.mirror || "allticks" === e3.mirror);
          }
          function M(e3, t3, r3) {
            if (!r3.showline || !r3._lw) return false;
            if ("all" === r3.mirror || "allticks" === r3.mirror) return true;
            var n2 = r3._anchorAxis;
            if (!n2) return false;
            var a2 = p.FROM_BL[t3];
            return r3.side === t3 ? n2.domain[a2] === e3.domain[a2] : r3.mirror && n2.domain[1 - a2] === e3.domain[1 - a2];
          }
          function k(e3, t3, r3, n2) {
            if (M(e3, t3, r3)) return r3._lw;
            for (var a2 = 0; a2 < n2.length; a2++) {
              var i2 = n2[a2];
              if (i2._mainAxis === r3._mainAxis && M(e3, t3, i2)) return i2._lw;
            }
            return 0;
          }
          function A(e3) {
            return "top" === e3 ? p.CAP_SHIFT + 0.3 + "em" : "bottom" === e3 ? "-0.3em" : p.MID_SHIFT + "em";
          }
          t2.layoutStyles = function(e3) {
            return o.syncOrAsync([i.doAutoMargin, w], e3);
          }, t2.drawMainTitle = function(e3) {
            var t3 = e3._fullLayout.title, r3 = e3._fullLayout, a2 = function(e4) {
              var t4 = e4.title, r4 = "middle";
              return o.isRightAnchor(t4) ? r4 = "end" : o.isLeftAnchor(t4) && (r4 = x), r4;
            }(r3), s2 = function(e4) {
              var t4 = e4.title, r4 = "0em";
              return o.isTopAnchor(t4) ? r4 = p.CAP_SHIFT + "em" : o.isMiddleAnchor(t4) && (r4 = p.MID_SHIFT + "em"), r4;
            }(r3), c2 = function(e4, t4) {
              var r4 = e4.title, n2 = e4._size, a3 = 0;
              return "0em" !== t4 && t4 ? t4 === p.CAP_SHIFT + "em" && (a3 = r4.pad.t) : a3 = -r4.pad.b, "auto" === r4.y ? n2.t / 2 : "paper" === r4.yref ? n2.t + n2.h - n2.h * r4.y + a3 : e4.height - e4.height * r4.y + a3;
            }(r3, s2), d2 = function(e4, t4) {
              var r4 = e4.title, n2 = e4._size, a3 = 0;
              return t4 === x ? a3 = r4.pad.l : "end" === t4 && (a3 = -r4.pad.r), "paper" === r4.xref ? n2.l + n2.w * r4.x + a3 : e4.width * r4.x + a3;
            }(r3, a2);
            if (f.draw(e3, "gtitle", { propContainer: r3, propName: "title.text", subtitlePropName: "title.subtitle.text", placeholder: r3._dfltTitle.plot, subtitlePlaceholder: r3._dfltTitle.subtitle, attributes: { x: d2, y: c2, "text-anchor": a2, dy: s2 } }), t3.text && t3.automargin) {
              var h2 = n.selectAll(".gtitle"), v2 = u.bBox(n.selectAll(".g-gtitle").node()).height, g2 = function(e4, t4, r4) {
                var n2 = t4.y, a3 = t4.yanchor, i2 = n2 > 0.5 ? "t" : "b", o2 = e4._fullLayout.margin[i2], l2 = 0;
                return "paper" === t4.yref ? l2 = r4 + t4.pad.t + t4.pad.b : "container" === t4.yref && (l2 = function(e5, t5, r5, n3, a4) {
                  var i3 = 0;
                  return "middle" === r5 && (i3 += a4 / 2), "t" === e5 ? ("top" === r5 && (i3 += a4), i3 += n3 - t5 * n3) : ("bottom" === r5 && (i3 += a4), i3 += t5 * n3), i3;
                }(i2, n2, a3, e4._fullLayout.height, r4) + t4.pad.t + t4.pad.b), l2 > o2 ? l2 : 0;
              }(e3, t3, v2);
              if (g2 > 0) {
                !function(e4, t4, r4, n2) {
                  var a3 = "title.automargin", l2 = e4._fullLayout.title, s3 = l2.y > 0.5 ? "t" : "b", c3 = { x: l2.x, y: l2.y, t: 0, b: 0 }, u2 = {};
                  "paper" === l2.yref && function(e5, t5, r5, n3, a4) {
                    var i2 = "paper" === t5.yref ? e5._fullLayout._size.h : e5._fullLayout.height, l3 = o.isTopAnchor(t5) ? n3 : n3 - a4, s4 = "b" === r5 ? i2 - l3 : l3;
                    return !(o.isTopAnchor(t5) && "t" === r5 || o.isBottomAnchor(t5) && "b" === r5) && s4 < a4;
                  }(e4, l2, s3, t4, n2) ? c3[s3] = r4 : "container" === l2.yref && (u2[s3] = r4, e4._fullLayout._reservedMargin[a3] = u2), i.allowAutoMargin(e4, a3), i.autoMargin(e4, a3, c3);
                }(e3, c2, g2, v2), h2.attr({ x: d2, y: c2, "text-anchor": a2, dy: A(t3.yanchor) }).call(l.positionText, d2, c2);
                var m2 = (t3.text.match(l.BR_TAG_ALL) || []).length;
                if (m2) {
                  var y2 = p.LINE_SPACING * m2 + p.MID_SHIFT;
                  0 === t3.y && (y2 = -y2), h2.selectAll(".line").each(function() {
                    var e4 = +this.getAttribute("dy").slice(0, -2) - y2 + "em";
                    this.setAttribute("dy", e4);
                  });
                }
                var b2 = n.selectAll(".gtitle-subtitle");
                if (b2.node()) {
                  var _2 = h2.node().getBBox(), w2 = _2.y + _2.height + f.SUBTITLE_PADDING_EM * t3.subtitle.font.size;
                  b2.attr({ x: d2, y: w2, "text-anchor": a2, dy: A(t3.yanchor) }).call(l.positionText, d2, w2);
                }
              }
            }
          }, t2.doTraceStyle = function(e3) {
            var r3, n2 = e3.calcdata, o2 = [];
            for (r3 = 0; r3 < n2.length; r3++) {
              var l2 = n2[r3], c2 = l2[0] || {}, u2 = c2.trace || {}, f2 = u2._module || {}, d2 = f2.arraysToCalcdata;
              d2 && d2(l2, u2);
              var h2 = f2.editStyle;
              h2 && o2.push({ fn: h2, cd0: c2 });
            }
            if (o2.length) {
              for (r3 = 0; r3 < o2.length; r3++) {
                var p2 = o2[r3];
                p2.fn(e3, p2.cd0);
              }
              s(e3), t2.redrawReglTraces(e3);
            }
            return i.style(e3), a.getComponentMethod("legend", "draw")(e3), i.previousPromises(e3);
          }, t2.doColorBars = function(e3) {
            return a.getComponentMethod("colorbar", "draw")(e3), i.previousPromises(e3);
          }, t2.layoutReplot = function(e3) {
            var t3 = e3.layout;
            return e3.layout = void 0, a.call("_doPlot", e3, "", t3);
          }, t2.doLegend = function(e3) {
            return a.getComponentMethod("legend", "draw")(e3), i.previousPromises(e3);
          }, t2.doTicksRelayout = function(e3) {
            return h.draw(e3, "redraw"), e3._fullLayout._hasOnlyLargeSploms && (a.subplotsRegistry.splom.updateGrid(e3), s(e3), t2.redrawReglTraces(e3)), t2.drawMainTitle(e3), i.previousPromises(e3);
          }, t2.doModeBar = function(e3) {
            var t3 = e3._fullLayout;
            d.manage(e3);
            for (var r3 = 0; r3 < t3._basePlotModules.length; r3++) {
              var n2 = t3._basePlotModules[r3].updateFx;
              n2 && n2(e3);
            }
            return i.previousPromises(e3);
          }, t2.doCamera = function(e3) {
            for (var t3 = e3._fullLayout, r3 = t3._subplots.gl3d, n2 = 0; n2 < r3.length; n2++) {
              var a2 = t3[r3[n2]];
              a2._scene.setViewport(a2);
            }
          }, t2.drawData = function(e3) {
            var r3 = e3._fullLayout;
            s(e3);
            for (var n2 = r3._basePlotModules, o2 = 0; o2 < n2.length; o2++) n2[o2].plot(e3);
            return t2.redrawReglTraces(e3), i.style(e3), a.getComponentMethod("selections", "draw")(e3), a.getComponentMethod("shapes", "draw")(e3), a.getComponentMethod("annotations", "draw")(e3), a.getComponentMethod("images", "draw")(e3), r3._replotting = false, i.previousPromises(e3);
          }, t2.redrawReglTraces = function(e3) {
            var t3 = e3._fullLayout;
            if (t3._has("regl")) {
              var r3, n2, a2 = e3._fullData, i2 = [], l2 = [];
              for (t3._hasOnlyLargeSploms && t3._splomGrid.draw(), r3 = 0; r3 < a2.length; r3++) {
                var s2 = a2[r3];
                true === s2.visible && 0 !== s2._length && ("splom" === s2.type ? t3._splomScenes[s2.uid].draw() : "scattergl" === s2.type ? o.pushUnique(i2, s2.xaxis + s2.yaxis) : "scatterpolargl" === s2.type && o.pushUnique(l2, s2.subplot));
              }
              for (r3 = 0; r3 < i2.length; r3++) (n2 = t3._plots[i2[r3]])._scene && n2._scene.draw();
              for (r3 = 0; r3 < l2.length; r3++) (n2 = t3[l2[r3]]._subplot)._scene && n2._scene.draw();
            }
          }, t2.doAutoRangeAndConstraints = function(e3) {
            for (var t3, r3 = h.list(e3, "", true), n2 = {}, a2 = 0; a2 < r3.length; a2++) if (!n2[(t3 = r3[a2])._id]) {
              n2[t3._id] = 1, m(e3, t3), y(e3, t3);
              var i2 = t3._matchGroup;
              if (i2) for (var o2 in i2) {
                var l2 = h.getFromId(e3, o2);
                y(e3, l2, t3.range), n2[o2] = 1;
              }
            }
            g(e3);
          }, t2.finalDraw = function(e3) {
            a.getComponentMethod("rangeslider", "draw")(e3), a.getComponentMethod("rangeselector", "draw")(e3);
          }, t2.drawMarginPushers = function(e3) {
            a.getComponentMethod("legend", "draw")(e3), a.getComponentMethod("rangeselector", "draw")(e3), a.getComponentMethod("sliders", "draw")(e3), a.getComponentMethod("updatemenus", "draw")(e3), a.getComponentMethod("colorbar", "draw")(e3);
          };
        }, 3853: function(e2, t2, r2) {
          var n = r2(4809), a = n.isPlainObject, i = r2(7297), o = r2(4122), l = r2(9829), s = r2(8032), c = r2(4452).dfltConfig;
          function u(e3, t3) {
            e3 = n.extendDeep({}, e3);
            var r3, i2, o2 = Object.keys(e3).sort();
            function l2(t4, r4, n2) {
              if (a(r4) && a(t4)) u(t4, r4);
              else if (Array.isArray(r4) && Array.isArray(t4)) {
                var o3 = s.arrayTemplater({ _template: e3 }, n2);
                for (i2 = 0; i2 < r4.length; i2++) {
                  var l3 = r4[i2], c3 = o3.newItem(l3)._template;
                  c3 && u(c3, l3);
                }
                var f2 = o3.defaultItems();
                for (i2 = 0; i2 < f2.length; i2++) r4.push(f2[i2]._template);
                for (i2 = 0; i2 < r4.length; i2++) delete r4[i2].templateitemname;
              }
            }
            for (r3 = 0; r3 < o2.length; r3++) {
              var c2 = o2[r3], d2 = e3[c2];
              if (c2 in t3 ? l2(d2, t3[c2], c2) : t3[c2] = d2, f(c2) === c2) for (var h2 in t3) {
                var p2 = f(h2);
                h2 === p2 || p2 !== c2 || h2 in e3 || l2(d2, t3[h2], c2);
              }
            }
          }
          function f(e3) {
            return e3.replace(/[0-9]+$/, "");
          }
          function d(e3, t3, r3, i2, o2) {
            var l2 = o2 && r3(o2);
            for (var c2 in e3) {
              var u2 = e3[c2], h2 = v(e3, c2, i2), p2 = v(e3, c2, o2), g2 = r3(p2);
              if (!g2) {
                var m2 = f(c2);
                m2 !== c2 && (g2 = r3(p2 = v(e3, m2, o2)));
              }
              if (!(l2 && l2 === g2 || !g2 || g2._noTemplating || "data_array" === g2.valType || g2.arrayOk && Array.isArray(u2))) if (!g2.valType && a(u2)) d(u2, t3, r3, h2, p2);
              else if (g2._isLinkedToArray && Array.isArray(u2)) for (var y = false, x = 0, b = {}, _ = 0; _ < u2.length; _++) {
                var w = u2[_];
                if (a(w)) {
                  var T = w.name;
                  if (T) b[T] || (d(w, t3, r3, v(u2, x, h2), v(u2, x, p2)), x++, b[T] = 1);
                  else if (!y) {
                    var M = v(e3, s.arrayDefaultKey(c2), i2), k = v(u2, x, h2);
                    d(w, t3, r3, k, v(u2, x, p2));
                    var A = n.nestedProperty(t3, k);
                    n.nestedProperty(t3, M).set(A.get()), A.set(null), y = true;
                  }
                }
              }
              else n.nestedProperty(t3, h2).set(u2);
            }
          }
          function h(e3, t3) {
            return i.getLayoutValObject(e3, n.nestedProperty({}, t3).parts);
          }
          function p(e3, t3) {
            return i.getTraceValObject(e3, n.nestedProperty({}, t3).parts);
          }
          function v(e3, t3, r3) {
            return r3 ? Array.isArray(e3) ? r3 + "[" + t3 + "]" : r3 + "." + t3 : t3;
          }
          function g(e3) {
            for (var t3 = 0; t3 < e3.length; t3++) if (a(e3[t3])) return true;
          }
          function m(e3) {
            var t3;
            switch (e3.code) {
              case "data":
                t3 = "The template has no key data.";
                break;
              case "layout":
                t3 = "The template has no key layout.";
                break;
              case "missing":
                t3 = e3.path ? "There are no templates for item " + e3.path + " with name " + e3.templateitemname : "There are no templates for trace " + e3.index + ", of type " + e3.traceType + ".";
                break;
              case "unused":
                t3 = e3.path ? "The template item at " + e3.path + " was not used in constructing the plot." : e3.dataCount ? "Some of the templates of type " + e3.traceType + " were not used. The template has " + e3.templateCount + " traces, the data only has " + e3.dataCount + " of this type." : "The template has " + e3.templateCount + " traces of type " + e3.traceType + " but there are none in the data.";
                break;
              case "reused":
                t3 = "Some of the templates of type " + e3.traceType + " were used more than once. The template has " + e3.templateCount + " traces, the data has " + e3.dataCount + " of this type.";
            }
            return e3.msg = t3, e3;
          }
          t2.makeTemplate = function(e3) {
            e3 = n.isPlainObject(e3) ? e3 : n.getGraphDiv(e3), e3 = n.extendDeep({ _context: c }, { data: e3.data, layout: e3.layout }), o.supplyDefaults(e3);
            var t3 = e3.data || [], r3 = e3.layout || {};
            r3._basePlotModules = e3._fullLayout._basePlotModules, r3._modules = e3._fullLayout._modules;
            var i2 = { data: {}, layout: {} };
            t3.forEach(function(e4) {
              var t4 = {};
              d(e4, t4, p.bind(null, e4));
              var r4 = n.coerce(e4, {}, l, "type"), a2 = i2.data[r4];
              a2 || (a2 = i2.data[r4] = []), a2.push(t4);
            }), d(r3, i2.layout, h.bind(null, r3)), delete i2.layout.template;
            var s2 = r3.template;
            if (a(s2)) {
              var f2, v2, g2, m2, y, x, b = s2.layout;
              a(b) && u(b, i2.layout);
              var _ = s2.data;
              if (a(_)) {
                for (v2 in i2.data) if (g2 = _[v2], Array.isArray(g2)) {
                  for (x = (y = i2.data[v2]).length, m2 = g2.length, f2 = 0; f2 < x; f2++) u(g2[f2 % m2], y[f2]);
                  for (f2 = x; f2 < m2; f2++) y.push(n.extendDeep({}, g2[f2]));
                }
                for (v2 in _) v2 in i2.data || (i2.data[v2] = n.extendDeep([], _[v2]));
              }
            }
            return i2;
          }, t2.validateTemplate = function(e3, t3) {
            var r3 = n.extendDeep({}, { _context: c, data: e3.data, layout: e3.layout }), i2 = r3.layout || {};
            a(t3) || (t3 = i2.template || {});
            var l2 = t3.layout, s2 = t3.data, u2 = [];
            r3.layout = i2, r3.layout.template = t3, o.supplyDefaults(r3);
            var d2 = r3._fullLayout, h2 = r3._fullData, p2 = {};
            if (a(l2) ? (function e4(t4, r4) {
              for (var n2 in t4) if ("_" !== n2.charAt(0) && a(t4[n2])) {
                var i3, o2 = f(n2), l3 = [];
                for (i3 = 0; i3 < r4.length; i3++) l3.push(v(t4, n2, r4[i3])), o2 !== n2 && l3.push(v(t4, o2, r4[i3]));
                for (i3 = 0; i3 < l3.length; i3++) p2[l3[i3]] = 1;
                e4(t4[n2], l3);
              }
            }(d2, ["layout"]), function e4(t4, r4) {
              for (var n2 in t4) if (-1 === n2.indexOf("defaults") && a(t4[n2])) {
                var i3 = v(t4, n2, r4);
                p2[i3] ? e4(t4[n2], i3) : u2.push({ code: "unused", path: i3 });
              }
            }(l2, "layout")) : u2.push({ code: "layout" }), a(s2)) {
              for (var y, x = {}, b = 0; b < h2.length; b++) {
                var _ = h2[b];
                x[y = _.type] = (x[y] || 0) + 1, _._fullInput._template || u2.push({ code: "missing", index: _._fullInput.index, traceType: y });
              }
              for (y in s2) {
                var w = s2[y].length, T = x[y] || 0;
                w > T ? u2.push({ code: "unused", traceType: y, templateCount: w, dataCount: T }) : T > w && u2.push({ code: "reused", traceType: y, templateCount: w, dataCount: T });
              }
            } else u2.push({ code: "data" });
            if (function e4(t4, r4) {
              for (var n2 in t4) if ("_" !== n2.charAt(0)) {
                var i3 = t4[n2], o2 = v(t4, n2, r4);
                a(i3) ? (Array.isArray(t4) && false === i3._template && i3.templateitemname && u2.push({ code: "missing", path: o2, templateitemname: i3.templateitemname }), e4(i3, o2)) : Array.isArray(i3) && g(i3) && e4(i3, o2);
              }
            }({ data: h2, layout: d2 }, ""), u2.length) return u2.map(m);
          };
        }, 491: function(e2, t2, r2) {
          var n = r2(721), a = r2(1420), i = r2(4122), o = r2(4809), l = r2(4619), s = r2(6243), c = r2(2914), u = r2(9697).version, f = { format: { valType: "enumerated", values: ["png", "jpeg", "webp", "svg", "full-json"], dflt: "png" }, width: { valType: "number", min: 1 }, height: { valType: "number", min: 1 }, scale: { valType: "number", min: 0, dflt: 1 }, setBackground: { valType: "any", dflt: false }, imageDataOnly: { valType: "boolean", dflt: false } };
          e2.exports = function(e3, t3) {
            var r3, d, h, p;
            function v(e4) {
              return !(e4 in t3) || o.validate(t3[e4], f[e4]);
            }
            if (t3 = t3 || {}, o.isPlainObject(e3) ? (r3 = e3.data || [], d = e3.layout || {}, h = e3.config || {}, p = {}) : (e3 = o.getGraphDiv(e3), r3 = o.extendDeep([], e3.data), d = o.extendDeep({}, e3.layout), h = e3._context, p = e3._fullLayout || {}), !v("width") && null !== t3.width || !v("height") && null !== t3.height) throw new Error("Height and width should be pixel values.");
            if (!v("format")) throw new Error("Export format is not " + o.join2(f.format.values, ", ", " or ") + ".");
            var g = {};
            function m(e4, r4) {
              return o.coerce(t3, g, f, e4, r4);
            }
            var y = m("format"), x = m("width"), b = m("height"), _ = m("scale"), w = m("setBackground"), T = m("imageDataOnly"), M = document.createElement("div");
            M.style.position = "absolute", M.style.left = "-5000px", document.body.appendChild(M);
            var k = o.extendFlat({}, d);
            x ? k.width = x : null === t3.width && n(p.width) && (k.width = p.width), b ? k.height = b : null === t3.height && n(p.height) && (k.height = p.height);
            var A = o.extendFlat({}, h, { _exportedPlot: true, staticPlot: true, setBackground: w }), L = l.getRedrawFunc(M);
            function S() {
              return new Promise(function(e4) {
                setTimeout(e4, l.getDelay(M._fullLayout));
              });
            }
            function C() {
              return new Promise(function(e4, t4) {
                var r4 = s(M, y, _), n2 = M._fullLayout.width, f2 = M._fullLayout.height;
                function d2() {
                  a.purge(M), document.body.removeChild(M);
                }
                if ("full-json" === y) {
                  var h2 = i.graphJson(M, false, "keepdata", "object", true, true);
                  return h2.version = u, h2 = JSON.stringify(h2), d2(), e4(T ? h2 : l.encodeJSON(h2));
                }
                if (d2(), "svg" === y) return e4(T ? r4 : l.encodeSVG(r4));
                var p2 = document.createElement("canvas");
                p2.id = o.randstr(), c({ format: y, width: n2, height: f2, scale: _, canvas: p2, svg: r4, promise: true }).then(e4).catch(t4);
              });
            }
            return new Promise(function(e4, t4) {
              a.newPlot(M, r3, k, A).then(L).then(S).then(C).then(function(t5) {
                e4(function(e5) {
                  return T ? e5.replace(l.IMAGE_URL_PREFIX, "") : e5;
                }(t5));
              }).catch(function(e5) {
                t4(e5);
              });
            });
          };
        }, 2466: function(e2, t2, r2) {
          var n = r2(4809), a = r2(4122), i = r2(7297), o = r2(4452).dfltConfig, l = n.isPlainObject, s = Array.isArray, c = n.isArrayOrTypedArray;
          function u(e3, t3, r3, a2, i2, o2) {
            o2 = o2 || [];
            for (var f2 = Object.keys(e3), d2 = 0; d2 < f2.length; d2++) {
              var g2 = f2[d2];
              if ("transforms" !== g2) {
                var m2 = o2.slice();
                m2.push(g2);
                var y = e3[g2], x = t3[g2], b = v(r3, g2), _ = (b || {}).valType, w = "info_array" === _, T = "colorscale" === _, M = (b || {}).items;
                if (p(r3, g2)) if (l(y) && l(x) && "any" !== _) u(y, x, b, a2, i2, m2);
                else if (w && s(y)) {
                  y.length > x.length && a2.push(h("unused", i2, m2.concat(x.length)));
                  var k, A, L, S, C, O = x.length, D = Array.isArray(M);
                  if (D && (O = Math.min(O, M.length)), 2 === b.dimensions) for (A = 0; A < O; A++) if (s(y[A])) {
                    y[A].length > x[A].length && a2.push(h("unused", i2, m2.concat(A, x[A].length)));
                    var P = x[A].length;
                    for (k = 0; k < (D ? Math.min(P, M[A].length) : P); k++) L = D ? M[A][k] : M, S = y[A][k], C = x[A][k], n.validate(S, L) ? C !== S && C !== +S && a2.push(h("dynamic", i2, m2.concat(A, k), S, C)) : a2.push(h("value", i2, m2.concat(A, k), S));
                  } else a2.push(h("array", i2, m2.concat(A), y[A]));
                  else for (A = 0; A < O; A++) L = D ? M[A] : M, S = y[A], C = x[A], n.validate(S, L) ? C !== S && C !== +S && a2.push(h("dynamic", i2, m2.concat(A), S, C)) : a2.push(h("value", i2, m2.concat(A), S));
                } else if (b.items && !w && s(y)) {
                  var z, I, E = M[Object.keys(M)[0]], R = [];
                  for (z = 0; z < x.length; z++) {
                    var N = x[z]._index || z;
                    if ((I = m2.slice()).push(N), l(y[N]) && l(x[z])) {
                      R.push(N);
                      var F = y[N], H = x[z];
                      l(F) && false !== F.visible && false === H.visible ? a2.push(h("invisible", i2, I)) : u(F, H, E, a2, i2, I);
                    }
                  }
                  for (z = 0; z < y.length; z++) (I = m2.slice()).push(z), l(y[z]) ? -1 === R.indexOf(z) && a2.push(h("unused", i2, I)) : a2.push(h("object", i2, I, y[z]));
                } else !l(y) && l(x) ? a2.push(h("object", i2, m2, y)) : c(y) || !c(x) || w || T ? g2 in t3 ? n.validate(y, b) ? "enumerated" === b.valType && (b.coerceNumber && y !== +x || y !== x) && a2.push(h("dynamic", i2, m2, y, x)) : a2.push(h("value", i2, m2, y)) : a2.push(h("unused", i2, m2, y)) : a2.push(h("array", i2, m2, y));
                else a2.push(h("schema", i2, m2));
              }
            }
            return a2;
          }
          e2.exports = function(e3, t3) {
            void 0 === e3 && (e3 = []), void 0 === t3 && (t3 = {});
            var r3, c2, f2 = i.get(), d2 = [], p2 = { _context: n.extendFlat({}, o) };
            s(e3) ? (p2.data = n.extendDeep([], e3), r3 = e3) : (p2.data = [], r3 = [], d2.push(h("array", "data"))), l(t3) ? (p2.layout = n.extendDeep({}, t3), c2 = t3) : (p2.layout = {}, c2 = {}, arguments.length > 1 && d2.push(h("object", "layout"))), a.supplyDefaults(p2);
            for (var v2 = p2._fullData, g2 = r3.length, m2 = 0; m2 < g2; m2++) {
              var y = r3[m2], x = ["data", m2];
              if (l(y)) {
                var b = v2[m2], _ = b.type, w = f2.traces[_].attributes;
                w.type = { valType: "enumerated", values: [_] }, false === b.visible && false !== y.visible && d2.push(h("invisible", x)), u(y, b, w, d2, x);
                var T = y.transforms, M = b.transforms;
                if (T) {
                  s(T) || d2.push(h("array", x, ["transforms"])), x.push("transforms");
                  for (var k = 0; k < T.length; k++) {
                    var A = ["transforms", k], L = T[k].type;
                    if (l(T[k])) {
                      var S = f2.transforms[L] ? f2.transforms[L].attributes : {};
                      S.type = { valType: "enumerated", values: Object.keys(f2.transforms) }, u(T[k], M[k], S, d2, x, A);
                    } else d2.push(h("object", x, A));
                  }
                }
              } else d2.push(h("object", x));
            }
            var C = p2._fullLayout, O = function(e4, t4) {
              for (var r4 = e4.layout.layoutAttributes, a2 = 0; a2 < t4.length; a2++) {
                var i2 = t4[a2], o2 = e4.traces[i2.type], l2 = o2.layoutAttributes;
                l2 && (i2.subplot ? n.extendFlat(r4[o2.attributes.subplot.dflt], l2) : n.extendFlat(r4, l2));
              }
              return r4;
            }(f2, v2);
            return u(c2, C, O, d2, "layout"), 0 === d2.length ? void 0 : d2;
          };
          var f = { object: function(e3, t3) {
            return ("layout" === e3 && "" === t3 ? "The layout argument" : "data" === e3[0] && "" === t3 ? "Trace " + e3[1] + " in the data argument" : d(e3) + "key " + t3) + " must be linked to an object container";
          }, array: function(e3, t3) {
            return ("data" === e3 ? "The data argument" : d(e3) + "key " + t3) + " must be linked to an array container";
          }, schema: function(e3, t3) {
            return d(e3) + "key " + t3 + " is not part of the schema";
          }, unused: function(e3, t3, r3) {
            var n2 = l(r3) ? "container" : "key";
            return d(e3) + n2 + " " + t3 + " did not get coerced";
          }, dynamic: function(e3, t3, r3, n2) {
            return [d(e3) + "key", t3, "(set to '" + r3 + "')", "got reset to", "'" + n2 + "'", "during defaults."].join(" ");
          }, invisible: function(e3, t3) {
            return (t3 ? d(e3) + "item " + t3 : "Trace " + e3[1]) + " got defaulted to be not visible";
          }, value: function(e3, t3, r3) {
            return [d(e3) + "key " + t3, "is set to an invalid value (" + r3 + ")"].join(" ");
          } };
          function d(e3) {
            return s(e3) ? "In data trace " + e3[1] + ", " : "In " + e3 + ", ";
          }
          function h(e3, t3, r3, a2, i2) {
            var o2, l2;
            r3 = r3 || "", s(t3) ? (o2 = t3[0], l2 = t3[1]) : (o2 = t3, l2 = null);
            var c2 = function(e4) {
              if (!s(e4)) return String(e4);
              for (var t4 = "", r4 = 0; r4 < e4.length; r4++) {
                var n2 = e4[r4];
                "number" == typeof n2 ? t4 = t4.substr(0, t4.length - 1) + "[" + n2 + "]" : t4 += n2, r4 < e4.length - 1 && (t4 += ".");
              }
              return t4;
            }(r3), u2 = f[e3](t3, c2, a2, i2);
            return n.log(u2), { code: e3, container: o2, trace: l2, path: r3, astr: c2, msg: u2 };
          }
          function p(e3, t3) {
            var r3 = m(t3), n2 = r3.keyMinusId, a2 = r3.id;
            return !!(n2 in e3 && e3[n2]._isSubplotObj && a2) || t3 in e3;
          }
          function v(e3, t3) {
            return t3 in e3 ? e3[t3] : e3[m(t3).keyMinusId];
          }
          var g = n.counterRegex("([a-z]+)");
          function m(e3) {
            var t3 = e3.match(g);
            return { keyMinusId: t3 && t3[1], id: t3 && t3[2] };
          }
        }, 9722: function(e2) {
          e2.exports = { mode: { valType: "enumerated", dflt: "afterall", values: ["immediate", "next", "afterall"] }, direction: { valType: "enumerated", values: ["forward", "reverse"], dflt: "forward" }, fromcurrent: { valType: "boolean", dflt: false }, frame: { duration: { valType: "number", min: 0, dflt: 500 }, redraw: { valType: "boolean", dflt: true } }, transition: { duration: { valType: "number", min: 0, dflt: 500, editType: "none" }, easing: { valType: "enumerated", dflt: "cubic-in-out", values: ["linear", "quad", "cubic", "sin", "exp", "circle", "elastic", "back", "bounce", "linear-in", "quad-in", "cubic-in", "sin-in", "exp-in", "circle-in", "elastic-in", "back-in", "bounce-in", "linear-out", "quad-out", "cubic-out", "sin-out", "exp-out", "circle-out", "elastic-out", "back-out", "bounce-out", "linear-in-out", "quad-in-out", "cubic-in-out", "sin-in-out", "exp-in-out", "circle-in-out", "elastic-in-out", "back-in-out", "bounce-in-out"], editType: "none" }, ordering: { valType: "enumerated", values: ["layout first", "traces first"], dflt: "layout first", editType: "none" } } };
        }, 9008: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8032);
          e2.exports = function(e3, t3, r3) {
            var i, o, l = r3.name, s = r3.inclusionAttr || "visible", c = t3[l], u = n.isArrayOrTypedArray(e3[l]) ? e3[l] : [], f = t3[l] = [], d = a.arrayTemplater(t3, l, s);
            for (i = 0; i < u.length; i++) {
              var h = u[i];
              n.isPlainObject(h) ? o = d.newItem(h) : (o = d.newItem({}))[s] = false, o._index = i, false !== o[s] && r3.handleItemDefaults(h, o, t3, r3), f.push(o);
            }
            var p = d.defaultItems();
            for (i = 0; i < p.length; i++) (o = p[i])._index = f.length, r3.handleItemDefaults({}, o, t3, r3, {}), f.push(o);
            if (n.isArrayOrTypedArray(c)) {
              var v = Math.min(c.length, f.length);
              for (i = 0; i < v; i++) n.relinkPrivateKeys(f[i], c[i]);
            }
            return f;
          };
        }, 9829: function(e2, t2, r2) {
          var n = r2(337), a = r2(192);
          e2.exports = { type: { valType: "enumerated", values: [], dflt: "scatter", editType: "calc+clearAxisTypes", _noTemplating: true }, visible: { valType: "enumerated", values: [true, false, "legendonly"], dflt: true, editType: "calc" }, showlegend: { valType: "boolean", dflt: true, editType: "style" }, legend: { valType: "subplotid", dflt: "legend", editType: "style" }, legendgroup: { valType: "string", dflt: "", editType: "style" }, legendgrouptitle: { text: { valType: "string", dflt: "", editType: "style" }, font: n({ editType: "style" }), editType: "style" }, legendrank: { valType: "number", dflt: 1e3, editType: "style" }, legendwidth: { valType: "number", min: 0, editType: "style" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "style" }, name: { valType: "string", editType: "style" }, uid: { valType: "string", editType: "plot", anim: true }, ids: { valType: "data_array", editType: "calc", anim: true }, customdata: { valType: "data_array", editType: "calc" }, meta: { valType: "any", arrayOk: true, editType: "plot" }, selectedpoints: { valType: "any", editType: "calc" }, hoverinfo: { valType: "flaglist", flags: ["x", "y", "z", "text", "name"], extras: ["all", "none", "skip"], arrayOk: true, dflt: "all", editType: "none" }, hoverlabel: a.hoverlabel, stream: { token: { valType: "string", noBlank: true, strict: true, editType: "calc" }, maxpoints: { valType: "number", min: 0, max: 1e4, dflt: 500, editType: "calc" }, editType: "calc" }, transforms: { _isLinkedToArray: "transform", editType: "calc" }, uirevision: { valType: "any", editType: "none" } };
        }, 528: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = a.dateTime2ms, o = a.incrementMonth, l = r2(3821).ONEAVGMONTH;
          e2.exports = function(e3, t3, r3, a2) {
            if ("date" !== t3.type) return { vals: a2 };
            var s = e3[r3 + "periodalignment"];
            if (!s) return { vals: a2 };
            var c, u = e3[r3 + "period"];
            if (n(u)) {
              if ((u = +u) <= 0) return { vals: a2 };
            } else if ("string" == typeof u && "M" === u.charAt(0)) {
              var f = +u.substring(1);
              if (!(f > 0 && Math.round(f) === f)) return { vals: a2 };
              c = f;
            }
            for (var d = t3.calendar, h = "start" === s, p = "end" === s, v = e3[r3 + "period0"], g = i(v, d) || 0, m = [], y = [], x = [], b = a2.length, _ = 0; _ < b; _++) {
              var w, T, M, k = a2[_];
              if (c) {
                for (w = Math.round((k - g) / (c * l)), M = o(g, c * w, d); M > k; ) M = o(M, -c, d);
                for (; M <= k; ) M = o(M, c, d);
                T = o(M, -c, d);
              } else {
                for (M = g + (w = Math.round((k - g) / u)) * u; M > k; ) M -= u;
                for (; M <= k; ) M += u;
                T = M - u;
              }
              m[_] = h ? T : p ? M : (T + M) / 2, y[_] = T, x[_] = M;
            }
            return { vals: m, starts: y, ends: x };
          };
        }, 5126: function(e2) {
          e2.exports = { xaxis: { valType: "subplotid", dflt: "x", editType: "calc+clearAxisTypes" }, yaxis: { valType: "subplotid", dflt: "y", editType: "calc+clearAxisTypes" } };
        }, 2919: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(4809), o = r2(3821).FP_SAFE, l = r2(3626), s = r2(2203), c = r2(5975), u = c.getFromId, f = c.isLinked;
          function d(e3, t3) {
            var r3, n2, a2 = [], o2 = e3._fullLayout, l2 = p(o2, t3, 0), s2 = p(o2, t3, 1), c2 = g(e3, t3), u2 = c2.min, f2 = c2.max;
            if (0 === u2.length || 0 === f2.length) return i.simpleMap(t3.range, t3.r2l);
            var d2 = u2[0].val, v2 = f2[0].val;
            for (r3 = 1; r3 < u2.length && d2 === v2; r3++) d2 = Math.min(d2, u2[r3].val);
            for (r3 = 1; r3 < f2.length && d2 === v2; r3++) v2 = Math.max(v2, f2[r3].val);
            var m2 = t3.autorange, y2 = "reversed" === m2 || "min reversed" === m2 || "max reversed" === m2;
            if (!y2 && t3.range) {
              var x2 = i.simpleMap(t3.range, t3.r2l);
              y2 = x2[1] < x2[0];
            }
            "reversed" === t3.autorange && (t3.autorange = true);
            var b2, _2, w2, T2, k, A, L = t3.rangemode, S = "tozero" === L, C = "nonnegative" === L, O = t3._length, D = O / 10, P = 0;
            for (r3 = 0; r3 < u2.length; r3++) for (b2 = u2[r3], n2 = 0; n2 < f2.length; n2++) (A = (_2 = f2[n2]).val - b2.val - h(t3, b2.val, _2.val)) > 0 && ((k = O - l2(b2) - s2(_2)) > D ? A / k > P && (w2 = b2, T2 = _2, P = A / k) : A / O > P && (w2 = { val: b2.val, nopad: 1 }, T2 = { val: _2.val, nopad: 1 }, P = A / O));
            if (d2 === v2) {
              var z = d2 - 1, I = d2 + 1;
              if (S) if (0 === d2) a2 = [0, 1];
              else {
                var E = (d2 > 0 ? f2 : u2).reduce(function(e4, t4) {
                  return Math.max(e4, s2(t4));
                }, 0), R = d2 / (1 - Math.min(0.5, E / O));
                a2 = d2 > 0 ? [0, R] : [R, 0];
              }
              else a2 = C ? [Math.max(0, z), Math.max(1, I)] : [z, I];
            } else S ? (w2.val >= 0 && (w2 = { val: 0, nopad: 1 }), T2.val <= 0 && (T2 = { val: 0, nopad: 1 })) : C && (w2.val - P * l2(w2) < 0 && (w2 = { val: 0, nopad: 1 }), T2.val <= 0 && (T2 = { val: 1, nopad: 1 })), P = (T2.val - w2.val - h(t3, b2.val, _2.val)) / (O - l2(w2) - s2(T2)), a2 = [w2.val - P * l2(w2), T2.val + P * s2(T2)];
            return a2 = M(a2, t3), t3.limitRange && t3.limitRange(), y2 && a2.reverse(), i.simpleMap(a2, t3.l2r || Number);
          }
          function h(e3, t3, r3) {
            var n2 = 0;
            if (e3.rangebreaks) for (var a2 = e3.locateBreaks(t3, r3), i2 = 0; i2 < a2.length; i2++) {
              var o2 = a2[i2];
              n2 += o2.max - o2.min;
            }
            return n2;
          }
          function p(e3, t3, r3) {
            var a2 = 0.05 * t3._length, o2 = t3._anchorAxis || {};
            if (-1 !== (t3.ticklabelposition || "").indexOf("inside") || -1 !== (o2.ticklabelposition || "").indexOf("inside")) {
              var l2 = t3.isReversed();
              if (!l2) {
                var c2 = i.simpleMap(t3.range, t3.r2l);
                l2 = c2[1] < c2[0];
              }
              l2 && (r3 = !r3);
            }
            var u2 = 0;
            return f(e3, t3._id) || (u2 = function(e4, t4, r4) {
              var a3 = 0, o3 = "x" === t4._id.charAt(0);
              for (var l3 in e4._plots) {
                var c3 = e4._plots[l3];
                if (t4._id === c3.xaxis._id || t4._id === c3.yaxis._id) {
                  var u3 = (o3 ? c3.yaxis : c3.xaxis) || {};
                  if (-1 !== (u3.ticklabelposition || "").indexOf("inside") && (!r4 && ("left" === u3.side || "bottom" === u3.side) || r4 && ("top" === u3.side || "right" === u3.side))) {
                    if (u3._vals) {
                      var f2 = i.deg2rad(u3._tickAngles[u3._id + "tick"] || 0), d2 = Math.abs(Math.cos(f2)), h2 = Math.abs(Math.sin(f2));
                      if (!u3._vals[0].bb) {
                        var p2 = u3._id + "tick";
                        u3._selections[p2].each(function(e5) {
                          var t5 = n.select(this);
                          t5.select(".text-math-group").empty() && (e5.bb = s.bBox(t5.node()));
                        });
                      }
                      for (var g2 = 0; g2 < u3._vals.length; g2++) {
                        var m2 = u3._vals[g2].bb;
                        if (m2) {
                          var y2 = 2 * v + m2.width, x2 = 2 * v + m2.height;
                          a3 = Math.max(a3, o3 ? Math.max(y2 * d2, x2 * h2) : Math.max(x2 * d2, y2 * h2));
                        }
                      }
                    }
                    "inside" === u3.ticks && "inside" === u3.ticklabelposition && (a3 += u3.ticklen || 0);
                  }
                }
              }
              return a3;
            }(e3, t3, r3)), a2 = Math.max(u2, a2), "domain" === t3.constrain && t3._inputDomain && (a2 *= (t3._inputDomain[1] - t3._inputDomain[0]) / (t3.domain[1] - t3.domain[0])), function(e4) {
              return e4.nopad ? 0 : e4.pad + (e4.extrapad ? a2 : u2);
            };
          }
          e2.exports = { applyAutorangeOptions: M, getAutoRange: d, makePadFn: p, doAutoRange: function(e3, t3, r3) {
            if (t3.setScale(), t3.autorange) {
              t3.range = r3 ? r3.slice() : d(e3, t3), t3._r = t3.range.slice(), t3._rl = i.simpleMap(t3._r, t3.r2l);
              var n2 = t3._input, a2 = {};
              a2[t3._attr + ".range"] = t3.range, a2[t3._attr + ".autorange"] = t3.autorange, l.call("_storeDirectGUIEdit", e3.layout, e3._fullLayout._preGUI, a2), n2.range = t3.range.slice(), n2.autorange = t3.autorange;
            }
            var o2 = t3._anchorAxis;
            if (o2 && o2.rangeslider) {
              var s2 = o2.rangeslider[t3._name];
              s2 && "auto" === s2.rangemode && (s2.range = d(e3, t3)), o2._input.rangeslider[t3._name] = i.extendFlat({}, s2);
            }
          }, findExtremes: function(e3, t3, r3) {
            r3 || (r3 = {}), e3._m || e3.setScale();
            var n2, i2, l2, s2, c2, u2, f2, d2, h2, p2 = [], v2 = [], g2 = t3.length, x2 = r3.padded || false, _2 = r3.tozero && ("linear" === e3.type || "-" === e3.type), w2 = "log" === e3.type, T2 = false, M2 = r3.vpadLinearized || false;
            function k(e4) {
              if (Array.isArray(e4)) return T2 = true, function(t5) {
                return Math.max(Number(e4[t5] || 0), 0);
              };
              var t4 = Math.max(Number(e4 || 0), 0);
              return function() {
                return t4;
              };
            }
            var A = k((e3._m > 0 ? r3.ppadplus : r3.ppadminus) || r3.ppad || 0), L = k((e3._m > 0 ? r3.ppadminus : r3.ppadplus) || r3.ppad || 0), S = k(r3.vpadplus || r3.vpad), C = k(r3.vpadminus || r3.vpad);
            if (!T2) {
              if (d2 = 1 / 0, h2 = -1 / 0, w2) for (n2 = 0; n2 < g2; n2++) (i2 = t3[n2]) < d2 && i2 > 0 && (d2 = i2), i2 > h2 && i2 < o && (h2 = i2);
              else for (n2 = 0; n2 < g2; n2++) (i2 = t3[n2]) < d2 && i2 > -o && (d2 = i2), i2 > h2 && i2 < o && (h2 = i2);
              t3 = [d2, h2], g2 = 2;
            }
            var O = { tozero: _2, extrapad: x2 };
            function D(r4) {
              l2 = t3[r4], a(l2) && (u2 = A(r4), f2 = L(r4), M2 ? (s2 = e3.c2l(l2) - C(r4), c2 = e3.c2l(l2) + S(r4)) : (d2 = l2 - C(r4), h2 = l2 + S(r4), w2 && d2 < h2 / 10 && (d2 = h2 / 10), s2 = e3.c2l(d2), c2 = e3.c2l(h2)), _2 && (s2 = Math.min(0, s2), c2 = Math.max(0, c2)), b(s2) && m(p2, s2, f2, O), b(c2) && y(v2, c2, u2, O));
            }
            var P = Math.min(6, g2);
            for (n2 = 0; n2 < P; n2++) D(n2);
            for (n2 = g2 - 1; n2 >= P; n2--) D(n2);
            return { min: p2, max: v2, opts: r3 };
          }, concatExtremes: g };
          var v = 3;
          function g(e3, t3, r3) {
            var n2, a2, i2, o2 = t3._id, l2 = e3._fullData, s2 = e3._fullLayout, c2 = [], f2 = [];
            function d2(e4, t4) {
              for (n2 = 0; n2 < t4.length; n2++) {
                var r4 = e4[t4[n2]], l3 = (r4._extremes || {})[o2];
                if (true === r4.visible && l3) {
                  for (a2 = 0; a2 < l3.min.length; a2++) i2 = l3.min[a2], m(c2, i2.val, i2.pad, { extrapad: i2.extrapad });
                  for (a2 = 0; a2 < l3.max.length; a2++) i2 = l3.max[a2], y(f2, i2.val, i2.pad, { extrapad: i2.extrapad });
                }
              }
            }
            if (d2(l2, t3._traceIndices), d2(s2.annotations || [], t3._annIndices || []), d2(s2.shapes || [], t3._shapeIndices || []), t3._matchGroup && !r3) {
              for (var h2 in t3._matchGroup) if (h2 !== t3._id) {
                var p2 = u(e3, h2), v2 = g(e3, p2, true), x2 = t3._length / p2._length;
                for (a2 = 0; a2 < v2.min.length; a2++) i2 = v2.min[a2], m(c2, i2.val, i2.pad * x2, { extrapad: i2.extrapad });
                for (a2 = 0; a2 < v2.max.length; a2++) i2 = v2.max[a2], y(f2, i2.val, i2.pad * x2, { extrapad: i2.extrapad });
              }
            }
            return { min: c2, max: f2 };
          }
          function m(e3, t3, r3, n2) {
            x(e3, t3, r3, n2, _);
          }
          function y(e3, t3, r3, n2) {
            x(e3, t3, r3, n2, w);
          }
          function x(e3, t3, r3, n2, a2) {
            for (var i2 = n2.tozero, o2 = n2.extrapad, l2 = true, s2 = 0; s2 < e3.length && l2; s2++) {
              var c2 = e3[s2];
              if (a2(c2.val, t3) && c2.pad >= r3 && (c2.extrapad || !o2)) {
                l2 = false;
                break;
              }
              a2(t3, c2.val) && c2.pad <= r3 && (o2 || !c2.extrapad) && (e3.splice(s2, 1), s2--);
            }
            if (l2) {
              var u2 = i2 && 0 === t3;
              e3.push({ val: t3, pad: u2 ? 0 : r3, extrapad: !u2 && o2 });
            }
          }
          function b(e3) {
            return a(e3) && Math.abs(e3) < o;
          }
          function _(e3, t3) {
            return e3 <= t3;
          }
          function w(e3, t3) {
            return e3 >= t3;
          }
          function T(e3, t3, r3) {
            return void 0 === t3 || void 0 === r3 || (t3 = e3.d2l(t3)) < e3.d2l(r3);
          }
          function M(e3, t3) {
            if (!t3 || !t3.autorangeoptions) return e3;
            var r3 = e3[0], n2 = e3[1], a2 = t3.autorangeoptions.include;
            if (void 0 !== a2) {
              var o2 = t3.d2l(r3), l2 = t3.d2l(n2);
              i.isArrayOrTypedArray(a2) || (a2 = [a2]);
              for (var s2 = 0; s2 < a2.length; s2++) {
                var c2 = t3.d2l(a2[s2]);
                o2 >= c2 && (o2 = c2, r3 = c2), l2 <= c2 && (l2 = c2, n2 = c2);
              }
            }
            return r3 = function(e4, t4) {
              var r4 = t4.autorangeoptions;
              return r4 && void 0 !== r4.minallowed && T(t4, r4.minallowed, r4.maxallowed) ? r4.minallowed : r4 && void 0 !== r4.clipmin && T(t4, r4.clipmin, r4.clipmax) ? Math.max(e4, t4.d2l(r4.clipmin)) : e4;
            }(r3, t3), n2 = function(e4, t4) {
              var r4 = t4.autorangeoptions;
              return r4 && void 0 !== r4.maxallowed && T(t4, r4.minallowed, r4.maxallowed) ? r4.maxallowed : r4 && void 0 !== r4.clipmax && T(t4, r4.clipmin, r4.clipmax) ? Math.min(e4, t4.d2l(r4.clipmax)) : e4;
            }(n2, t3), [r3, n2];
          }
        }, 5511: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n, a;
            if (r2) {
              var i = "reversed" === t2 || "min reversed" === t2 || "max reversed" === t2;
              n = r2[i ? 1 : 0], a = r2[i ? 0 : 1];
            }
            var o = e3("autorangeoptions.minallowed", null === a ? n : void 0), l = e3("autorangeoptions.maxallowed", null === n ? a : void 0);
            void 0 === o && e3("autorangeoptions.clipmin"), void 0 === l && e3("autorangeoptions.clipmax"), e3("autorangeoptions.include");
          };
        }, 9714: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(4122), o = r2(3626), l = r2(4809), s = l.strTranslate, c = r2(635), u = r2(7240), f = r2(8766), d = r2(2203), h = r2(5829), p = r2(8599), v = r2(3821), g = v.ONEMAXYEAR, m = v.ONEAVGYEAR, y = v.ONEMINYEAR, x = v.ONEMAXQUARTER, b = v.ONEAVGQUARTER, _ = v.ONEMINQUARTER, w = v.ONEMAXMONTH, T = v.ONEAVGMONTH, M = v.ONEMINMONTH, k = v.ONEWEEK, A = v.ONEDAY, L = A / 2, S = v.ONEHOUR, C = v.ONEMIN, O = v.ONESEC, D = v.ONEMILLI, P = v.ONEMICROSEC, z = v.MINUS_SIGN, I = v.BADNUM, E = { K: "zeroline" }, R = { K: "gridline", L: "path" }, N = { K: "minor-gridline", L: "path" }, F = { K: "tick", L: "path" }, H = { K: "tick", L: "text" }, B = { width: ["x", "r", "l", "xl", "xr"], height: ["y", "t", "b", "yt", "yb"], right: ["r", "xr"], left: ["l", "xl"], top: ["t", "yt"], bottom: ["b", "yb"] }, j = r2(4530), Y = j.MID_SHIFT, V = j.CAP_SHIFT, U = j.LINE_SPACING, q = j.OPPOSITE_SIDE, G = e2.exports = {};
          G.setConvert = r2(9091);
          var Z = r2(9666), W = r2(5975), J = W.idSort, X = W.isLinked;
          G.id2name = W.id2name, G.name2id = W.name2id, G.cleanId = W.cleanId, G.list = W.list, G.listIds = W.listIds, G.getFromId = W.getFromId, G.getFromTrace = W.getFromTrace;
          var K = r2(2919);
          G.getAutoRange = K.getAutoRange, G.findExtremes = K.findExtremes;
          var Q = 1e-4;
          function $(e3) {
            var t3 = (e3[1] - e3[0]) * Q;
            return [e3[0] - t3, e3[1] + t3];
          }
          G.coerceRef = function(e3, t3, r3, n2, a2, i2) {
            var o2 = n2.charAt(n2.length - 1), s2 = r3._fullLayout._subplots[o2 + "axis"], c2 = n2 + "ref", u2 = {};
            return a2 || (a2 = s2[0] || ("string" == typeof i2 ? i2 : i2[0])), i2 || (i2 = a2), s2 = s2.concat(s2.map(function(e4) {
              return e4 + " domain";
            })), u2[c2] = { valType: "enumerated", values: s2.concat(i2 ? "string" == typeof i2 ? [i2] : i2 : []), dflt: a2 }, l.coerce(e3, t3, u2, c2);
          }, G.getRefType = function(e3) {
            return void 0 === e3 ? e3 : "paper" === e3 ? "paper" : "pixel" === e3 ? "pixel" : /( domain)$/.test(e3) ? "domain" : "range";
          }, G.coercePosition = function(e3, t3, r3, n2, a2, i2) {
            var o2, s2;
            if ("range" !== G.getRefType(n2)) o2 = l.ensureNumber, s2 = r3(a2, i2);
            else {
              var c2 = G.getFromId(t3, n2);
              s2 = r3(a2, i2 = c2.fraction2r(i2)), o2 = c2.cleanPos;
            }
            e3[a2] = o2(s2);
          }, G.cleanPosition = function(e3, t3, r3) {
            return ("paper" === r3 || "pixel" === r3 ? l.ensureNumber : G.getFromId(t3, r3).cleanPos)(e3);
          }, G.redrawComponents = function(e3, t3) {
            t3 = t3 || G.listIds(e3);
            var r3 = e3._fullLayout;
            function n2(n3, a2, i2, l2) {
              for (var s2 = o.getComponentMethod(n3, a2), c2 = {}, u2 = 0; u2 < t3.length; u2++) for (var f2 = r3[G.id2name(t3[u2])][i2], d2 = 0; d2 < f2.length; d2++) {
                var h2 = f2[d2];
                if (!c2[h2] && (s2(e3, h2), c2[h2] = 1, l2)) return;
              }
            }
            n2("annotations", "drawOne", "_annIndices"), n2("shapes", "drawOne", "_shapeIndices"), n2("images", "draw", "_imgIndices", true), n2("selections", "drawOne", "_selectionIndices");
          };
          var ee = G.getDataConversions = function(e3, t3, r3, n2) {
            var a2, i2 = "x" === r3 || "y" === r3 || "z" === r3 ? r3 : n2;
            if (l.isArrayOrTypedArray(i2)) {
              if (a2 = { type: Z(n2, void 0, { autotypenumbers: e3._fullLayout.autotypenumbers }), _categories: [] }, G.setConvert(a2), "category" === a2.type) for (var o2 = 0; o2 < n2.length; o2++) a2.d2c(n2[o2]);
            } else a2 = G.getFromTrace(e3, t3, i2);
            return a2 ? { d2c: a2.d2c, c2d: a2.c2d } : "ids" === i2 ? { d2c: re, c2d: re } : { d2c: te, c2d: te };
          };
          function te(e3) {
            return +e3;
          }
          function re(e3) {
            return String(e3);
          }
          function ne(e3, t3) {
            return Math.abs((e3 / t3 + 0.5) % 1 - 0.5) < 1e-3;
          }
          function ae(e3, t3) {
            return Math.abs(e3 / t3 - 1) < 1e-3;
          }
          function ie(e3) {
            return +e3.substring(1);
          }
          function oe(e3, t3) {
            return e3.rangebreaks && (t3 = t3.filter(function(t4) {
              return e3.maskBreaks(t4.x) !== I;
            })), t3;
          }
          function le(e3) {
            var t3 = e3._mainAxis, r3 = [];
            if (t3._vals) {
              for (var n2 = 0; n2 < t3._vals.length; n2++) if (!t3._vals[n2].noTick) {
                var a2 = t3.l2p(t3._vals[n2].x), i2 = e3.p2l(a2), o2 = G.tickText(e3, i2);
                t3._vals[n2].minor && (o2.minor = true, o2.text = ""), r3.push(o2);
              }
            }
            return oe(e3, r3);
          }
          function se(e3, t3) {
            var r3 = $(l.simpleMap(e3.range, e3.r2l)), n2 = Math.min(r3[0], r3[1]), a2 = Math.max(r3[0], r3[1]), i2 = "category" === e3.type ? e3.d2l_noadd : e3.d2l;
            "log" === e3.type && "L" !== String(e3.dtick).charAt(0) && (e3.dtick = "L" + Math.pow(10, Math.floor(Math.min(e3.range[0], e3.range[1])) - 1));
            for (var o2 = [], s2 = 0; s2 <= 1; s2++) if ((void 0 === t3 || !(t3 && s2 || false === t3 && !s2)) && (!s2 || e3.minor)) {
              var c2 = s2 ? e3.minor.tickvals : e3.tickvals, u2 = s2 ? [] : e3.ticktext;
              if (c2) {
                l.isArrayOrTypedArray(u2) || (u2 = []);
                for (var f2 = 0; f2 < c2.length; f2++) {
                  var d2 = i2(c2[f2]);
                  if (d2 > n2 && d2 < a2) {
                    var h2 = G.tickText(e3, d2, false, String(u2[f2]));
                    s2 && (h2.minor = true, h2.text = ""), o2.push(h2);
                  }
                }
              }
            }
            return oe(e3, o2);
          }
          G.getDataToCoordFunc = function(e3, t3, r3, n2) {
            return ee(e3, t3, r3, n2).d2c;
          }, G.counterLetter = function(e3) {
            var t3 = e3.charAt(0);
            return "x" === t3 ? "y" : "y" === t3 ? "x" : void 0;
          }, G.minDtick = function(e3, t3, r3, n2) {
            -1 === ["log", "category", "multicategory"].indexOf(e3.type) && n2 ? void 0 === e3._minDtick ? (e3._minDtick = t3, e3._forceTick0 = r3) : e3._minDtick && ((e3._minDtick / t3 + 1e-6) % 1 < 2e-6 && ((r3 - e3._forceTick0) / t3 % 1 + 1.000001) % 1 < 2e-6 ? (e3._minDtick = t3, e3._forceTick0 = r3) : ((t3 / e3._minDtick + 1e-6) % 1 > 2e-6 || ((r3 - e3._forceTick0) / e3._minDtick % 1 + 1.000001) % 1 > 2e-6) && (e3._minDtick = 0)) : e3._minDtick = 0;
          }, G.saveRangeInitial = function(e3, t3) {
            for (var r3 = G.list(e3, "", true), n2 = false, a2 = 0; a2 < r3.length; a2++) {
              var i2 = r3[a2], o2 = void 0 === i2._rangeInitial0 && void 0 === i2._rangeInitial1, l2 = o2 || i2.range[0] !== i2._rangeInitial0 || i2.range[1] !== i2._rangeInitial1, s2 = i2.autorange;
              (o2 && true !== s2 || t3 && l2) && (i2._rangeInitial0 = "min" === s2 || "max reversed" === s2 ? void 0 : i2.range[0], i2._rangeInitial1 = "max" === s2 || "min reversed" === s2 ? void 0 : i2.range[1], i2._autorangeInitial = s2, n2 = true);
            }
            return n2;
          }, G.saveShowSpikeInitial = function(e3, t3) {
            for (var r3 = G.list(e3, "", true), n2 = false, a2 = "on", i2 = 0; i2 < r3.length; i2++) {
              var o2 = r3[i2], l2 = void 0 === o2._showSpikeInitial, s2 = l2 || !(o2.showspikes === o2._showspikes);
              (l2 || t3 && s2) && (o2._showSpikeInitial = o2.showspikes, n2 = true), "on" !== a2 || o2.showspikes || (a2 = "off");
            }
            return e3._fullLayout._cartesianSpikesEnabled = a2, n2;
          }, G.autoBin = function(e3, t3, r3, n2, i2, o2) {
            var s2, c2 = l.aggNums(Math.min, null, e3), u2 = l.aggNums(Math.max, null, e3);
            if ("category" === t3.type || "multicategory" === t3.type) return { start: c2 - 0.5, end: u2 + 0.5, size: Math.max(1, Math.round(o2) || 1), _dataSpan: u2 - c2 };
            if (i2 || (i2 = t3.calendar), s2 = "log" === t3.type ? { type: "linear", range: [c2, u2] } : { type: t3.type, range: l.simpleMap([c2, u2], t3.c2r, 0, i2), calendar: i2 }, G.setConvert(s2), o2 = o2 && p.dtick(o2, s2.type)) s2.dtick = o2, s2.tick0 = p.tick0(void 0, s2.type, i2);
            else {
              var f2;
              if (r3) f2 = (u2 - c2) / r3;
              else {
                var d2 = l.distinctVals(e3), h2 = Math.pow(10, Math.floor(Math.log(d2.minDiff) / Math.LN10)), v2 = h2 * l.roundUp(d2.minDiff / h2, [0.9, 1.9, 4.9, 9.9], true);
                f2 = Math.max(v2, 2 * l.stdev(e3) / Math.pow(e3.length, n2 ? 0.25 : 0.4)), a(f2) || (f2 = 1);
              }
              G.autoTicks(s2, f2);
            }
            var g2, m2 = s2.dtick, y2 = G.tickIncrement(G.tickFirst(s2), m2, "reverse", i2);
            if ("number" == typeof m2) y2 = function(e4, t4, r4, n3, i3) {
              var o3 = 0, l2 = 0, s3 = 0, c3 = 0;
              function u3(t5) {
                return (1 + 100 * (t5 - e4) / r4.dtick) % 100 < 2;
              }
              for (var f3 = 0; f3 < t4.length; f3++) t4[f3] % 1 == 0 ? s3++ : a(t4[f3]) || c3++, u3(t4[f3]) && o3++, u3(t4[f3] + r4.dtick / 2) && l2++;
              var d3 = t4.length - c3;
              if (s3 === d3 && "date" !== r4.type) r4.dtick < 1 ? e4 = n3 - 0.5 * r4.dtick : (e4 -= 0.5) + r4.dtick < n3 && (e4 += r4.dtick);
              else if (l2 < 0.1 * d3 && (o3 > 0.3 * d3 || u3(n3) || u3(i3))) {
                var h3 = r4.dtick / 2;
                e4 += e4 + h3 < n3 ? h3 : -h3;
              }
              return e4;
            }(y2, e3, s2, c2, u2), g2 = y2 + (1 + Math.floor((u2 - y2) / m2)) * m2;
            else for ("M" === s2.dtick.charAt(0) && (y2 = function(e4, t4, r4, n3, a2) {
              var i3 = l.findExactDates(t4, a2);
              if (i3.exactDays > 0.8) {
                var o3 = Number(r4.substr(1));
                i3.exactYears > 0.8 && o3 % 12 == 0 ? e4 = G.tickIncrement(e4, "M6", "reverse") + 1.5 * A : i3.exactMonths > 0.8 ? e4 = G.tickIncrement(e4, "M1", "reverse") + 15.5 * A : e4 -= L;
                var s3 = G.tickIncrement(e4, r4);
                if (s3 <= n3) return s3;
              }
              return e4;
            }(y2, e3, m2, c2, i2)), g2 = y2; g2 <= u2; ) g2 = G.tickIncrement(g2, m2, false, i2);
            return { start: t3.c2r(y2, 0, i2), end: t3.c2r(g2, 0, i2), size: m2, _dataSpan: u2 - c2 };
          }, G.prepMinorTicks = function(e3, t3, r3) {
            if (!t3.minor.dtick) {
              delete e3.dtick;
              var n2, i2 = t3.dtick && a(t3._tmin);
              if (i2) {
                var o2 = G.tickIncrement(t3._tmin, t3.dtick, true);
                n2 = [t3._tmin, 0.99 * o2 + 0.01 * t3._tmin];
              } else {
                var s2 = l.simpleMap(t3.range, t3.r2l);
                n2 = [s2[0], 0.8 * s2[0] + 0.2 * s2[1]];
              }
              if (e3.range = l.simpleMap(n2, t3.l2r), e3._isMinor = true, G.prepTicks(e3, r3), i2) {
                var c2 = a(t3.dtick), u2 = a(e3.dtick), f2 = c2 ? t3.dtick : +t3.dtick.substring(1), d2 = u2 ? e3.dtick : +e3.dtick.substring(1);
                c2 && u2 ? ne(f2, d2) ? f2 === 2 * k && d2 === 2 * A && (e3.dtick = k) : f2 === 2 * k && d2 === 3 * A ? e3.dtick = k : f2 !== k || (t3._input.minor || {}).nticks ? ae(f2 / d2, 2.5) ? e3.dtick = f2 / 2 : e3.dtick = f2 : e3.dtick = A : "M" === String(t3.dtick).charAt(0) ? u2 ? e3.dtick = "M1" : ne(f2, d2) ? f2 >= 12 && 2 === d2 && (e3.dtick = "M3") : e3.dtick = t3.dtick : "L" === String(e3.dtick).charAt(0) ? "L" === String(t3.dtick).charAt(0) ? ne(f2, d2) || (e3.dtick = ae(f2 / d2, 2.5) ? t3.dtick / 2 : t3.dtick) : e3.dtick = "D1" : "D2" === e3.dtick && +t3.dtick > 1 && (e3.dtick = 1);
              }
              e3.range = t3.range;
            }
            void 0 === t3.minor._tick0Init && (e3.tick0 = t3.tick0);
          }, G.prepTicks = function(e3, t3) {
            var r3 = l.simpleMap(e3.range, e3.r2l, void 0, void 0, t3);
            if ("auto" === e3.tickmode || !e3.dtick) {
              var n2, i2 = e3.nticks;
              i2 || ("category" === e3.type || "multicategory" === e3.type ? (n2 = e3.tickfont ? l.bigFont(e3.tickfont.size || 12) : 15, i2 = e3._length / n2) : (n2 = "y" === e3._id.charAt(0) ? 40 : 80, i2 = l.constrain(e3._length / n2, 4, 9) + 1), "radialaxis" === e3._name && (i2 *= 2)), e3.minor && "array" !== e3.minor.tickmode || "array" === e3.tickmode && (i2 *= 100), e3._roughDTick = Math.abs(r3[1] - r3[0]) / i2, G.autoTicks(e3, e3._roughDTick), e3._minDtick > 0 && e3.dtick < 2 * e3._minDtick && (e3.dtick = e3._minDtick, e3.tick0 = e3.l2r(e3._forceTick0));
            }
            "period" === e3.ticklabelmode && function(e4) {
              var t4;
              function r4() {
                return !(a(e4.dtick) || "M" !== e4.dtick.charAt(0));
              }
              var n3 = r4(), i3 = G.getTickFormat(e4);
              if (i3) {
                var o2 = e4._dtickInit !== e4.dtick;
                /%[fLQsSMX]/.test(i3) || (/%[HI]/.test(i3) ? (t4 = S, o2 && !n3 && e4.dtick < S && (e4.dtick = S)) : /%p/.test(i3) ? (t4 = L, o2 && !n3 && e4.dtick < L && (e4.dtick = L)) : /%[Aadejuwx]/.test(i3) ? (t4 = A, o2 && !n3 && e4.dtick < A && (e4.dtick = A)) : /%[UVW]/.test(i3) ? (t4 = k, o2 && !n3 && e4.dtick < k && (e4.dtick = k)) : /%[Bbm]/.test(i3) ? (t4 = T, o2 && (n3 ? ie(e4.dtick) < 1 : e4.dtick < M) && (e4.dtick = "M1")) : /%[q]/.test(i3) ? (t4 = b, o2 && (n3 ? ie(e4.dtick) < 3 : e4.dtick < _) && (e4.dtick = "M3")) : /%[Yy]/.test(i3) && (t4 = m, o2 && (n3 ? ie(e4.dtick) < 12 : e4.dtick < y) && (e4.dtick = "M12")));
              }
              (n3 = r4()) && e4.tick0 === e4._dowTick0 && (e4.tick0 = e4._rawTick0), e4._definedDelta = t4;
            }(e3), e3.tick0 || (e3.tick0 = "date" === e3.type ? "2000-01-01" : 0), "date" === e3.type && e3.dtick < 0.1 && (e3.dtick = 0.1), me(e3);
          }, G.calcTicks = function(e3, t3) {
            for (var r3, n2, i2, o2, s2 = e3.type, c2 = e3.calendar, u2 = e3.ticklabelstep, f2 = "period" === e3.ticklabelmode, d2 = e3.range[0] > e3.range[1], h2 = !e3.ticklabelindex || l.isArrayOrTypedArray(e3.ticklabelindex) ? e3.ticklabelindex : [e3.ticklabelindex], p2 = l.simpleMap(e3.range, e3.r2l, void 0, void 0, t3), v2 = p2[1] < p2[0], z2 = Math.min(p2[0], p2[1]), E2 = Math.max(p2[0], p2[1]), R2 = Math.max(1e3, e3._length || 0), N2 = [], F2 = [], H2 = [], B2 = [], j2 = [], Y2 = e3.minor && (e3.minor.ticks || e3.minor.showgrid), V2 = 1; V2 >= (Y2 ? 0 : 1); V2--) {
              var U2 = !V2;
              V2 ? (e3._dtickInit = e3.dtick, e3._tick0Init = e3.tick0) : (e3.minor._dtickInit = e3.minor.dtick, e3.minor._tick0Init = e3.minor.tick0);
              var q2 = V2 ? e3 : l.extendFlat({}, e3, e3.minor);
              if (U2 ? G.prepMinorTicks(q2, e3, t3) : G.prepTicks(q2, t3), "array" !== q2.tickmode) if ("sync" !== q2.tickmode) {
                var Z2 = $(p2), W2 = Z2[0], J2 = Z2[1], X2 = a(q2.dtick), K2 = "log" === s2 && !(X2 || "L" === q2.dtick.charAt(0)), Q2 = G.tickFirst(q2, t3);
                if (V2) {
                  if (e3._tmin = Q2, Q2 < W2 !== v2) break;
                  "category" !== s2 && "multicategory" !== s2 || (J2 = v2 ? Math.max(-0.5, J2) : Math.min(e3._categories.length - 0.5, J2));
                }
                var ee2, te2, re2 = null, ne2 = Q2;
                V2 && (X2 ? te2 = e3.dtick : "date" === s2 ? "string" == typeof e3.dtick && "M" === e3.dtick.charAt(0) && (te2 = T * e3.dtick.substring(1)) : te2 = e3._roughDTick, ee2 = Math.round((e3.r2l(ne2) - e3.r2l(e3.tick0)) / te2) - 1);
                var ae2 = q2.dtick;
                for (q2.rangebreaks && q2._tick0Init !== q2.tick0 && (ne2 = Ne(ne2, e3), v2 || (ne2 = G.tickIncrement(ne2, ae2, !v2, c2))), V2 && f2 && (ne2 = G.tickIncrement(ne2, ae2, !v2, c2), ee2--); v2 ? ne2 >= J2 : ne2 <= J2; ne2 = G.tickIncrement(ne2, ae2, v2, c2)) {
                  if (V2 && ee2++, q2.rangebreaks && !v2) {
                    if (ne2 < W2) continue;
                    if (q2.maskBreaks(ne2) === I && Ne(ne2, q2) >= E2) break;
                  }
                  if (H2.length > R2 || ne2 === re2) break;
                  re2 = ne2;
                  var ie2 = { value: ne2 };
                  V2 ? (K2 && ne2 !== (0 | ne2) && (ie2.simpleLabel = true), u2 > 1 && ee2 % u2 && (ie2.skipLabel = true), H2.push(ie2)) : (ie2.minor = true, B2.push(ie2));
                }
              } else H2 = [], N2 = le(e3);
              else V2 ? (H2 = [], N2 = se(e3, !U2)) : (B2 = [], F2 = se(e3, !U2));
            }
            !B2 || B2.length < 2 ? h2 = false : (r3 = (B2[1].value - B2[0].value) * (d2 ? -1 : 1), n2 = e3.tickformat, (/%f/.test(n2) ? r3 >= P : /%L/.test(n2) ? r3 >= D : /%[SX]/.test(n2) ? r3 >= O : /%M/.test(n2) ? r3 >= C : /%[HI]/.test(n2) ? r3 >= S : /%p/.test(n2) ? r3 >= L : /%[Aadejuwx]/.test(n2) ? r3 >= A : /%[UVW]/.test(n2) ? r3 >= k : /%[Bbm]/.test(n2) ? r3 >= M : /%[q]/.test(n2) ? r3 >= _ : !/%[Yy]/.test(n2) || r3 >= y) || (h2 = false));
            if (h2) {
              var oe2 = H2.concat(B2);
              f2 && H2.length && (oe2 = oe2.slice(1)), (oe2 = oe2.sort(function(e4, t4) {
                return e4.value - t4.value;
              }).filter(function(e4, t4, r4) {
                return 0 === t4 || e4.value !== r4[t4 - 1].value;
              })).map(function(e4, t4) {
                return void 0 !== e4.minor || e4.skipLabel ? null : t4;
              }).filter(function(e4) {
                return null !== e4;
              }).forEach(function(e4) {
                h2.map(function(t4) {
                  var r4 = e4 + t4;
                  r4 >= 0 && r4 < oe2.length && l.pushUnique(j2, oe2[r4]);
                });
              });
            } else j2 = H2;
            if (Y2 && !("inside" === e3.minor.ticks && "outside" === e3.ticks || "outside" === e3.minor.ticks && "inside" === e3.ticks)) {
              for (var ce2 = H2.map(function(e4) {
                return e4.value;
              }), ue2 = [], fe2 = 0; fe2 < B2.length; fe2++) {
                var de2 = B2[fe2], he2 = de2.value;
                if (-1 === ce2.indexOf(he2)) {
                  for (var pe2 = false, ve2 = 0; !pe2 && ve2 < H2.length; ve2++) 1e7 + H2[ve2].value === 1e7 + he2 && (pe2 = true);
                  pe2 || ue2.push(de2);
                }
              }
              B2 = ue2;
            }
            if (f2 && function(e4, t4, r4) {
              for (var n3 = 0; n3 < e4.length; n3++) {
                var a2 = e4[n3].value, i3 = n3, o3 = n3 + 1;
                n3 < e4.length - 1 ? (i3 = n3, o3 = n3 + 1) : n3 > 0 ? (i3 = n3 - 1, o3 = n3) : (i3 = n3, o3 = n3);
                var l2, s3 = e4[i3].value, c3 = e4[o3].value, u3 = Math.abs(c3 - s3), f3 = r4 || u3, d3 = 0;
                f3 >= y ? d3 = u3 >= y && u3 <= g ? u3 : m : r4 === b && f3 >= _ ? d3 = u3 >= _ && u3 <= x ? u3 : b : f3 >= M ? d3 = u3 >= M && u3 <= w ? u3 : T : r4 === k && f3 >= k ? d3 = k : f3 >= A ? d3 = A : r4 === L && f3 >= L ? d3 = L : r4 === S && f3 >= S && (d3 = S), d3 >= u3 && (d3 = u3, l2 = true);
                var h3 = a2 + d3;
                if (t4.rangebreaks && d3 > 0) {
                  for (var p3 = 0, v3 = 0; v3 < 84; v3++) {
                    var C2 = (v3 + 0.5) / 84;
                    t4.maskBreaks(a2 * (1 - C2) + C2 * h3) !== I && p3++;
                  }
                  (d3 *= p3 / 84) || (e4[n3].drop = true), l2 && u3 > k && (d3 = u3);
                }
                (d3 > 0 || 0 === n3) && (e4[n3].periodX = a2 + d3 / 2);
              }
            }(j2, e3, e3._definedDelta), e3.rangebreaks) {
              var ge2 = "y" === e3._id.charAt(0), me2 = 1;
              "auto" === e3.tickmode && (me2 = e3.tickfont ? e3.tickfont.size : 12);
              var ye2 = NaN;
              for (i2 = H2.length - 1; i2 > -1; i2--) if (H2[i2].drop) H2.splice(i2, 1);
              else {
                H2[i2].value = Ne(H2[i2].value, e3);
                var xe2 = e3.c2p(H2[i2].value);
                (ge2 ? ye2 > xe2 - me2 : ye2 < xe2 + me2) ? H2.splice(v2 ? i2 + 1 : i2, 1) : ye2 = xe2;
              }
            }
            Re(e3) && 360 === Math.abs(p2[1] - p2[0]) && H2.pop(), e3._tmax = (H2[H2.length - 1] || {}).value, e3._prevDateHead = "", e3._inCalcTicks = true;
            var be2, _e2 = function(t4) {
              t4.text = "", e3._prevDateHead = o2;
            };
            function we2(e4, t4) {
              var r4 = G.tickText(e4, t4.value, false, t4.simpleLabel), n3 = t4.periodX;
              return void 0 !== n3 && (r4.periodX = n3, (n3 > E2 || n3 < z2) && (n3 > E2 && (r4.periodX = E2), n3 < z2 && (r4.periodX = z2), _e2(r4))), r4;
            }
            for (H2 = H2.concat(B2), i2 = 0; i2 < H2.length; i2++) {
              var Te2 = H2[i2].minor, Me2 = H2[i2].value;
              Te2 ? ((be2 = h2 && -1 !== j2.indexOf(H2[i2]) ? we2(e3, H2[i2]) : { x: Me2 }).minor = true, F2.push(be2)) : (o2 = e3._prevDateHead, be2 = we2(e3, H2[i2]), (H2[i2].skipLabel || h2 && -1 === j2.indexOf(H2[i2])) && _e2(be2), N2.push(be2));
            }
            return N2 = N2.concat(F2), e3._inCalcTicks = false, f2 && N2.length && (N2[0].noTick = true), N2;
          };
          var ce = [2, 5, 10], ue = [1, 2, 3, 6, 12], fe = [1, 2, 5, 10, 15, 30], de = [1, 2, 3, 7, 14], he = [-0.046, 0, 0.301, 0.477, 0.602, 0.699, 0.778, 0.845, 0.903, 0.954, 1], pe = [-0.301, 0, 0.301, 0.699, 1], ve = [15, 30, 45, 90, 180];
          function ge(e3, t3, r3) {
            return t3 * l.roundUp(e3 / t3, r3);
          }
          function me(e3) {
            var t3 = e3.dtick;
            if (e3._tickexponent = 0, a(t3) || "string" == typeof t3 || (t3 = 1), "category" !== e3.type && "multicategory" !== e3.type || (e3._tickround = null), "date" === e3.type) {
              var r3 = e3.r2l(e3.tick0), n2 = e3.l2r(r3).replace(/(^-|i)/g, ""), i2 = n2.length;
              if ("M" === String(t3).charAt(0)) i2 > 10 || "01-01" !== n2.substr(5) ? e3._tickround = "d" : e3._tickround = +t3.substr(1) % 12 == 0 ? "y" : "m";
              else if (t3 >= A && i2 <= 10 || t3 >= 15 * A) e3._tickround = "d";
              else if (t3 >= C && i2 <= 16 || t3 >= S) e3._tickround = "M";
              else if (t3 >= O && i2 <= 19 || t3 >= C) e3._tickround = "S";
              else {
                var o2 = e3.l2r(r3 + t3).replace(/^-/, "").length;
                e3._tickround = Math.max(i2, o2) - 20, e3._tickround < 0 && (e3._tickround = 4);
              }
            } else if (a(t3) || "L" === t3.charAt(0)) {
              var l2 = e3.range.map(e3.r2d || Number);
              a(t3) || (t3 = Number(t3.substr(1))), e3._tickround = 2 - Math.floor(Math.log(t3) / Math.LN10 + 0.01);
              var s2 = Math.max(Math.abs(l2[0]), Math.abs(l2[1])), c2 = Math.floor(Math.log(s2) / Math.LN10 + 0.01), u2 = void 0 === e3.minexponent ? 3 : e3.minexponent;
              Math.abs(c2) > u2 && (be(e3.exponentformat) && !_e(c2) ? e3._tickexponent = 3 * Math.round((c2 - 1) / 3) : e3._tickexponent = c2);
            } else e3._tickround = null;
          }
          function ye(e3, t3, r3) {
            var n2 = e3.tickfont || {};
            return { x: t3, dx: 0, dy: 0, text: r3 || "", fontSize: n2.size, font: n2.family, fontWeight: n2.weight, fontStyle: n2.style, fontVariant: n2.variant, fontTextcase: n2.textcase, fontLineposition: n2.lineposition, fontShadow: n2.shadow, fontColor: n2.color };
          }
          G.autoTicks = function(e3, t3, r3) {
            var n2;
            function i2(e4) {
              return Math.pow(e4, Math.floor(Math.log(t3) / Math.LN10));
            }
            if ("date" === e3.type) {
              e3.tick0 = l.dateTick0(e3.calendar, 0);
              var o2 = 2 * t3;
              if (o2 > m) t3 /= m, n2 = i2(10), e3.dtick = "M" + 12 * ge(t3, n2, ce);
              else if (o2 > T) t3 /= T, e3.dtick = "M" + ge(t3, 1, ue);
              else if (o2 > A) {
                if (e3.dtick = ge(t3, A, e3._hasDayOfWeekBreaks ? [1, 2, 7, 14] : de), !r3) {
                  var s2 = G.getTickFormat(e3), c2 = "period" === e3.ticklabelmode;
                  c2 && (e3._rawTick0 = e3.tick0), /%[uVW]/.test(s2) ? e3.tick0 = l.dateTick0(e3.calendar, 2) : e3.tick0 = l.dateTick0(e3.calendar, 1), c2 && (e3._dowTick0 = e3.tick0);
                }
              } else o2 > S ? e3.dtick = ge(t3, S, ue) : o2 > C ? e3.dtick = ge(t3, C, fe) : o2 > O ? e3.dtick = ge(t3, O, fe) : (n2 = i2(10), e3.dtick = ge(t3, n2, ce));
            } else if ("log" === e3.type) {
              e3.tick0 = 0;
              var u2 = l.simpleMap(e3.range, e3.r2l);
              if (e3._isMinor && (t3 *= 1.5), t3 > 0.7) e3.dtick = Math.ceil(t3);
              else if (Math.abs(u2[1] - u2[0]) < 1) {
                var f2 = 1.5 * Math.abs((u2[1] - u2[0]) / t3);
                t3 = Math.abs(Math.pow(10, u2[1]) - Math.pow(10, u2[0])) / f2, n2 = i2(10), e3.dtick = "L" + ge(t3, n2, ce);
              } else e3.dtick = t3 > 0.3 ? "D2" : "D1";
            } else "category" === e3.type || "multicategory" === e3.type ? (e3.tick0 = 0, e3.dtick = Math.ceil(Math.max(t3, 1))) : Re(e3) ? (e3.tick0 = 0, n2 = 1, e3.dtick = ge(t3, n2, ve)) : (e3.tick0 = 0, n2 = i2(10), e3.dtick = ge(t3, n2, ce));
            if (0 === e3.dtick && (e3.dtick = 1), !a(e3.dtick) && "string" != typeof e3.dtick) {
              var d2 = e3.dtick;
              throw e3.dtick = 1, "ax.dtick error: " + String(d2);
            }
          }, G.tickIncrement = function(e3, t3, r3, i2) {
            var o2 = r3 ? -1 : 1;
            if (a(t3)) return l.increment(e3, o2 * t3);
            var s2 = t3.charAt(0), c2 = o2 * Number(t3.substr(1));
            if ("M" === s2) return l.incrementMonth(e3, c2, i2);
            if ("L" === s2) return Math.log(Math.pow(10, e3) + c2) / Math.LN10;
            if ("D" === s2) {
              var u2 = "D2" === t3 ? pe : he, f2 = e3 + 0.01 * o2, d2 = l.roundUp(l.mod(f2, 1), u2, r3);
              return Math.floor(f2) + Math.log(n.round(Math.pow(10, d2), 1)) / Math.LN10;
            }
            throw "unrecognized dtick " + String(t3);
          }, G.tickFirst = function(e3, t3) {
            var r3 = e3.r2l || Number, i2 = l.simpleMap(e3.range, r3, void 0, void 0, t3), o2 = i2[1] < i2[0], s2 = o2 ? Math.floor : Math.ceil, c2 = $(i2)[0], u2 = e3.dtick, f2 = r3(e3.tick0);
            if (a(u2)) {
              var d2 = s2((c2 - f2) / u2) * u2 + f2;
              return "category" !== e3.type && "multicategory" !== e3.type || (d2 = l.constrain(d2, 0, e3._categories.length - 1)), d2;
            }
            var h2 = u2.charAt(0), p2 = Number(u2.substr(1));
            if ("M" === h2) {
              for (var v2, g2, m2, y2 = 0, x2 = f2; y2 < 10; ) {
                if (((v2 = G.tickIncrement(x2, u2, o2, e3.calendar)) - c2) * (x2 - c2) <= 0) return o2 ? Math.min(x2, v2) : Math.max(x2, v2);
                g2 = (c2 - (x2 + v2) / 2) / (v2 - x2), m2 = h2 + (Math.abs(Math.round(g2)) || 1) * p2, x2 = G.tickIncrement(x2, m2, g2 < 0 ? !o2 : o2, e3.calendar), y2++;
              }
              return l.error("tickFirst did not converge", e3), x2;
            }
            if ("L" === h2) return Math.log(s2((Math.pow(10, c2) - f2) / p2) * p2 + f2) / Math.LN10;
            if ("D" === h2) {
              var b2 = "D2" === u2 ? pe : he, _2 = l.roundUp(l.mod(c2, 1), b2, o2);
              return Math.floor(c2) + Math.log(n.round(Math.pow(10, _2), 1)) / Math.LN10;
            }
            throw "unrecognized dtick " + String(u2);
          }, G.tickText = function(e3, t3, r3, n2) {
            var i2, o2 = ye(e3, t3), s2 = "array" === e3.tickmode, c2 = r3 || s2, u2 = e3.type, f2 = "category" === u2 ? e3.d2l_noadd : e3.d2l, d2 = function(t4) {
              var r4 = e3.l2p(t4);
              return r4 >= 0 && r4 <= e3._length ? t4 : null;
            };
            if (s2 && l.isArrayOrTypedArray(e3.ticktext)) {
              var h2 = l.simpleMap(e3.range, e3.r2l), p2 = (Math.abs(h2[1] - h2[0]) - (e3._lBreaks || 0)) / 1e4;
              for (i2 = 0; i2 < e3.ticktext.length && !(Math.abs(t3 - f2(e3.tickvals[i2])) < p2); i2++) ;
              if (i2 < e3.ticktext.length) return o2.text = String(e3.ticktext[i2]), o2.xbnd = [d2(o2.x - 0.5), d2(o2.x + e3.dtick - 0.5)], o2;
            }
            function v2(n3) {
              if (void 0 === n3) return true;
              if (r3) return "none" === n3;
              var a2 = { first: e3._tmin, last: e3._tmax }[n3];
              return "all" !== n3 && t3 !== a2;
            }
            var g2 = r3 ? "never" : "none" !== e3.exponentformat && v2(e3.showexponent) ? "hide" : "";
            if ("date" === u2 ? function(e4, t4, r4, n3) {
              var i3 = e4._tickround, o3 = r4 && e4.hoverformat || G.getTickFormat(e4);
              (n3 = !o3 && n3) && (i3 = a(i3) ? 4 : { y: "m", m: "d", d: "M", M: "S", S: 4 }[i3]);
              var s3, c3 = l.formatDate(t4.x, o3, i3, e4._dateFormat, e4.calendar, e4._extraFormat), u3 = c3.indexOf("\n");
              if (-1 !== u3 && (s3 = c3.substr(u3 + 1), c3 = c3.substr(0, u3)), n3 && (void 0 === s3 || "00:00:00" !== c3 && "00:00" !== c3 ? 8 === c3.length && (c3 = c3.replace(/:00$/, "")) : (c3 = s3, s3 = "")), s3) if (r4) "d" === i3 ? c3 += ", " + s3 : c3 = s3 + (c3 ? ", " + c3 : "");
              else if (e4._inCalcTicks && e4._prevDateHead === s3) {
                var f3 = Fe(e4), d3 = e4._trueSide || e4.side;
                (!f3 && "top" === d3 || f3 && "bottom" === d3) && (c3 += "<br> ");
              } else e4._prevDateHead = s3, c3 += "<br>" + s3;
              t4.text = c3;
            }(e3, o2, r3, c2) : "log" === u2 ? function(e4, t4, r4, n3, i3) {
              var o3 = e4.dtick, s3 = t4.x, c3 = e4.tickformat, u3 = "string" == typeof o3 && o3.charAt(0);
              if ("never" === i3 && (i3 = ""), n3 && "L" !== u3 && (o3 = "L3", u3 = "L"), c3 || "L" === u3) t4.text = we(Math.pow(10, s3), e4, i3, n3);
              else if (a(o3) || "D" === u3 && l.mod(s3 + 0.01, 1) < 0.1) {
                var f3 = Math.round(s3), d3 = Math.abs(f3), h3 = e4.exponentformat;
                "power" === h3 || be(h3) && _e(f3) ? (t4.text = 0 === f3 ? 1 : 1 === f3 ? "10" : "10<sup>" + (f3 > 1 ? "" : z) + d3 + "</sup>", t4.fontSize *= 1.25) : ("e" === h3 || "E" === h3) && d3 > 2 ? t4.text = "1" + h3 + (f3 > 0 ? "+" : z) + d3 : (t4.text = we(Math.pow(10, s3), e4, "", "fakehover"), "D1" === o3 && "y" === e4._id.charAt(0) && (t4.dy -= t4.fontSize / 6));
              } else {
                if ("D" !== u3) throw "unrecognized dtick " + String(o3);
                t4.text = String(Math.round(Math.pow(10, l.mod(s3, 1)))), t4.fontSize *= 0.75;
              }
              if ("D1" === e4.dtick) {
                var p3 = String(t4.text).charAt(0);
                "0" !== p3 && "1" !== p3 || ("y" === e4._id.charAt(0) ? t4.dx -= t4.fontSize / 4 : (t4.dy += t4.fontSize / 2, t4.dx += (e4.range[1] > e4.range[0] ? 1 : -1) * t4.fontSize * (s3 < 0 ? 0.5 : 0.25)));
              }
            }(e3, o2, 0, c2, g2) : "category" === u2 ? function(e4, t4) {
              var r4 = e4._categories[Math.round(t4.x)];
              void 0 === r4 && (r4 = ""), t4.text = String(r4);
            }(e3, o2) : "multicategory" === u2 ? function(e4, t4, r4) {
              var n3 = Math.round(t4.x), a2 = e4._categories[n3] || [], i3 = void 0 === a2[1] ? "" : String(a2[1]), o3 = void 0 === a2[0] ? "" : String(a2[0]);
              r4 ? t4.text = o3 + " - " + i3 : (t4.text = i3, t4.text2 = o3);
            }(e3, o2, r3) : Re(e3) ? function(e4, t4, r4, n3, a2) {
              if ("radians" !== e4.thetaunit || r4) t4.text = we(t4.x, e4, a2, n3);
              else {
                var i3 = t4.x / 180;
                if (0 === i3) t4.text = "0";
                else {
                  var o3 = function(e5) {
                    function t5(e6, t6) {
                      return Math.abs(e6 - t6) <= 1e-6;
                    }
                    var r5 = function(e6) {
                      for (var r6 = 1; !t5(Math.round(e6 * r6) / r6, e6); ) r6 *= 10;
                      return r6;
                    }(e5), n4 = e5 * r5, a3 = Math.abs(function e6(r6, n5) {
                      return t5(n5, 0) ? r6 : e6(n5, r6 % n5);
                    }(n4, r5));
                    return [Math.round(n4 / a3), Math.round(r5 / a3)];
                  }(i3);
                  if (o3[1] >= 100) t4.text = we(l.deg2rad(t4.x), e4, a2, n3);
                  else {
                    var s3 = t4.x < 0;
                    1 === o3[1] ? 1 === o3[0] ? t4.text = "π" : t4.text = o3[0] + "π" : t4.text = ["<sup>", o3[0], "</sup>", "⁄", "<sub>", o3[1], "</sub>", "π"].join(""), s3 && (t4.text = z + t4.text);
                  }
                }
              }
            }(e3, o2, r3, c2, g2) : function(e4, t4, r4, n3, a2) {
              "never" === a2 ? a2 = "" : "all" === e4.showexponent && Math.abs(t4.x / e4.dtick) < 1e-6 && (a2 = "hide"), t4.text = we(t4.x, e4, a2, n3);
            }(e3, o2, 0, c2, g2), n2 || (e3.tickprefix && !v2(e3.showtickprefix) && (o2.text = e3.tickprefix + o2.text), e3.ticksuffix && !v2(e3.showticksuffix) && (o2.text += e3.ticksuffix)), e3.labelalias && e3.labelalias.hasOwnProperty(o2.text)) {
              var m2 = e3.labelalias[o2.text];
              "string" == typeof m2 && (o2.text = m2);
            }
            return ("boundaries" === e3.tickson || e3.showdividers) && (o2.xbnd = [d2(o2.x - 0.5), d2(o2.x + e3.dtick - 0.5)]), o2;
          }, G.hoverLabelText = function(e3, t3, r3) {
            r3 && (e3 = l.extendFlat({}, e3, { hoverformat: r3 }));
            var n2 = l.isArrayOrTypedArray(t3) ? t3[0] : t3, a2 = l.isArrayOrTypedArray(t3) ? t3[1] : void 0;
            if (void 0 !== a2 && a2 !== n2) return G.hoverLabelText(e3, n2, r3) + " - " + G.hoverLabelText(e3, a2, r3);
            var i2 = "log" === e3.type && n2 <= 0, o2 = G.tickText(e3, e3.c2l(i2 ? -n2 : n2), "hover").text;
            return i2 ? 0 === n2 ? "0" : z + o2 : o2;
          };
          var xe = ["f", "p", "n", "μ", "m", "", "k", "M", "G", "T"];
          function be(e3) {
            return "SI" === e3 || "B" === e3;
          }
          function _e(e3) {
            return e3 > 14 || e3 < -15;
          }
          function we(e3, t3, r3, n2) {
            var i2 = e3 < 0, o2 = t3._tickround, s2 = r3 || t3.exponentformat || "B", c2 = t3._tickexponent, u2 = G.getTickFormat(t3), f2 = t3.separatethousands;
            if (n2) {
              var d2 = { exponentformat: s2, minexponent: t3.minexponent, dtick: "none" === t3.showexponent ? t3.dtick : a(e3) && Math.abs(e3) || 1, range: "none" === t3.showexponent ? t3.range.map(t3.r2d) : [0, e3 || 1] };
              me(d2), o2 = (Number(d2._tickround) || 0) + 4, c2 = d2._tickexponent, t3.hoverformat && (u2 = t3.hoverformat);
            }
            if (u2) return t3._numFormat(u2)(e3).replace(/-/g, z);
            var h2, p2 = Math.pow(10, -o2) / 2;
            if ("none" === s2 && (c2 = 0), (e3 = Math.abs(e3)) < p2) e3 = "0", i2 = false;
            else {
              if (e3 += p2, c2 && (e3 *= Math.pow(10, -c2), o2 += c2), 0 === o2) e3 = String(Math.floor(e3));
              else if (o2 < 0) {
                e3 = (e3 = String(Math.round(e3))).substr(0, e3.length + o2);
                for (var v2 = o2; v2 < 0; v2++) e3 += "0";
              } else {
                var g2 = (e3 = String(e3)).indexOf(".") + 1;
                g2 && (e3 = e3.substr(0, g2 + o2).replace(/\.?0+$/, ""));
              }
              e3 = l.numSeparate(e3, t3._separators, f2);
            }
            return c2 && "hide" !== s2 && (be(s2) && _e(c2) && (s2 = "power"), h2 = c2 < 0 ? z + -c2 : "power" !== s2 ? "+" + c2 : String(c2), "e" === s2 || "E" === s2 ? e3 += s2 + h2 : "power" === s2 ? e3 += "×10<sup>" + h2 + "</sup>" : "B" === s2 && 9 === c2 ? e3 += "B" : be(s2) && (e3 += xe[c2 / 3 + 5])), i2 ? z + e3 : e3;
          }
          function Te(e3, t3) {
            if (e3) {
              var r3 = Object.keys(B).reduce(function(e4, r4) {
                return -1 !== t3.indexOf(r4) && B[r4].forEach(function(t4) {
                  e4[t4] = 1;
                }), e4;
              }, {});
              Object.keys(e3).forEach(function(t4) {
                r3[t4] || (1 === t4.length ? e3[t4] = 0 : delete e3[t4]);
              });
            }
          }
          function Me(e3, t3) {
            for (var r3 = [], n2 = {}, a2 = 0; a2 < t3.length; a2++) {
              var i2 = t3[a2];
              n2[i2.text2] ? n2[i2.text2].push(i2.x) : n2[i2.text2] = [i2.x];
            }
            for (var o2 in n2) r3.push(ye(e3, l.interp(n2[o2], 0.5), o2));
            return r3;
          }
          function ke(e3) {
            return void 0 !== e3.periodX ? e3.periodX : e3.x;
          }
          function Ae(e3) {
            return [e3.text, e3.x, e3.axInfo, e3.font, e3.fontSize, e3.fontColor].join("_");
          }
          function Le(e3) {
            var t3 = e3.title.font.size, r3 = (e3.title.text.match(c.BR_TAG_ALL) || []).length;
            return e3.title.hasOwnProperty("standoff") ? t3 * (V + r3 * U) : r3 ? t3 * (r3 + 1) * U : t3;
          }
          function Se(e3, t3) {
            var r3 = e3.l2p(t3);
            return r3 > 1 && r3 < e3._length - 1;
          }
          function Ce(e3) {
            var t3 = n.select(e3), r3 = t3.select(".text-math-group");
            return r3.empty() ? t3.select("text") : r3;
          }
          function Oe(e3) {
            return e3._id + ".automargin";
          }
          function De(e3) {
            return Oe(e3) + ".mirror";
          }
          function Pe(e3) {
            return e3._id + ".rangeslider";
          }
          function ze(e3, t3) {
            for (var r3 = 0; r3 < t3.length; r3++) -1 === e3.indexOf(t3[r3]) && e3.push(t3[r3]);
          }
          function Ie(e3, t3, r3) {
            var n2, a2, i2 = [], o2 = [], s2 = e3.layout;
            for (n2 = 0; n2 < t3.length; n2++) i2.push(G.getFromId(e3, t3[n2]));
            for (n2 = 0; n2 < r3.length; n2++) o2.push(G.getFromId(e3, r3[n2]));
            var c2 = Object.keys(h), u2 = ["anchor", "domain", "overlaying", "position", "side", "tickangle", "editType"], f2 = ["linear", "log"];
            for (n2 = 0; n2 < c2.length; n2++) {
              var d2 = c2[n2], p2 = i2[0][d2], v2 = o2[0][d2], g2 = true, m2 = false, y2 = false;
              if ("_" !== d2.charAt(0) && "function" != typeof p2 && -1 === u2.indexOf(d2)) {
                for (a2 = 1; a2 < i2.length && g2; a2++) {
                  var x2 = i2[a2][d2];
                  "type" === d2 && -1 !== f2.indexOf(p2) && -1 !== f2.indexOf(x2) && p2 !== x2 ? m2 = true : x2 !== p2 && (g2 = false);
                }
                for (a2 = 1; a2 < o2.length && g2; a2++) {
                  var b2 = o2[a2][d2];
                  "type" === d2 && -1 !== f2.indexOf(v2) && -1 !== f2.indexOf(b2) && v2 !== b2 ? y2 = true : o2[a2][d2] !== v2 && (g2 = false);
                }
                g2 && (m2 && (s2[i2[0]._name].type = "linear"), y2 && (s2[o2[0]._name].type = "linear"), Ee(s2, d2, i2, o2, e3._fullLayout._dfltTitle));
              }
            }
            for (n2 = 0; n2 < e3._fullLayout.annotations.length; n2++) {
              var _2 = e3._fullLayout.annotations[n2];
              -1 !== t3.indexOf(_2.xref) && -1 !== r3.indexOf(_2.yref) && l.swapAttrs(s2.annotations[n2], ["?"]);
            }
          }
          function Ee(e3, t3, r3, n2, a2) {
            var i2, o2 = l.nestedProperty, s2 = o2(e3[r3[0]._name], t3).get(), c2 = o2(e3[n2[0]._name], t3).get();
            for ("title" === t3 && (s2 && s2.text === a2.x && (s2.text = a2.y), c2 && c2.text === a2.y && (c2.text = a2.x)), i2 = 0; i2 < r3.length; i2++) o2(e3, r3[i2]._name + "." + t3).set(c2);
            for (i2 = 0; i2 < n2.length; i2++) o2(e3, n2[i2]._name + "." + t3).set(s2);
          }
          function Re(e3) {
            return "angularaxis" === e3._id;
          }
          function Ne(e3, t3) {
            for (var r3 = t3._rangebreaks.length, n2 = 0; n2 < r3; n2++) {
              var a2 = t3._rangebreaks[n2];
              if (e3 >= a2.min && e3 < a2.max) return a2.max;
            }
            return e3;
          }
          function Fe(e3) {
            return -1 !== (e3.ticklabelposition || "").indexOf("inside");
          }
          function He(e3, t3) {
            Fe(e3._anchorAxis || {}) && e3._hideCounterAxisInsideTickLabels && e3._hideCounterAxisInsideTickLabels(t3);
          }
          function Be(e3, t3, r3, n2) {
            var a2, i2 = "free" === e3.anchor || void 0 !== e3.overlaying && false !== e3.overlaying ? e3.overlaying : e3._id;
            a2 = n2 ? "right" === e3.side ? t3 : -t3 : t3, i2 in r3 || (r3[i2] = {}), e3.side in r3[i2] || (r3[i2][e3.side] = 0), r3[i2][e3.side] += a2;
          }
          G.getTickFormat = function(e3) {
            var t3, r3, n2, a2, i2, o2, l2, s2;
            function c2(e4) {
              return "string" != typeof e4 ? e4 : Number(e4.replace("M", "")) * T;
            }
            function u2(e4, t4) {
              var r4 = ["L", "D"];
              if (typeof e4 == typeof t4) {
                if ("number" == typeof e4) return e4 - t4;
                var n3 = r4.indexOf(e4.charAt(0)), a3 = r4.indexOf(t4.charAt(0));
                return n3 === a3 ? Number(e4.replace(/(L|D)/g, "")) - Number(t4.replace(/(L|D)/g, "")) : n3 - a3;
              }
              return "number" == typeof e4 ? 1 : -1;
            }
            function f2(e4, t4) {
              var r4 = null === t4[0], n3 = null === t4[1], a3 = u2(e4, t4[0]) >= 0, i3 = u2(e4, t4[1]) <= 0;
              return (r4 || a3) && (n3 || i3);
            }
            if (e3.tickformatstops && e3.tickformatstops.length > 0) switch (e3.type) {
              case "date":
              case "linear":
                for (t3 = 0; t3 < e3.tickformatstops.length; t3++) if ((n2 = e3.tickformatstops[t3]).enabled && (a2 = e3.dtick, o2 = void 0, o2 = c2 || function(e4) {
                  return e4;
                }, l2 = (i2 = n2.dtickrange)[0], s2 = i2[1], (!l2 && "number" != typeof l2 || o2(l2) <= o2(a2)) && (!s2 && "number" != typeof s2 || o2(s2) >= o2(a2)))) {
                  r3 = n2;
                  break;
                }
                break;
              case "log":
                for (t3 = 0; t3 < e3.tickformatstops.length; t3++) if ((n2 = e3.tickformatstops[t3]).enabled && f2(e3.dtick, n2.dtickrange)) {
                  r3 = n2;
                  break;
                }
            }
            return r3 ? r3.value : e3.tickformat;
          }, G.getSubplots = function(e3, t3) {
            var r3 = e3._fullLayout._subplots, n2 = r3.cartesian.concat(r3.gl2d || []), a2 = t3 ? G.findSubplotsWithAxis(n2, t3) : n2;
            return a2.sort(function(e4, t4) {
              var r4 = e4.substr(1).split("y"), n3 = t4.substr(1).split("y");
              return r4[0] === n3[0] ? +r4[1] - +n3[1] : +r4[0] - +n3[0];
            }), a2;
          }, G.findSubplotsWithAxis = function(e3, t3) {
            for (var r3 = new RegExp("x" === t3._id.charAt(0) ? "^" + t3._id + "y" : t3._id + "$"), n2 = [], a2 = 0; a2 < e3.length; a2++) {
              var i2 = e3[a2];
              r3.test(i2) && n2.push(i2);
            }
            return n2;
          }, G.makeClipPaths = function(e3) {
            var t3 = e3._fullLayout;
            if (!t3._hasOnlyLargeSploms) {
              var r3, a2, i2 = { _offset: 0, _length: t3.width, _id: "" }, o2 = { _offset: 0, _length: t3.height, _id: "" }, l2 = G.list(e3, "x", true), s2 = G.list(e3, "y", true), c2 = [];
              for (r3 = 0; r3 < l2.length; r3++) for (c2.push({ x: l2[r3], y: o2 }), a2 = 0; a2 < s2.length; a2++) 0 === r3 && c2.push({ x: i2, y: s2[a2] }), c2.push({ x: l2[r3], y: s2[a2] });
              var u2 = t3._clips.selectAll(".axesclip").data(c2, function(e4) {
                return e4.x._id + e4.y._id;
              });
              u2.enter().append("clipPath").classed("axesclip", true).attr("id", function(e4) {
                return "clip" + t3._uid + e4.x._id + e4.y._id;
              }).append("rect"), u2.exit().remove(), u2.each(function(e4) {
                n.select(this).select("rect").attr({ x: e4.x._offset || 0, y: e4.y._offset || 0, width: e4.x._length || 1, height: e4.y._length || 1 });
              });
            }
          }, G.draw = function(e3, t3, r3) {
            var n2 = e3._fullLayout;
            "redraw" === t3 && n2._paper.selectAll("g.subplot").each(function(e4) {
              var t4 = e4[0], r4 = n2._plots[t4];
              if (r4) {
                var a3 = r4.xaxis, i3 = r4.yaxis;
                r4.xaxislayer.selectAll("." + a3._id + "tick").remove(), r4.yaxislayer.selectAll("." + i3._id + "tick").remove(), r4.xaxislayer.selectAll("." + a3._id + "tick2").remove(), r4.yaxislayer.selectAll("." + i3._id + "tick2").remove(), r4.xaxislayer.selectAll("." + a3._id + "divider").remove(), r4.yaxislayer.selectAll("." + i3._id + "divider").remove(), r4.minorGridlayer && r4.minorGridlayer.selectAll("path").remove(), r4.gridlayer && r4.gridlayer.selectAll("path").remove(), r4.zerolinelayer && r4.zerolinelayer.selectAll("path").remove(), n2._infolayer.select(".g-" + a3._id + "title").remove(), n2._infolayer.select(".g-" + i3._id + "title").remove();
              }
            });
            var a2 = t3 && "redraw" !== t3 ? t3 : G.listIds(e3), i2 = G.list(e3).filter(function(e4) {
              return e4.autoshift;
            }).map(function(e4) {
              return e4.overlaying;
            });
            a2.map(function(t4) {
              var r4 = G.getFromId(e3, t4);
              if ("sync" === r4.tickmode && r4.overlaying) {
                var n3 = a2.findIndex(function(e4) {
                  return e4 === r4.overlaying;
                });
                n3 >= 0 && a2.unshift(a2.splice(n3, 1).shift());
              }
            });
            var o2 = { false: { left: 0, right: 0 } };
            return l.syncOrAsync(a2.map(function(t4) {
              return function() {
                if (t4) {
                  var n3 = G.getFromId(e3, t4);
                  r3 || (r3 = {}), r3.axShifts = o2, r3.overlayingShiftedAx = i2;
                  var a3 = G.drawOne(e3, n3, r3);
                  return n3._shiftPusher && Be(n3, n3._fullDepth || 0, o2, true), n3._r = n3.range.slice(), n3._rl = l.simpleMap(n3._r, n3.r2l), a3;
                }
              };
            }));
          }, G.drawOne = function(e3, t3, r3) {
            var n2, a2, s2, h2 = (r3 = r3 || {}).axShifts || {}, p2 = r3.overlayingShiftedAx || [];
            t3.setScale();
            var v2 = e3._fullLayout, g2 = t3._id, m2 = g2.charAt(0), y2 = G.counterLetter(g2), x2 = v2._plots[t3._mainSubplot];
            if (x2) {
              if (t3._shiftPusher = t3.autoshift || -1 !== p2.indexOf(t3._id) || -1 !== p2.indexOf(t3.overlaying), t3._shiftPusher & "free" === t3.anchor) {
                var b2 = t3.linewidth / 2 || 0;
                "inside" === t3.ticks && (b2 += t3.ticklen), Be(t3, b2, h2, true), Be(t3, t3.shift || 0, h2, false);
              }
              true === r3.skipTitle && void 0 !== t3._shift || (t3._shift = function(e4, t4) {
                return e4.autoshift ? t4[e4.overlaying][e4.side] : e4.shift || 0;
              }(t3, h2));
              var _2 = x2[m2 + "axislayer"], w2 = t3._mainLinePosition, T2 = w2 += t3._shift, M2 = t3._mainMirrorPosition, k2 = t3._vals = G.calcTicks(t3), A2 = [t3.mirror, T2, M2].join("_");
              for (n2 = 0; n2 < k2.length; n2++) k2[n2].axInfo = A2;
              t3._selections = {}, t3._tickAngles && (t3._prevTickAngles = t3._tickAngles), t3._tickAngles = {}, t3._depth = null;
              var L2 = {};
              if (t3.visible) {
                var S2, C2, O2 = G.makeTransTickFn(t3), D2 = G.makeTransTickLabelFn(t3), P2 = "inside" === t3.ticks, z2 = "outside" === t3.ticks;
                if ("boundaries" === t3.tickson) {
                  var I2 = function(e4, t4) {
                    var r4, n3 = [], a3 = function(e5, t5) {
                      var r5 = e5.xbnd[t5];
                      null !== r5 && n3.push(l.extendFlat({}, e5, { x: r5 }));
                    };
                    if (t4.length) {
                      for (r4 = 0; r4 < t4.length; r4++) a3(t4[r4], 0);
                      a3(t4[r4 - 1], 1);
                    }
                    return n3;
                  }(0, k2);
                  C2 = G.clipEnds(t3, I2), S2 = P2 ? C2 : I2;
                } else C2 = G.clipEnds(t3, k2), S2 = P2 && "period" !== t3.ticklabelmode ? C2 : k2;
                var E2, R2 = t3._gridVals = C2, N2 = function(e4, t4) {
                  var r4, n3, a3 = [], i2 = t4.length && t4[t4.length - 1].x < t4[0].x, o2 = function(e5, t5) {
                    var r5 = e5.xbnd[t5];
                    null !== r5 && a3.push(l.extendFlat({}, e5, { x: r5 }));
                  };
                  if (e4.showdividers && t4.length) {
                    for (r4 = 0; r4 < t4.length; r4++) {
                      var s3 = t4[r4];
                      s3.text2 !== n3 && o2(s3, i2 ? 1 : 0), n3 = s3.text2;
                    }
                    o2(t4[r4 - 1], i2 ? 0 : 1);
                  }
                  return a3;
                }(t3, k2);
                if (!v2._hasOnlyLargeSploms) {
                  var F2 = t3._subplotsWith, H2 = {};
                  for (n2 = 0; n2 < F2.length; n2++) {
                    a2 = F2[n2];
                    var B2 = (s2 = v2._plots[a2])[y2 + "axis"], j2 = B2._mainAxis._id;
                    if (!H2[j2]) {
                      H2[j2] = 1;
                      var Z2 = "x" === m2 ? "M0," + B2._offset + "v" + B2._length : "M" + B2._offset + ",0h" + B2._length;
                      G.drawGrid(e3, t3, { vals: R2, counterAxis: B2, layer: s2.gridlayer.select("." + g2), minorLayer: s2.minorGridlayer.select("." + g2), path: Z2, transFn: O2 }), G.drawZeroLine(e3, t3, { counterAxis: B2, layer: s2.zerolinelayer, path: Z2, transFn: O2 });
                    }
                  }
                }
                var W2 = G.getTickSigns(t3), J2 = G.getTickSigns(t3, "minor");
                if (t3.ticks || t3.minor && t3.minor.ticks) {
                  var X2, K2, Q2, $2, ee2 = G.makeTickPath(t3, T2, W2[2]), te2 = G.makeTickPath(t3, T2, J2[2], { minor: true });
                  if (t3._anchorAxis && t3.mirror && true !== t3.mirror ? (X2 = G.makeTickPath(t3, M2, W2[3]), K2 = G.makeTickPath(t3, M2, J2[3], { minor: true }), Q2 = ee2 + X2, $2 = te2 + K2) : (X2 = "", K2 = "", Q2 = ee2, $2 = te2), t3.showdividers && z2 && "boundaries" === t3.tickson) {
                    var re2 = {};
                    for (n2 = 0; n2 < N2.length; n2++) re2[N2[n2].x] = 1;
                    E2 = function(e4) {
                      return re2[e4.x] ? X2 : Q2;
                    };
                  } else E2 = function(e4) {
                    return e4.minor ? $2 : Q2;
                  };
                }
                if (G.drawTicks(e3, t3, { vals: S2, layer: _2, path: E2, transFn: O2 }), "allticks" === t3.mirror) {
                  var ne2 = Object.keys(t3._linepositions || {});
                  for (n2 = 0; n2 < ne2.length; n2++) {
                    a2 = ne2[n2], s2 = v2._plots[a2];
                    var ae2 = t3._linepositions[a2] || [], ie2 = ae2[0], oe2 = ae2[1], le2 = ae2[2], se2 = G.makeTickPath(t3, ie2, le2 ? W2[0] : J2[0], { minor: le2 }) + G.makeTickPath(t3, oe2, le2 ? W2[1] : J2[1], { minor: le2 });
                    G.drawTicks(e3, t3, { vals: S2, layer: s2[m2 + "axislayer"], path: se2, transFn: O2 });
                  }
                }
                var ce2 = [];
                if (ce2.push(function() {
                  return G.drawLabels(e3, t3, { vals: k2, layer: _2, plotinfo: s2, transFn: D2, labelFns: G.makeLabelFns(t3, T2) });
                }), "multicategory" === t3.type) {
                  var ue2 = { x: 2, y: 10 }[m2];
                  ce2.push(function() {
                    var r4 = { x: "height", y: "width" }[m2], n3 = de2()[r4] + ue2 + (t3._tickAngles[g2 + "tick"] ? t3.tickfont.size * U : 0);
                    return G.drawLabels(e3, t3, { vals: Me(t3, k2), layer: _2, cls: g2 + "tick2", repositionOnUpdate: true, secondary: true, transFn: O2, labelFns: G.makeLabelFns(t3, T2 + n3 * W2[4]) });
                  }), ce2.push(function() {
                    return t3._depth = W2[4] * (de2("tick2")[t3.side] - T2), function(e4, t4, r4) {
                      var n3 = t4._id + "divider", a3 = r4.vals, i2 = r4.layer.selectAll("path." + n3).data(a3, Ae);
                      i2.exit().remove(), i2.enter().insert("path", ":first-child").classed(n3, 1).classed("crisp", 1).call(f.stroke, t4.dividercolor).style("stroke-width", d.crispRound(e4, t4.dividerwidth, 1) + "px"), i2.attr("transform", r4.transFn).attr("d", r4.path);
                    }(e3, t3, { vals: N2, layer: _2, path: G.makeTickPath(t3, T2, W2[4], { len: t3._depth }), transFn: O2 });
                  });
                } else t3.title.hasOwnProperty("standoff") && ce2.push(function() {
                  t3._depth = W2[4] * (de2()[t3.side] - T2);
                });
                var fe2 = o.getComponentMethod("rangeslider", "isVisible")(t3);
                return r3.skipTitle || fe2 && "bottom" === t3.side || ce2.push(function() {
                  return function(e4, t4) {
                    var r4, n3 = e4._fullLayout, a3 = t4._id, i2 = a3.charAt(0), o2 = t4.title.font.size, l2 = (t4.title.text.match(c.BR_TAG_ALL) || []).length;
                    if (t4.title.hasOwnProperty("standoff")) "bottom" === t4.side || "right" === t4.side ? r4 = t4._depth + t4.title.standoff + o2 * V : "top" !== t4.side && "left" !== t4.side || (r4 = t4._depth + t4.title.standoff + o2 * (Y + l2 * U));
                    else {
                      var s3 = Fe(t4);
                      if ("multicategory" === t4.type) r4 = t4._depth;
                      else {
                        var f2 = 1.5 * o2;
                        s3 && (f2 = 0.5 * o2, "outside" === t4.ticks && (f2 += t4.ticklen)), r4 = 10 + f2 + (t4.linewidth ? t4.linewidth - 1 : 0);
                      }
                      s3 || (r4 += "x" === i2 ? "top" === t4.side ? o2 * (t4.showticklabels ? 1 : 0) : o2 * (t4.showticklabels ? 1.5 : 0.5) : "right" === t4.side ? o2 * (t4.showticklabels ? 1 : 0.5) : o2 * (t4.showticklabels ? 0.5 : 0));
                    }
                    var h3, p3, v3, g3, m3 = G.getPxPosition(e4, t4);
                    if ("x" === i2 ? (p3 = t4._offset + t4._length / 2, v3 = "top" === t4.side ? m3 - r4 : m3 + r4) : (v3 = t4._offset + t4._length / 2, p3 = "right" === t4.side ? m3 + r4 : m3 - r4, h3 = { rotate: "-90", offset: 0 }), "multicategory" !== t4.type) {
                      var y3 = t4._selections[t4._id + "tick"];
                      if (g3 = { selection: y3, side: t4.side }, y3 && y3.node() && y3.node().parentNode) {
                        var x3 = d.getTranslate(y3.node().parentNode);
                        g3.offsetLeft = x3.x, g3.offsetTop = x3.y;
                      }
                      t4.title.hasOwnProperty("standoff") && (g3.pad = 0);
                    }
                    return t4._titleStandoff = r4, u.draw(e4, a3 + "title", { propContainer: t4, propName: t4._name + ".title.text", placeholder: n3._dfltTitle[i2], avoid: g3, transform: h3, attributes: { x: p3, y: v3, "text-anchor": "middle" } });
                  }(e3, t3);
                }), ce2.push(function() {
                  var r4, n3, a3, l2, s3 = t3.side.charAt(0), c2 = q[t3.side].charAt(0), u2 = G.getPxPosition(e3, t3), f2 = z2 ? t3.ticklen : 0;
                  (t3.automargin || fe2 || t3._shiftPusher) && ("multicategory" === t3.type ? r4 = de2("tick2") : (r4 = de2(), "x" === m2 && "b" === s3 && (t3._depth = Math.max(r4.width > 0 ? r4.bottom - u2 : 0, f2))));
                  var d2 = 0, h3 = 0;
                  if (t3._shiftPusher && (d2 = Math.max(f2, r4.height > 0 ? "l" === s3 ? u2 - r4.left : r4.right - u2 : 0), t3.title.text !== v2._dfltTitle[m2] && (h3 = (t3._titleStandoff || 0) + (t3._titleScoot || 0), "l" === s3 && (h3 += Le(t3))), t3._fullDepth = Math.max(d2, h3)), t3.automargin) {
                    n3 = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0 };
                    var p3 = [0, 1], g3 = "number" == typeof t3._shift ? t3._shift : 0;
                    if ("x" === m2) {
                      if ("b" === s3 ? n3[s3] = t3._depth : (n3[s3] = t3._depth = Math.max(r4.width > 0 ? u2 - r4.top : 0, f2), p3.reverse()), r4.width > 0) {
                        var x3 = r4.right - (t3._offset + t3._length);
                        x3 > 0 && (n3.xr = 1, n3.r = x3);
                        var b3 = t3._offset - r4.left;
                        b3 > 0 && (n3.xl = 0, n3.l = b3);
                      }
                    } else if ("l" === s3 ? (t3._depth = Math.max(r4.height > 0 ? u2 - r4.left : 0, f2), n3[s3] = t3._depth - g3) : (t3._depth = Math.max(r4.height > 0 ? r4.right - u2 : 0, f2), n3[s3] = t3._depth + g3, p3.reverse()), r4.height > 0) {
                      var _3 = r4.bottom - (t3._offset + t3._length);
                      _3 > 0 && (n3.yb = 0, n3.b = _3);
                      var w3 = t3._offset - r4.top;
                      w3 > 0 && (n3.yt = 1, n3.t = w3);
                    }
                    n3[y2] = "free" === t3.anchor ? t3.position : t3._anchorAxis.domain[p3[0]], t3.title.text !== v2._dfltTitle[m2] && (n3[s3] += Le(t3) + (t3.title.standoff || 0)), t3.mirror && "free" !== t3.anchor && ((a3 = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0 })[c2] = t3.linewidth, t3.mirror && true !== t3.mirror && (a3[c2] += f2), true === t3.mirror || "ticks" === t3.mirror ? a3[y2] = t3._anchorAxis.domain[p3[1]] : "all" !== t3.mirror && "allticks" !== t3.mirror || (a3[y2] = [t3._counterDomainMin, t3._counterDomainMax][p3[1]]));
                  }
                  fe2 && (l2 = o.getComponentMethod("rangeslider", "autoMarginOpts")(e3, t3)), "string" == typeof t3.automargin && (Te(n3, t3.automargin), Te(a3, t3.automargin)), i.autoMargin(e3, Oe(t3), n3), i.autoMargin(e3, De(t3), a3), i.autoMargin(e3, Pe(t3), l2);
                }), l.syncOrAsync(ce2);
              }
            }
            function de2(e4) {
              var r4 = g2 + (e4 || "tick");
              return L2[r4] || (L2[r4] = function(e5, t4, r5) {
                var n3, a3, i2, o2;
                if (e5._selections[t4].size()) n3 = 1 / 0, a3 = -1 / 0, i2 = 1 / 0, o2 = -1 / 0, e5._selections[t4].each(function() {
                  var e6 = Ce(this), t5 = d.bBox(e6.node().parentNode);
                  n3 = Math.min(n3, t5.top), a3 = Math.max(a3, t5.bottom), i2 = Math.min(i2, t5.left), o2 = Math.max(o2, t5.right);
                });
                else {
                  var l2 = G.makeLabelFns(e5, r5);
                  n3 = a3 = l2.yFn({ dx: 0, dy: 0, fontSize: 0 }), i2 = o2 = l2.xFn({ dx: 0, dy: 0, fontSize: 0 });
                }
                return { top: n3, bottom: a3, left: i2, right: o2, height: a3 - n3, width: o2 - i2 };
              }(t3, r4, T2)), L2[r4];
            }
          }, G.getTickSigns = function(e3, t3) {
            var r3 = e3._id.charAt(0), n2 = { x: "top", y: "right" }[r3], a2 = e3.side === n2 ? 1 : -1, i2 = [-1, 1, a2, -a2];
            return "inside" !== (t3 ? (e3.minor || {}).ticks : e3.ticks) == ("x" === r3) && (i2 = i2.map(function(e4) {
              return -e4;
            })), e3.side && i2.push({ l: -1, t: -1, r: 1, b: 1 }[e3.side.charAt(0)]), i2;
          }, G.makeTransTickFn = function(e3) {
            return "x" === e3._id.charAt(0) ? function(t3) {
              return s(e3._offset + e3.l2p(t3.x), 0);
            } : function(t3) {
              return s(0, e3._offset + e3.l2p(t3.x));
            };
          }, G.makeTransTickLabelFn = function(e3) {
            var t3 = function(e4) {
              var t4 = e4.ticklabelposition || "", r4 = function(e5) {
                return -1 !== t4.indexOf(e5);
              }, n3 = r4("top"), a3 = r4("left"), i3 = r4("right"), o3 = r4("bottom"), l3 = r4("inside"), s2 = o3 || a3 || n3 || i3;
              if (!s2 && !l3) return [0, 0];
              var c3 = e4.side, u3 = s2 ? (e4.tickwidth || 0) / 2 : 0, f2 = 3, d2 = e4.tickfont ? e4.tickfont.size : 12;
              return (o3 || n3) && (u3 += d2 * V, f2 += (e4.linewidth || 0) / 2), (a3 || i3) && (u3 += (e4.linewidth || 0) / 2, f2 += 3), l3 && "top" === c3 && (f2 -= d2 * (1 - V)), (a3 || n3) && (u3 = -u3), "bottom" !== c3 && "right" !== c3 || (f2 = -f2), [s2 ? u3 : 0, l3 ? f2 : 0];
            }(e3), r3 = e3.ticklabelshift || 0, n2 = e3.ticklabelstandoff || 0, a2 = t3[0], i2 = t3[1], o2 = e3.range[0] > e3.range[1], l2 = e3.ticklabelposition && -1 !== e3.ticklabelposition.indexOf("inside"), c2 = !l2;
            if (r3 && (r3 *= o2 ? -1 : 1), n2) {
              var u2 = e3.side;
              n2 *= l2 && ("top" === u2 || "left" === u2) || c2 && ("bottom" === u2 || "right" === u2) ? 1 : -1;
            }
            return "x" === e3._id.charAt(0) ? function(t4) {
              return s(a2 + e3._offset + e3.l2p(ke(t4)) + r3, i2 + n2);
            } : function(t4) {
              return s(i2 + n2, a2 + e3._offset + e3.l2p(ke(t4)) + r3);
            };
          }, G.makeTickPath = function(e3, t3, r3, n2) {
            n2 || (n2 = {});
            var a2 = n2.minor;
            if (a2 && !e3.minor) return "";
            var i2 = void 0 !== n2.len ? n2.len : a2 ? e3.minor.ticklen : e3.ticklen, o2 = e3._id.charAt(0), l2 = (e3.linewidth || 1) / 2;
            return "x" === o2 ? "M0," + (t3 + l2 * r3) + "v" + i2 * r3 : "M" + (t3 + l2 * r3) + ",0h" + i2 * r3;
          }, G.makeLabelFns = function(e3, t3, r3) {
            var n2 = e3.ticklabelposition || "", i2 = function(e4) {
              return -1 !== n2.indexOf(e4);
            }, o2 = i2("top"), s2 = i2("left"), c2 = i2("right"), u2 = i2("bottom") || s2 || o2 || c2, f2 = i2("inside"), d2 = "inside" === n2 && "inside" === e3.ticks || !f2 && "outside" === e3.ticks && "boundaries" !== e3.tickson, h2 = 0, p2 = 0, v2 = d2 ? e3.ticklen : 0;
            if (f2 ? v2 *= -1 : u2 && (v2 = 0), d2 && (h2 += v2, r3)) {
              var g2 = l.deg2rad(r3);
              h2 = v2 * Math.cos(g2) + 1, p2 = v2 * Math.sin(g2);
            }
            e3.showticklabels && (d2 || e3.showline) && (h2 += 0.2 * e3.tickfont.size);
            var m2, y2, x2, b2, _2, w2 = { labelStandoff: h2 += (e3.linewidth || 1) / 2 * (f2 ? -1 : 1), labelShift: p2 }, T2 = 0, M2 = e3.side, k2 = e3._id.charAt(0), A2 = e3.tickangle;
            if ("x" === k2) b2 = (_2 = !f2 && "bottom" === M2 || f2 && "top" === M2) ? 1 : -1, f2 && (b2 *= -1), m2 = p2 * b2, y2 = t3 + h2 * b2, x2 = _2 ? 1 : -0.2, 90 === Math.abs(A2) && (f2 ? x2 += Y : x2 = -90 === A2 && "bottom" === M2 ? V : 90 === A2 && "top" === M2 ? Y : 0.5, T2 = Y / 2 * (A2 / 90)), w2.xFn = function(e4) {
              return e4.dx + m2 + T2 * e4.fontSize;
            }, w2.yFn = function(e4) {
              return e4.dy + y2 + e4.fontSize * x2;
            }, w2.anchorFn = function(e4, t4) {
              if (u2) {
                if (s2) return "end";
                if (c2) return "start";
              }
              return a(t4) && 0 !== t4 && 180 !== t4 ? t4 * b2 < 0 !== f2 ? "end" : "start" : "middle";
            }, w2.heightFn = function(t4, r4, n3) {
              return r4 < -60 || r4 > 60 ? -0.5 * n3 : "top" === e3.side !== f2 ? -n3 : 0;
            };
            else if ("y" === k2) {
              if (b2 = (_2 = !f2 && "left" === M2 || f2 && "right" === M2) ? 1 : -1, f2 && (b2 *= -1), m2 = h2, y2 = p2 * b2, x2 = 0, f2 || 90 !== Math.abs(A2) || (x2 = -90 === A2 && "left" === M2 || 90 === A2 && "right" === M2 ? V : 0.5), f2) {
                var L2 = a(A2) ? +A2 : 0;
                if (0 !== L2) {
                  var S2 = l.deg2rad(L2);
                  T2 = Math.abs(Math.sin(S2)) * V * b2, x2 = 0;
                }
              }
              w2.xFn = function(e4) {
                return e4.dx + t3 - (m2 + e4.fontSize * x2) * b2 + T2 * e4.fontSize;
              }, w2.yFn = function(e4) {
                return e4.dy + y2 + e4.fontSize * Y;
              }, w2.anchorFn = function(e4, t4) {
                return a(t4) && 90 === Math.abs(t4) ? "middle" : _2 ? "end" : "start";
              }, w2.heightFn = function(t4, r4, n3) {
                return "right" === e3.side && (r4 *= -1), r4 < -30 ? -n3 : r4 < 30 ? -0.5 * n3 : 0;
              };
            }
            return w2;
          }, G.drawTicks = function(e3, t3, r3) {
            r3 = r3 || {};
            var a2 = t3._id + "tick", i2 = [].concat(t3.minor && t3.minor.ticks ? r3.vals.filter(function(e4) {
              return e4.minor && !e4.noTick;
            }) : []).concat(t3.ticks ? r3.vals.filter(function(e4) {
              return !e4.minor && !e4.noTick;
            }) : []), o2 = r3.layer.selectAll("path." + a2).data(i2, Ae);
            o2.exit().remove(), o2.enter().append("path").classed(a2, 1).classed("ticks", 1).classed("crisp", false !== r3.crisp).each(function(e4) {
              return f.stroke(n.select(this), e4.minor ? t3.minor.tickcolor : t3.tickcolor);
            }).style("stroke-width", function(r4) {
              return d.crispRound(e3, r4.minor ? t3.minor.tickwidth : t3.tickwidth, 1) + "px";
            }).attr("d", r3.path).style("display", null), He(t3, [F]), o2.attr("transform", r3.transFn);
          }, G.drawGrid = function(e3, t3, r3) {
            if (r3 = r3 || {}, "sync" !== t3.tickmode) {
              var a2 = t3._id + "grid", i2 = t3.minor && t3.minor.showgrid, o2 = i2 ? r3.vals.filter(function(e4) {
                return e4.minor;
              }) : [], l2 = t3.showgrid ? r3.vals.filter(function(e4) {
                return !e4.minor;
              }) : [], s2 = r3.counterAxis;
              if (s2 && G.shouldShowZeroLine(e3, t3, s2)) for (var c2 = "array" === t3.tickmode, u2 = 0; u2 < l2.length; u2++) {
                var h2 = l2[u2].x;
                if (c2 ? !h2 : Math.abs(h2) < t3.dtick / 100) {
                  if (l2 = l2.slice(0, u2).concat(l2.slice(u2 + 1)), !c2) break;
                  u2--;
                }
              }
              t3._gw = d.crispRound(e3, t3.gridwidth, 1);
              for (var p2 = i2 ? d.crispRound(e3, t3.minor.gridwidth, 1) : 0, v2 = r3.layer, g2 = r3.minorLayer, m2 = 1; m2 >= 0; m2--) {
                var y2 = m2 ? v2 : g2;
                if (y2) {
                  var x2 = y2.selectAll("path." + a2).data(m2 ? l2 : o2, Ae);
                  x2.exit().remove(), x2.enter().append("path").classed(a2, 1).classed("crisp", false !== r3.crisp), x2.attr("transform", r3.transFn).attr("d", r3.path).each(function(e4) {
                    return f.stroke(n.select(this), e4.minor ? t3.minor.gridcolor : t3.gridcolor || "#ddd");
                  }).style("stroke-dasharray", function(e4) {
                    return d.dashStyle(e4.minor ? t3.minor.griddash : t3.griddash, e4.minor ? t3.minor.gridwidth : t3.gridwidth);
                  }).style("stroke-width", function(e4) {
                    return (e4.minor ? p2 : t3._gw) + "px";
                  }).style("display", null), "function" == typeof r3.path && x2.attr("d", r3.path);
                }
              }
              He(t3, [R, N]);
            }
          }, G.drawZeroLine = function(e3, t3, r3) {
            r3 = r3 || r3;
            var n2 = t3._id + "zl", a2 = G.shouldShowZeroLine(e3, t3, r3.counterAxis), i2 = r3.layer.selectAll("path." + n2).data(a2 ? [{ x: 0, id: t3._id }] : []);
            i2.exit().remove(), i2.enter().append("path").classed(n2, 1).classed("zl", 1).classed("crisp", false !== r3.crisp).each(function() {
              r3.layer.selectAll("path").sort(function(e4, t4) {
                return J(e4.id, t4.id);
              });
            }), i2.attr("transform", r3.transFn).attr("d", r3.path).call(f.stroke, t3.zerolinecolor || f.defaultLine).style("stroke-width", d.crispRound(e3, t3.zerolinewidth, t3._gw || 1) + "px").style("display", null), He(t3, [E]);
          }, G.drawLabels = function(e3, t3, r3) {
            r3 = r3 || {};
            var i2 = e3._fullLayout, o2 = t3._id, u2 = r3.cls || o2 + "tick", f2 = r3.vals.filter(function(e4) {
              return e4.text;
            }), h2 = r3.labelFns, p2 = r3.secondary ? 0 : t3.tickangle, v2 = (t3._prevTickAngles || {})[u2], g2 = r3.layer.selectAll("g." + u2).data(t3.showticklabels ? f2 : [], Ae), m2 = [];
            function y2(e4, i3) {
              e4.each(function(e5) {
                var o3 = n.select(this), l2 = o3.select(".text-math-group"), u3 = h2.anchorFn(e5, i3), f3 = r3.transFn.call(o3.node(), e5) + (a(i3) && 0 != +i3 ? " rotate(" + i3 + "," + h2.xFn(e5) + "," + (h2.yFn(e5) - e5.fontSize / 2) + ")" : ""), p3 = c.lineCount(o3), v3 = U * e5.fontSize, g3 = h2.heightFn(e5, a(i3) ? +i3 : 0, (p3 - 1) * v3);
                if (g3 && (f3 += s(0, g3)), l2.empty()) {
                  var m3 = o3.select("text");
                  m3.attr({ transform: f3, "text-anchor": u3 }), m3.style("opacity", 1), t3._adjustTickLabelsOverflow && t3._adjustTickLabelsOverflow();
                } else {
                  var y3 = d.bBox(l2.node()).width * { end: -0.5, start: 0.5 }[u3];
                  l2.attr("transform", f3 + s(y3, 0));
                }
              });
            }
            g2.enter().append("g").classed(u2, 1).append("text").attr("text-anchor", "middle").each(function(t4) {
              var r4 = n.select(this), a2 = e3._promises.length;
              r4.call(c.positionText, h2.xFn(t4), h2.yFn(t4)).call(d.font, { family: t4.font, size: t4.fontSize, color: t4.fontColor, weight: t4.fontWeight, style: t4.fontStyle, variant: t4.fontVariant, textcase: t4.fontTextcase, lineposition: t4.fontLineposition, shadow: t4.fontShadow }).text(t4.text).call(c.convertToTspans, e3), e3._promises[a2] ? m2.push(e3._promises.pop().then(function() {
                y2(r4, p2);
              })) : y2(r4, p2);
            }), He(t3, [H]), g2.exit().remove(), r3.repositionOnUpdate && g2.each(function(e4) {
              n.select(this).select("text").call(c.positionText, h2.xFn(e4), h2.yFn(e4));
            }), t3._adjustTickLabelsOverflow = function() {
              var r4 = t3.ticklabeloverflow;
              if (r4 && "allow" !== r4) {
                var a2 = -1 !== r4.indexOf("hide"), o3 = "x" === t3._id.charAt(0), s2 = 0, c2 = o3 ? e3._fullLayout.width : e3._fullLayout.height;
                if (-1 !== r4.indexOf("domain")) {
                  var u3 = l.simpleMap(t3.range, t3.r2l);
                  s2 = t3.l2p(u3[0]) + t3._offset, c2 = t3.l2p(u3[1]) + t3._offset;
                }
                var f3 = Math.min(s2, c2), h3 = Math.max(s2, c2), p3 = t3.side, v3 = 1 / 0, m3 = -1 / 0;
                for (var y3 in g2.each(function(e4) {
                  var r5 = n.select(this);
                  if (r5.select(".text-math-group").empty()) {
                    var i3 = d.bBox(r5.node()), l2 = 0;
                    o3 ? (i3.right > h3 || i3.left < f3) && (l2 = 1) : (i3.bottom > h3 || i3.top + (t3.tickangle ? 0 : e4.fontSize / 4) < f3) && (l2 = 1);
                    var s3 = r5.select("text");
                    l2 ? a2 && s3.style("opacity", 0) : (s3.style("opacity", 1), v3 = "bottom" === p3 || "right" === p3 ? Math.min(v3, o3 ? i3.top : i3.left) : -1 / 0, m3 = "top" === p3 || "left" === p3 ? Math.max(m3, o3 ? i3.bottom : i3.right) : 1 / 0);
                  }
                }), i2._plots) {
                  var x3 = i2._plots[y3];
                  if (t3._id === x3.xaxis._id || t3._id === x3.yaxis._id) {
                    var b3 = o3 ? x3.yaxis : x3.xaxis;
                    b3 && (b3["_visibleLabelMin_" + t3._id] = v3, b3["_visibleLabelMax_" + t3._id] = m3);
                  }
                }
              }
            }, t3._hideCounterAxisInsideTickLabels = function(e4) {
              var r4 = "x" === t3._id.charAt(0), a2 = [];
              for (var o3 in i2._plots) {
                var l2 = i2._plots[o3];
                t3._id !== l2.xaxis._id && t3._id !== l2.yaxis._id || a2.push(r4 ? l2.yaxis : l2.xaxis);
              }
              a2.forEach(function(r5, a3) {
                r5 && Fe(r5) && (e4 || [E, N, R, F, H]).forEach(function(e5) {
                  var o4 = "tick" === e5.K && "text" === e5.L && "period" === t3.ticklabelmode, l3 = i2._plots[t3._mainSubplot];
                  (e5.K === E.K ? l3.zerolinelayer.selectAll("." + t3._id + "zl") : e5.K === N.K ? l3.minorGridlayer.selectAll("." + t3._id) : e5.K === R.K ? l3.gridlayer.selectAll("." + t3._id) : l3[t3._id.charAt(0) + "axislayer"]).each(function() {
                    var i3 = n.select(this);
                    e5.L && (i3 = i3.selectAll(e5.L)), i3.each(function(i4) {
                      var l4 = t3.l2p(o4 ? ke(i4) : i4.x) + t3._offset, s2 = n.select(this);
                      l4 < t3["_visibleLabelMax_" + r5._id] && l4 > t3["_visibleLabelMin_" + r5._id] ? s2.style("display", "none") : "tick" !== e5.K || a3 || s2.style("display", null);
                    });
                  });
                });
              });
            }, y2(g2, v2 + 1 ? v2 : p2);
            var x2 = null;
            t3._selections && (t3._selections[u2] = g2);
            var b2 = [function() {
              return m2.length && Promise.all(m2);
            }];
            t3.automargin && i2._redrawFromAutoMarginCount && 90 === v2 ? (x2 = v2, b2.push(function() {
              y2(g2, v2);
            })) : b2.push(function() {
              if (y2(g2, p2), f2.length && t3.autotickangles && ("log" !== t3.type || "D" !== String(t3.dtick).charAt(0))) {
                x2 = t3.autotickangles[0];
                var e4, n2 = 0, a2 = [], i3 = 1;
                g2.each(function(e5) {
                  n2 = Math.max(n2, e5.fontSize);
                  var r4 = t3.l2p(e5.x), o4 = Ce(this), l2 = d.bBox(o4.node());
                  i3 = Math.max(i3, c.lineCount(o4)), a2.push({ top: 0, bottom: 10, height: 10, left: r4 - l2.width / 2, right: r4 + l2.width / 2 + 2, width: l2.width + 2 });
                });
                var o3 = ("boundaries" === t3.tickson || t3.showdividers) && !r3.secondary, s2 = f2.length, u3 = Math.abs((f2[s2 - 1].x - f2[0].x) * t3._m) / (s2 - 1), h3 = o3 ? u3 / 2 : u3, v3 = o3 ? t3.ticklen : 1.25 * n2 * i3, m3 = h3 / Math.sqrt(Math.pow(h3, 2) + Math.pow(v3, 2)), b3 = t3.autotickangles.map(function(e5) {
                  return e5 * Math.PI / 180;
                }), _3 = b3.find(function(e5) {
                  return Math.abs(Math.cos(e5)) <= m3;
                });
                void 0 === _3 && (_3 = b3.reduce(function(e5, t4) {
                  return Math.abs(Math.cos(e5)) < Math.abs(Math.cos(t4)) ? e5 : t4;
                }, b3[0]));
                var w3 = _3 * (180 / Math.PI);
                if (o3) {
                  var T3 = 2;
                  for (t3.ticks && (T3 += t3.tickwidth / 2), e4 = 0; e4 < a2.length; e4++) {
                    var M3 = f2[e4].xbnd, k3 = a2[e4];
                    if (null !== M3[0] && k3.left - t3.l2p(M3[0]) < T3 || null !== M3[1] && t3.l2p(M3[1]) - k3.right < T3) {
                      x2 = w3;
                      break;
                    }
                  }
                } else {
                  var A3 = t3.ticklabelposition || "", L3 = function(e5) {
                    return -1 !== A3.indexOf(e5);
                  }, S3 = L3("top"), C3 = L3("left"), O3 = L3("right"), D3 = L3("bottom") || C3 || S3 || O3 ? (t3.tickwidth || 0) + 6 : 0;
                  for (e4 = 0; e4 < a2.length - 1; e4++) if (l.bBoxIntersect(a2[e4], a2[e4 + 1], D3)) {
                    x2 = w3;
                    break;
                  }
                }
                x2 && y2(g2, x2);
              }
            }), t3._tickAngles && b2.push(function() {
              t3._tickAngles[u2] = null === x2 ? a(p2) ? p2 : 0 : x2;
            });
            var _2 = function() {
              var e4 = 0, r4 = 0;
              return g2.each(function(n2, a2) {
                var i3, o3 = Ce(this);
                o3.select(".text-math-group").empty() && (t3._vals[a2] && (i3 = t3._vals[a2].bb || d.bBox(o3.node()), t3._vals[a2].bb = i3), e4 = Math.max(e4, i3.width), r4 = Math.max(r4, i3.height));
              }), { labelsMaxW: e4, labelsMaxH: r4 };
            }, w2 = t3._anchorAxis;
            if (w2 && (w2.autorange || w2.insiderange) && Fe(t3) && !X(i2, t3._id) && (i2._insideTickLabelsUpdaterange || (i2._insideTickLabelsUpdaterange = {}), w2.autorange && (i2._insideTickLabelsUpdaterange[w2._name + ".autorange"] = w2.autorange, b2.push(_2)), w2.insiderange)) {
              var T2 = _2(), M2 = "y" === t3._id.charAt(0) ? T2.labelsMaxW : T2.labelsMaxH;
              M2 += 6, "inside" === t3.ticklabelposition && (M2 += t3.ticklen || 0);
              var k2 = "right" === t3.side || "top" === t3.side ? 1 : -1, A2 = 1 === k2 ? 1 : 0, L2 = 1 === k2 ? 0 : 1, S2 = [];
              S2[L2] = w2.range[L2];
              var C2 = w2.range, O2 = w2.r2p(C2[A2]), D2 = w2.r2p(C2[L2]), P2 = i2._insideTickLabelsUpdaterange[w2._name + ".range"];
              if (P2) {
                var z2 = w2.r2p(P2[A2]), I2 = w2.r2p(P2[L2]), B2 = k2 * ("y" === t3._id.charAt(0) ? 1 : -1);
                B2 * O2 < B2 * z2 && (O2 = z2, S2[A2] = C2[A2] = P2[A2]), B2 * D2 > B2 * I2 && (D2 = I2, S2[L2] = C2[L2] = P2[L2]);
              }
              var j2 = Math.abs(D2 - O2);
              j2 - M2 > 0 ? M2 *= 1 + M2 / (j2 -= M2) : M2 = 0, "y" !== t3._id.charAt(0) && (M2 = -M2), S2[A2] = w2.p2r(w2.r2p(C2[A2]) + k2 * M2), "min" === w2.autorange || "max reversed" === w2.autorange ? (S2[0] = null, w2._rangeInitial0 = void 0, w2._rangeInitial1 = void 0) : "max" !== w2.autorange && "min reversed" !== w2.autorange || (S2[1] = null, w2._rangeInitial0 = void 0, w2._rangeInitial1 = void 0), i2._insideTickLabelsUpdaterange[w2._name + ".range"] = S2;
            }
            var Y2 = l.syncOrAsync(b2);
            return Y2 && Y2.then && e3._promises.push(Y2), Y2;
          }, G.getPxPosition = function(e3, t3) {
            var r3, n2 = e3._fullLayout._size, a2 = t3._id.charAt(0), i2 = t3.side;
            return "free" !== t3.anchor ? r3 = t3._anchorAxis : "x" === a2 ? r3 = { _offset: n2.t + (1 - (t3.position || 0)) * n2.h, _length: 0 } : "y" === a2 && (r3 = { _offset: n2.l + (t3.position || 0) * n2.w + t3._shift, _length: 0 }), "top" === i2 || "left" === i2 ? r3._offset : "bottom" === i2 || "right" === i2 ? r3._offset + r3._length : void 0;
          }, G.shouldShowZeroLine = function(e3, t3, r3) {
            var n2 = l.simpleMap(t3.range, t3.r2l);
            return n2[0] * n2[1] <= 0 && t3.zeroline && ("linear" === t3.type || "-" === t3.type) && !(t3.rangebreaks && t3.maskBreaks(0) === I) && (Se(t3, 0) || !function(e4, t4, r4, n3) {
              var a2 = r4._mainAxis;
              if (a2) {
                var i2 = e4._fullLayout, o2 = t4._id.charAt(0), l2 = G.counterLetter(t4._id), s2 = t4._offset + (Math.abs(n3[0]) < Math.abs(n3[1]) == ("x" === o2) ? 0 : t4._length), c2 = i2._plots[r4._mainSubplot];
                if (!(c2.mainplotinfo || c2).overlays.length) return h2(r4);
                for (var u2 = G.list(e4, l2), f2 = 0; f2 < u2.length; f2++) {
                  var d2 = u2[f2];
                  if (d2._mainAxis === a2 && h2(d2)) return true;
                }
              }
              function h2(e5) {
                if (!e5.showline || !e5.linewidth) return false;
                var r5 = Math.max((e5.linewidth + t4.zerolinewidth) / 2, 1);
                function n4(e6) {
                  return "number" == typeof e6 && Math.abs(e6 - s2) < r5;
                }
                if (n4(e5._mainLinePosition) || n4(e5._mainMirrorPosition)) return true;
                var a3 = e5._linepositions || {};
                for (var i3 in a3) if (n4(a3[i3][0]) || n4(a3[i3][1])) return true;
              }
            }(e3, t3, r3, n2) || function(e4, t4) {
              for (var r4 = e4._fullData, n3 = t4._mainSubplot, a2 = t4._id.charAt(0), i2 = 0; i2 < r4.length; i2++) {
                var l2 = r4[i2];
                if (true === l2.visible && l2.xaxis + l2.yaxis === n3) {
                  if (o.traceIs(l2, "bar-like") && l2.orientation === { x: "h", y: "v" }[a2]) return true;
                  if (l2.fill && l2.fill.charAt(l2.fill.length - 1) === a2) return true;
                }
              }
              return false;
            }(e3, t3));
          }, G.clipEnds = function(e3, t3) {
            return t3.filter(function(t4) {
              return Se(e3, t4.x);
            });
          }, G.allowAutoMargin = function(e3) {
            for (var t3 = G.list(e3, "", true), r3 = 0; r3 < t3.length; r3++) {
              var n2 = t3[r3];
              n2.automargin && (i.allowAutoMargin(e3, Oe(n2)), n2.mirror && i.allowAutoMargin(e3, De(n2))), o.getComponentMethod("rangeslider", "isVisible")(n2) && i.allowAutoMargin(e3, Pe(n2));
            }
          }, G.swap = function(e3, t3) {
            for (var r3 = function(e4, t4) {
              var r4, n3, a2 = [];
              for (r4 = 0; r4 < t4.length; r4++) {
                var i2 = [], o2 = e4._fullData[t4[r4]].xaxis, l2 = e4._fullData[t4[r4]].yaxis;
                if (o2 && l2) {
                  for (n3 = 0; n3 < a2.length; n3++) -1 === a2[n3].x.indexOf(o2) && -1 === a2[n3].y.indexOf(l2) || i2.push(n3);
                  if (i2.length) {
                    var s2, c2 = a2[i2[0]];
                    if (i2.length > 1) for (n3 = 1; n3 < i2.length; n3++) s2 = a2[i2[n3]], ze(c2.x, s2.x), ze(c2.y, s2.y);
                    ze(c2.x, [o2]), ze(c2.y, [l2]);
                  } else a2.push({ x: [o2], y: [l2] });
                }
              }
              return a2;
            }(e3, t3), n2 = 0; n2 < r3.length; n2++) Ie(e3, r3[n2].x, r3[n2].y);
          };
        }, 9666: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(3821).BADNUM, o = a.isArrayOrTypedArray, l = a.isDateTime, s = a.cleanNumber, c = Math.round;
          function u(e3, t3) {
            return t3 ? n(e3) : "number" == typeof e3;
          }
          function f(e3) {
            return Math.max(1, (e3 - 1) / 1e3);
          }
          e2.exports = function(e3, t3, r3) {
            var a2 = e3, d = r3.noMultiCategory;
            if (o(a2) && !a2.length) return "-";
            if (!d && function(e4) {
              return o(e4[0]) && o(e4[1]);
            }(a2)) return "multicategory";
            if (d && Array.isArray(a2[0])) {
              for (var h = [], p = 0; p < a2.length; p++) if (o(a2[p])) for (var v = 0; v < a2[p].length; v++) h.push(a2[p][v]);
              a2 = h;
            }
            if (function(e4, t4) {
              for (var r4 = e4.length, a3 = f(r4), i2 = 0, o2 = 0, s2 = {}, u2 = 0; u2 < r4; u2 += a3) {
                var d2 = e4[c(u2)], h2 = String(d2);
                s2[h2] || (s2[h2] = 1, l(d2, t4) && i2++, n(d2) && o2++);
              }
              return i2 > 2 * o2;
            }(a2, t3)) return "date";
            var g = "strict" !== r3.autotypenumbers;
            return function(e4, t4) {
              for (var r4 = e4.length, n2 = f(r4), a3 = 0, o2 = 0, l2 = {}, u2 = 0; u2 < r4; u2 += n2) {
                var d2 = e4[c(u2)], h2 = String(d2);
                if (!l2[h2]) {
                  l2[h2] = 1;
                  var p2 = typeof d2;
                  "boolean" === p2 ? o2++ : (t4 ? s(d2) !== i : "number" === p2) ? a3++ : "string" === p2 && o2++;
                }
              }
              return o2 > 2 * a3;
            }(a2, g) ? "category" : function(e4, t4) {
              for (var r4 = e4.length, n2 = 0; n2 < r4; n2++) if (u(e4[n2], t4)) return true;
              return false;
            }(a2, g) ? "linear" : "-";
          };
        }, 7655: function(e2, t2, r2) {
          var n = r2(721), a = r2(3626), i = r2(4809), o = r2(8032), l = r2(9008), s = r2(5829), c = r2(2777), u = r2(7433), f = r2(2036), d = r2(4616), h = r2(6473), p = r2(7405), v = r2(259), g = r2(9091), m = r2(4826).WEEKDAY_PATTERN, y = r2(4826).HOUR_PATTERN;
          function x(e3, t3, r3) {
            function a2(r4, n2) {
              return i.coerce(e3, t3, s.rangebreaks, r4, n2);
            }
            if (a2("enabled")) {
              var o2 = a2("bounds");
              if (o2 && o2.length >= 2) {
                var l2, c2, u2 = "";
                if (2 === o2.length) {
                  for (l2 = 0; l2 < 2; l2++) if (c2 = _(o2[l2])) {
                    u2 = m;
                    break;
                  }
                }
                var f2 = a2("pattern", u2);
                if (f2 === m) for (l2 = 0; l2 < 2; l2++) (c2 = _(o2[l2])) && (t3.bounds[l2] = o2[l2] = c2 - 1);
                if (f2) for (l2 = 0; l2 < 2; l2++) switch (c2 = o2[l2], f2) {
                  case m:
                    if (!n(c2)) return void (t3.enabled = false);
                    if ((c2 = +c2) !== Math.floor(c2) || c2 < 0 || c2 >= 7) return void (t3.enabled = false);
                    t3.bounds[l2] = o2[l2] = c2;
                    break;
                  case y:
                    if (!n(c2)) return void (t3.enabled = false);
                    if ((c2 = +c2) < 0 || c2 > 24) return void (t3.enabled = false);
                    t3.bounds[l2] = o2[l2] = c2;
                }
                if (false === r3.autorange) {
                  var d2 = r3.range;
                  if (d2[0] < d2[1]) {
                    if (o2[0] < d2[0] && o2[1] > d2[1]) return void (t3.enabled = false);
                  } else if (o2[0] > d2[0] && o2[1] < d2[1]) return void (t3.enabled = false);
                }
              } else {
                var h2 = a2("values");
                if (!h2 || !h2.length) return void (t3.enabled = false);
                a2("dvalue");
              }
            }
          }
          e2.exports = function(e3, t3, r3, n2, y2) {
            var b2, _2 = n2.letter, w = n2.font || {}, T = n2.splomStash || {}, M = r3("visible", !n2.visibleDflt), k = t3._template || {}, A = t3.type || k.type || "-";
            "date" === A && (a.getComponentMethod("calendars", "handleDefaults")(e3, t3, "calendar", n2.calendar), n2.noTicklabelmode || (b2 = r3("ticklabelmode"))), n2.noTicklabelindex || "date" !== A && "linear" !== A || r3("ticklabelindex");
            var L = "";
            n2.noTicklabelposition && "multicategory" !== A || (L = i.coerce(e3, t3, { ticklabelposition: { valType: "enumerated", dflt: "outside", values: "period" === b2 ? ["outside", "inside"] : "x" === _2 ? ["outside", "inside", "outside left", "inside left", "outside right", "inside right"] : ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom"] } }, "ticklabelposition")), n2.noTicklabeloverflow || r3("ticklabeloverflow", -1 !== L.indexOf("inside") ? "hide past domain" : "category" === A || "multicategory" === A ? "allow" : "hide past div"), g(t3, y2), v(e3, t3, r3, n2), h(e3, t3, r3, n2), "category" === A || n2.noHover || r3("hoverformat");
            var S = r3("color"), C = S !== s.color.dflt ? S : w.color, O = T.label || y2._dfltTitle[_2];
            if (d(e3, t3, r3, A, n2), !M) return t3;
            r3("title.text", O), i.coerceFont(r3, "title.font", w, { overrideDflt: { size: i.bigFont(w.size), color: C } }), c(e3, t3, r3, A);
            var D = n2.hasMinor;
            if (D && (o.newContainer(t3, "minor"), c(e3, t3, r3, A, { isMinor: true })), f(e3, t3, r3, A, n2), u(e3, t3, r3, n2), D) {
              var P = n2.isMinor;
              n2.isMinor = true, u(e3, t3, r3, n2), n2.isMinor = P;
            }
            p(e3, t3, r3, { dfltColor: S, bgColor: n2.bgColor, showGrid: n2.showGrid, hasMinor: D, attributes: s }), !D || t3.minor.ticks || t3.minor.showgrid || delete t3.minor, (t3.showline || t3.ticks) && r3("mirror");
            var z, I = "multicategory" === A;
            if (n2.noTickson || "category" !== A && !I || !t3.ticks && !t3.showgrid || (I && (z = "boundaries"), "boundaries" === r3("tickson", z) && delete t3.ticklabelposition), I && r3("showdividers") && (r3("dividercolor"), r3("dividerwidth")), "date" === A) if (l(e3, t3, { name: "rangebreaks", inclusionAttr: "enabled", handleItemDefaults: x }), t3.rangebreaks.length) {
              for (var E = 0; E < t3.rangebreaks.length; E++) if (t3.rangebreaks[E].pattern === m) {
                t3._hasDayOfWeekBreaks = true;
                break;
              }
              if (g(t3, y2), y2._has("scattergl") || y2._has("splom")) for (var R = 0; R < n2.data.length; R++) {
                var N = n2.data[R];
                "scattergl" !== N.type && "splom" !== N.type || (N.visible = false, i.warn(N.type + " traces do not work on axes with rangebreaks. Setting trace " + N.index + " to `visible: false`."));
              }
            } else delete t3.rangebreaks;
            return t3;
          };
          var b = { sun: 1, mon: 2, tue: 3, wed: 4, thu: 5, fri: 6, sat: 7 };
          function _(e3) {
            if ("string" == typeof e3) return b[e3.substr(0, 3).toLowerCase()];
          }
        }, 712: function(e2, t2, r2) {
          var n = r2(7296), a = n.FORMAT_LINK, i = n.DATE_FORMAT_LINK;
          function o(e3, t3) {
            return ["Sets the " + e3 + " formatting rule" + (t3 ? "for `" + t3 + "` " : ""), "using d3 formatting mini-languages", "which are very similar to those in Python. For numbers, see: " + a + "."].join(" ");
          }
          function l(e3, t3) {
            return o(e3, t3) + [" And for dates see: " + i + ".", "We add two items to d3's date formatter:", "*%h* for half of the year as a decimal number as well as", "*%{n}f* for fractional seconds", "with n digits. For example, *2016-10-13 09:15:23.456* with tickformat", "*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ");
          }
          e2.exports = { axisHoverFormat: function(e3, t3) {
            return { valType: "string", dflt: "", editType: "none", description: (t3 ? o : l)("hover text", e3) + ["By default the values are formatted using " + (t3 ? "generic number format" : "`" + e3 + "axis.hoverformat`") + "."].join(" ") };
          }, descriptionOnlyNumbers: o, descriptionWithDates: l };
        }, 5975: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4826);
          function i(e3, t3) {
            if (t3 && t3.length) {
              for (var r3 = 0; r3 < t3.length; r3++) if (t3[r3][e3]) return true;
            }
            return false;
          }
          t2.id2name = function(e3) {
            if ("string" == typeof e3 && e3.match(a.AX_ID_PATTERN)) {
              var t3 = e3.split(" ")[0].substr(1);
              return "1" === t3 && (t3 = ""), e3.charAt(0) + "axis" + t3;
            }
          }, t2.name2id = function(e3) {
            if (e3.match(a.AX_NAME_PATTERN)) {
              var t3 = e3.substr(5);
              return "1" === t3 && (t3 = ""), e3.charAt(0) + t3;
            }
          }, t2.cleanId = function(e3, t3, r3) {
            var n2 = /( domain)$/.test(e3);
            if ("string" == typeof e3 && e3.match(a.AX_ID_PATTERN) && (!t3 || e3.charAt(0) === t3) && (!n2 || r3)) {
              var i2 = e3.split(" ")[0].substr(1).replace(/^0+/, "");
              return "1" === i2 && (i2 = ""), e3.charAt(0) + i2 + (n2 && r3 ? " domain" : "");
            }
          }, t2.list = function(e3, r3, n2) {
            var a2 = e3._fullLayout;
            if (!a2) return [];
            var i2, o = t2.listIds(e3, r3), l = new Array(o.length);
            for (i2 = 0; i2 < o.length; i2++) {
              var s = o[i2];
              l[i2] = a2[s.charAt(0) + "axis" + s.substr(1)];
            }
            if (!n2) {
              var c = a2._subplots.gl3d || [];
              for (i2 = 0; i2 < c.length; i2++) {
                var u = a2[c[i2]];
                r3 ? l.push(u[r3 + "axis"]) : l.push(u.xaxis, u.yaxis, u.zaxis);
              }
            }
            return l;
          }, t2.listIds = function(e3, t3) {
            var r3 = e3._fullLayout;
            if (!r3) return [];
            var n2 = r3._subplots;
            return t3 ? n2[t3 + "axis"] : n2.xaxis.concat(n2.yaxis);
          }, t2.getFromId = function(e3, r3, n2) {
            var a2 = e3._fullLayout;
            return r3 = void 0 === r3 || "string" != typeof r3 ? r3 : r3.replace(" domain", ""), "x" === n2 ? r3 = r3.replace(/y[0-9]*/, "") : "y" === n2 && (r3 = r3.replace(/x[0-9]*/, "")), a2[t2.id2name(r3)];
          }, t2.getFromTrace = function(e3, r3, a2) {
            var i2 = e3._fullLayout, o = null;
            if (n.traceIs(r3, "gl3d")) {
              var l = r3.scene;
              "scene" === l.substr(0, 5) && (o = i2[l][a2 + "axis"]);
            } else o = t2.getFromId(e3, r3[a2 + "axis"] || a2);
            return o;
          }, t2.idSort = function(e3, t3) {
            var r3 = e3.charAt(0), n2 = t3.charAt(0);
            return r3 !== n2 ? r3 > n2 ? 1 : -1 : +(e3.substr(1) || 1) - +(t3.substr(1) || 1);
          }, t2.ref2id = function(e3) {
            return !!/^[xyz]/.test(e3) && e3.split(" ")[0];
          }, t2.isLinked = function(e3, t3) {
            return i(t3, e3._axisMatchGroups) || i(t3, e3._axisConstraintGroups);
          };
        }, 6473: function(e2, t2, r2) {
          var n = r2(7800).isTypedArraySpec;
          e2.exports = function(e3, t3, r3, a) {
            if ("category" === t3.type) {
              var i, o = e3.categoryarray, l = Array.isArray(o) && o.length > 0 || n(o);
              l && (i = "array");
              var s, c = r3("categoryorder", i);
              "array" === c && (s = r3("categoryarray")), l || "array" !== c || (c = t3.categoryorder = "trace"), "trace" === c ? t3._initialCategories = [] : "array" === c ? t3._initialCategories = s.slice() : (s = function(e4, t4) {
                var r4, n2, a2, i2 = t4.dataAttr || e4._id.charAt(0), o2 = {};
                if (t4.axData) r4 = t4.axData;
                else for (r4 = [], n2 = 0; n2 < t4.data.length; n2++) {
                  var l2 = t4.data[n2];
                  l2[i2 + "axis"] === e4._id && r4.push(l2);
                }
                for (n2 = 0; n2 < r4.length; n2++) {
                  var s2 = r4[n2][i2];
                  for (a2 = 0; a2 < s2.length; a2++) {
                    var c2 = s2[a2];
                    null != c2 && (o2[c2] = 1);
                  }
                }
                return Object.keys(o2);
              }(t3, a).sort(), "category ascending" === c ? t3._initialCategories = s : "category descending" === c && (t3._initialCategories = s.reverse()));
            }
          };
        }, 8599: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(3821), o = i.ONEDAY, l = i.ONEWEEK;
          t2.dtick = function(e3, t3) {
            var r3 = "log" === t3, a2 = "date" === t3, i2 = "category" === t3, l2 = a2 ? o : 1;
            if (!e3) return l2;
            if (n(e3)) return (e3 = Number(e3)) <= 0 ? l2 : i2 ? Math.max(1, Math.round(e3)) : a2 ? Math.max(0.1, e3) : e3;
            if ("string" != typeof e3 || !a2 && !r3) return l2;
            var s = e3.charAt(0), c = e3.substr(1);
            return (c = n(c) ? Number(c) : 0) <= 0 || !(a2 && "M" === s && c === Math.round(c) || r3 && "L" === s || r3 && "D" === s && (1 === c || 2 === c)) ? l2 : e3;
          }, t2.tick0 = function(e3, t3, r3, i2) {
            return "date" === t3 ? a.cleanDate(e3, a.dateTick0(r3, i2 % l == 0 ? 1 : 0)) : "D1" !== i2 && "D2" !== i2 ? n(e3) ? Number(e3) : 0 : void 0;
          };
        }, 4826: function(e2, t2, r2) {
          var n = r2(694).counter;
          e2.exports = { idRegex: { x: n("x", "( domain)?"), y: n("y", "( domain)?") }, attrRegex: n("[xy]axis"), xAxisMatch: n("xaxis"), yAxisMatch: n("yaxis"), AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/, AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/, SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/, HOUR_PATTERN: "hour", WEEKDAY_PATTERN: "day of week", MINDRAG: 8, MINZOOM: 20, DRAGGERSIZE: 20, REDRAWDELAY: 50, DFLTRANGEX: [-1, 6], DFLTRANGEY: [-1, 4], traceLayerClasses: ["imagelayer", "heatmaplayer", "contourcarpetlayer", "contourlayer", "funnellayer", "waterfalllayer", "barlayer", "carpetlayer", "violinlayer", "boxlayer", "ohlclayer", "scattercarpetlayer", "scatterlayer"], clipOnAxisFalseQuery: [".scatterlayer", ".barlayer", ".funnellayer", ".waterfalllayer"], layerValue2layerClass: { "above traces": "above", "below traces": "below" }, zindexSeparator: "z" };
        }, 4391: function(e2, t2, r2) {
          var n = r2(4809), a = r2(2919), i = r2(5975).id2name, o = r2(5829), l = r2(7611), s = r2(9091), c = r2(3821).ALMOST_EQUAL, u = r2(4530).FROM_BL;
          function f(e3, t3, r3) {
            var a2 = r3.axIds, l2 = r3.layoutOut, s2 = r3.hasImage, c2 = l2._axisConstraintGroups, u2 = l2._axisMatchGroups, f2 = t3._id, v2 = f2.charAt(0), g2 = ((l2._splomAxes || {})[v2] || {})[f2] || {}, m2 = t3._id, y = "x" === m2.charAt(0);
            function x(r4, a3) {
              return n.coerce(e3, t3, o, r4, a3);
            }
            t3._matchGroup = null, t3._constraintGroup = null, x("constrain", s2 ? "domain" : "range"), n.coerce(e3, t3, { constraintoward: { valType: "enumerated", values: y ? ["left", "center", "right"] : ["bottom", "middle", "top"], dflt: y ? "center" : "middle" } }, "constraintoward");
            var b, _, w = t3.type, T = [];
            for (b = 0; b < a2.length; b++) (_ = a2[b]) !== m2 && l2[i(_)].type === w && T.push(_);
            var M = h(c2, m2);
            if (M) {
              var k = [];
              for (b = 0; b < T.length; b++) M[_ = T[b]] || k.push(_);
              T = k;
            }
            var A, L, S = T.length;
            S && (e3.matches || g2.matches) && (A = n.coerce(e3, t3, { matches: { valType: "enumerated", values: T, dflt: -1 !== T.indexOf(g2.matches) ? g2.matches : void 0 } }, "matches"));
            var C = s2 && !y ? t3.anchor : void 0;
            if (S && !A && (e3.scaleanchor || C) && (L = n.coerce(e3, t3, { scaleanchor: { valType: "enumerated", values: T.concat([false]) } }, "scaleanchor", C)), A) {
              t3._matchGroup = p(u2, m2, A, 1);
              var O = l2[i(A)], D = d(l2, t3) / d(l2, O);
              y !== ("x" === A.charAt(0)) && (D = (y ? "x" : "y") + D), p(c2, m2, A, D);
            } else e3.matches && -1 !== a2.indexOf(e3.matches) && n.warn("ignored " + t3._name + '.matches: "' + e3.matches + '" to avoid an infinite loop');
            if (L) {
              var P = x("scaleratio");
              P || (P = t3.scaleratio = 1), p(c2, m2, L, P);
            } else e3.scaleanchor && -1 !== a2.indexOf(e3.scaleanchor) && n.warn("ignored " + t3._name + '.scaleanchor: "' + e3.scaleanchor + '" to avoid either an infinite loop and possibly inconsistent scaleratios, or because this axis declares a *matches* constraint.');
          }
          function d(e3, t3) {
            var r3 = t3.domain;
            return r3 || (r3 = e3[i(t3.overlaying)].domain), r3[1] - r3[0];
          }
          function h(e3, t3) {
            for (var r3 = 0; r3 < e3.length; r3++) if (e3[r3][t3]) return e3[r3];
            return null;
          }
          function p(e3, t3, r3, n2) {
            var a2, i2, o2, l2, s2, c2 = h(e3, t3);
            null === c2 ? ((c2 = {})[t3] = 1, s2 = e3.length, e3.push(c2)) : s2 = e3.indexOf(c2);
            var u2 = Object.keys(c2);
            for (a2 = 0; a2 < e3.length; a2++) if (o2 = e3[a2], a2 !== s2 && o2[r3]) {
              var f2 = o2[r3];
              for (i2 = 0; i2 < u2.length; i2++) o2[l2 = u2[i2]] = v(f2, v(n2, c2[l2]));
              return void e3.splice(s2, 1);
            }
            if (1 !== n2) for (i2 = 0; i2 < u2.length; i2++) {
              var d2 = u2[i2];
              c2[d2] = v(n2, c2[d2]);
            }
            c2[r3] = 1;
          }
          function v(e3, t3) {
            var r3, n2, a2 = "", i2 = "";
            "string" == typeof e3 && (r3 = (a2 = e3.match(/^[xy]*/)[0]).length, e3 = +e3.substr(r3)), "string" == typeof t3 && (n2 = (i2 = t3.match(/^[xy]*/)[0]).length, t3 = +t3.substr(n2));
            var o2 = e3 * t3;
            return r3 || n2 ? r3 && n2 && a2.charAt(0) !== i2.charAt(0) ? r3 === n2 ? o2 : (r3 > n2 ? a2.substr(n2) : i2.substr(r3)) + o2 : a2 + i2 + e3 * t3 : o2;
          }
          function g(e3, t3) {
            for (var r3 = t3._size, n2 = r3.h / r3.w, a2 = {}, i2 = Object.keys(e3), o2 = 0; o2 < i2.length; o2++) {
              var l2 = i2[o2], s2 = e3[l2];
              if ("string" == typeof s2) {
                var c2 = s2.match(/^[xy]*/)[0], u2 = c2.length;
                s2 = +s2.substr(u2);
                for (var f2 = "y" === c2.charAt(0) ? n2 : 1 / n2, d2 = 0; d2 < u2; d2++) s2 *= f2;
              }
              a2[l2] = s2;
            }
            return a2;
          }
          function m(e3, t3) {
            var r3 = e3._inputDomain, n2 = u[e3.constraintoward], a2 = r3[0] + (r3[1] - r3[0]) * n2;
            e3.domain = e3._input.domain = [a2 + (r3[0] - a2) / t3, a2 + (r3[1] - a2) / t3], e3.setScale();
          }
          t2.handleDefaults = function(e3, t3, r3) {
            var a2, o2, l2, c2, u2, d2, h2, p2, v2 = r3.axIds, g2 = r3.axHasImage, m2 = t3._axisConstraintGroups = [], y = t3._axisMatchGroups = [];
            for (a2 = 0; a2 < v2.length; a2++) f(u2 = e3[c2 = i(v2[a2])], d2 = t3[c2], { axIds: v2, layoutOut: t3, hasImage: g2[c2] });
            function x(e4, r4) {
              for (a2 = 0; a2 < e4.length; a2++) for (l2 in o2 = e4[a2]) t3[i(l2)][r4] = o2;
            }
            for (x(y, "_matchGroup"), a2 = 0; a2 < m2.length; a2++) for (l2 in o2 = m2[a2]) if ((d2 = t3[i(l2)]).fixedrange) {
              for (var b in o2) {
                var _ = i(b);
                false === (e3[_] || {}).fixedrange && n.warn("fixedrange was specified as false for axis " + _ + " but was overridden because another axis in its constraint group has fixedrange true"), t3[_].fixedrange = true;
              }
              break;
            }
            for (a2 = 0; a2 < m2.length; ) {
              for (l2 in o2 = m2[a2]) {
                (d2 = t3[i(l2)])._matchGroup && Object.keys(d2._matchGroup).length === Object.keys(o2).length && (m2.splice(a2, 1), a2--);
                break;
              }
              a2++;
            }
            x(m2, "_constraintGroup");
            var w = ["constrain", "range", "autorange", "rangemode", "rangebreaks", "categoryorder", "categoryarray"], T = false, M = false;
            function k() {
              p2 = d2[h2], "rangebreaks" === h2 && (M = d2._hasDayOfWeekBreaks);
            }
            for (a2 = 0; a2 < y.length; a2++) {
              o2 = y[a2];
              for (var A = 0; A < w.length; A++) {
                var L;
                for (l2 in h2 = w[A], p2 = null, o2) if (u2 = e3[c2 = i(l2)], d2 = t3[c2], h2 in d2) {
                  if (!d2.matches && (L = d2, h2 in u2)) {
                    k();
                    break;
                  }
                  null === p2 && h2 in u2 && k();
                }
                if ("range" === h2 && p2 && u2.range && 2 === u2.range.length && null !== u2.range[0] && null !== u2.range[1] && (T = true), "autorange" === h2 && null === p2 && T && (p2 = false), null === p2 && h2 in L && (p2 = L[h2]), null !== p2) for (l2 in o2) (d2 = t3[i(l2)])[h2] = "range" === h2 ? p2.slice() : p2, "rangebreaks" === h2 && (d2._hasDayOfWeekBreaks = M, s(d2, t3));
              }
            }
          }, t2.enforce = function(e3) {
            var t3, r3, n2, o2, s2, u2, f2, d2, h2 = e3._fullLayout, p2 = h2._axisConstraintGroups || [];
            for (t3 = 0; t3 < p2.length; t3++) {
              n2 = g(p2[t3], h2);
              var v2 = Object.keys(n2), y = 1 / 0, x = 0, b = 1 / 0, _ = {}, w = {}, T = false;
              for (r3 = 0; r3 < v2.length; r3++) w[o2 = v2[r3]] = s2 = h2[i(o2)], s2._inputDomain ? s2.domain = s2._inputDomain.slice() : s2._inputDomain = s2.domain.slice(), s2._inputRange || (s2._inputRange = s2.range.slice()), s2.setScale(), _[o2] = u2 = Math.abs(s2._m) / n2[o2], y = Math.min(y, u2), "domain" !== s2.constrain && s2._constraintShrinkable || (b = Math.min(b, u2)), delete s2._constraintShrinkable, x = Math.max(x, u2), "domain" === s2.constrain && (T = true);
              if (!(y > c * x) || T) {
                for (r3 = 0; r3 < v2.length; r3++) if (u2 = _[o2 = v2[r3]], f2 = (s2 = w[o2]).constrain, u2 !== b || "domain" === f2) if (d2 = u2 / b, "range" === f2) l(s2, d2);
                else {
                  var M = s2._inputDomain, k = (s2.domain[1] - s2.domain[0]) / (M[1] - M[0]), A = (s2.r2l(s2.range[1]) - s2.r2l(s2.range[0])) / (s2.r2l(s2._inputRange[1]) - s2.r2l(s2._inputRange[0]));
                  if ((d2 /= k) * A < 1) {
                    s2.domain = s2._input.domain = M.slice(), l(s2, d2);
                    continue;
                  }
                  if (A < 1 && (s2.range = s2._input.range = s2._inputRange.slice(), d2 *= A), s2.autorange) {
                    var L = s2.r2l(s2.range[0]), S = s2.r2l(s2.range[1]), C = (L + S) / 2, O = C, D = C, P = Math.abs(S - C), z = C - P * d2 * 1.0001, I = C + P * d2 * 1.0001, E = a.makePadFn(h2, s2, 0), R = a.makePadFn(h2, s2, 1);
                    m(s2, d2);
                    var N, F, H = Math.abs(s2._m), B = a.concatExtremes(e3, s2), j = B.min, Y = B.max;
                    for (F = 0; F < j.length; F++) (N = j[F].val - E(j[F]) / H) > z && N < O && (O = N);
                    for (F = 0; F < Y.length; F++) (N = Y[F].val + R(Y[F]) / H) < I && N > D && (D = N);
                    d2 /= (D - O) / (2 * P), O = s2.l2r(O), D = s2.l2r(D), s2.range = s2._input.range = L < S ? [O, D] : [D, O];
                  }
                  m(s2, d2);
                }
              }
            }
          }, t2.getAxisGroup = function(e3, t3) {
            for (var r3 = e3._axisMatchGroups, n2 = 0; n2 < r3.length; n2++) if (r3[n2][t3]) return "g" + n2;
            return t3;
          }, t2.clean = function(e3, t3) {
            if (t3._inputDomain) {
              for (var r3 = false, n2 = t3._id, a2 = e3._fullLayout._axisConstraintGroups, i2 = 0; i2 < a2.length; i2++) if (a2[i2][n2]) {
                r3 = true;
                break;
              }
              r3 && "domain" === t3.constrain || (t3._input.domain = t3.domain = t3._inputDomain, delete t3._inputDomain);
            }
          };
        }, 1680: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = a.numberFormat, o = r2(5657), l = r2(4043), s = r2(3626), c = a.strTranslate, u = r2(635), f = r2(8766), d = r2(2203), h = r2(2141), p = r2(9714), v = r2(7983), g = r2(4751), m = r2(414), y = m.selectingOrDrawing, x = m.freeMode, b = r2(4530).FROM_TL, _ = r2(4823), w = r2(1817).redrawReglTraces, T = r2(4122), M = r2(5975).getFromId, k = r2(4844).prepSelect, A = r2(4844).clearOutline, L = r2(4844).selectOnClick, S = r2(7611), C = r2(4826), O = C.MINDRAG, D = C.MINZOOM, P = true;
          function z(e3, t3, r3, n2) {
            var i2 = a.ensureSingle(e3.draglayer, t3, r3, function(t4) {
              t4.classed("drag", true).style({ fill: "transparent", "stroke-width": 0 }).attr("data-subplot", e3.id);
            });
            return i2.call(v, n2), i2.node();
          }
          function I(e3, t3, r3, a2, i2, o2, l2) {
            var s2 = z(e3, "rect", t3, r3);
            return n.select(s2).call(d.setRect, a2, i2, o2, l2), s2;
          }
          function E(e3, t3) {
            for (var r3 = 0; r3 < e3.length; r3++) if (!e3[r3].fixedrange) return t3;
            return "";
          }
          function R(e3, t3, r3, n2, a2) {
            for (var i2 = 0; i2 < e3.length; i2++) {
              var o2 = e3[i2];
              if (!o2.fixedrange) if (o2.rangebreaks) {
                var l2 = "y" === o2._id.charAt(0), s2 = l2 ? 1 - t3 : t3, c2 = l2 ? 1 - r3 : r3;
                n2[o2._name + ".range[0]"] = o2.l2r(o2.p2l(s2 * o2._length)), n2[o2._name + ".range[1]"] = o2.l2r(o2.p2l(c2 * o2._length));
              } else {
                var u2 = o2._rl[0], f2 = o2._rl[1] - u2;
                n2[o2._name + ".range[0]"] = o2.l2r(u2 + f2 * t3), n2[o2._name + ".range[1]"] = o2.l2r(u2 + f2 * r3);
              }
            }
            if (a2 && a2.length) {
              var d2 = (t3 + (1 - r3)) / 2;
              R(a2, d2, 1 - d2, n2, []);
            }
          }
          function N(e3, t3) {
            for (var r3 = 0; r3 < e3.length; r3++) {
              var n2 = e3[r3];
              if (!n2.fixedrange) {
                if (n2.rangebreaks) {
                  var a2 = n2._length, i2 = (n2.p2l(0 + t3) - n2.p2l(0) + (n2.p2l(a2 + t3) - n2.p2l(a2))) / 2;
                  n2.range = [n2.l2r(n2._rl[0] - i2), n2.l2r(n2._rl[1] - i2)];
                } else n2.range = [n2.l2r(n2._rl[0] - t3 / n2._m), n2.l2r(n2._rl[1] - t3 / n2._m)];
                n2.limitRange && n2.limitRange();
              }
            }
          }
          function F(e3) {
            return 1 - (e3 >= 0 ? Math.min(e3, 0.9) : 1 / (1 / Math.max(e3, -0.3) + 3.222));
          }
          function H(e3, t3, r3, n2, a2) {
            return e3.append("path").attr("class", "zoombox").style({ fill: t3 > 0.2 ? "rgba(0,0,0,0)" : "rgba(255,255,255,0)", "stroke-width": 0 }).attr("transform", c(r3, n2)).attr("d", a2 + "Z");
          }
          function B(e3, t3, r3) {
            return e3.append("path").attr("class", "zoombox-corners").style({ fill: f.background, stroke: f.defaultLine, "stroke-width": 1, opacity: 0 }).attr("transform", c(t3, r3)).attr("d", "M0,0Z");
          }
          function j(e3, t3, r3, n2, a2, i2) {
            e3.attr("d", n2 + "M" + r3.l + "," + r3.t + "v" + r3.h + "h" + r3.w + "v-" + r3.h + "h-" + r3.w + "Z"), Y(e3, t3, a2, i2);
          }
          function Y(e3, t3, r3, n2) {
            r3 || (e3.transition().style("fill", n2 > 0.2 ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.3)").duration(200), t3.transition().style("opacity", 1).duration(200));
          }
          function V(e3) {
            n.select(e3).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove();
          }
          function U(e3) {
            P && e3.data && e3._context.showTips && (a.notifier(a._(e3, "Double-click to zoom back out"), "long"), P = false);
          }
          function q(e3) {
            var t3 = Math.floor(Math.min(e3.b - e3.t, e3.r - e3.l, D) / 2);
            return "M" + (e3.l - 3.5) + "," + (e3.t - 0.5 + t3) + "h3v" + -t3 + "h" + t3 + "v-3h-" + (t3 + 3) + "ZM" + (e3.r + 3.5) + "," + (e3.t - 0.5 + t3) + "h-3v" + -t3 + "h" + -t3 + "v-3h" + (t3 + 3) + "ZM" + (e3.r + 3.5) + "," + (e3.b + 0.5 - t3) + "h-3v" + t3 + "h" + -t3 + "v3h" + (t3 + 3) + "ZM" + (e3.l - 3.5) + "," + (e3.b + 0.5 - t3) + "h3v" + t3 + "h" + t3 + "v3h-" + (t3 + 3) + "Z";
          }
          function G(e3, t3, r3, n2, i2) {
            for (var o2, l2, s2, c2, u2 = false, f2 = {}, d2 = {}, h2 = (i2 || {}).xaHash, p2 = (i2 || {}).yaHash, v2 = 0; v2 < t3.length; v2++) {
              var g2 = t3[v2];
              for (o2 in r3) if (g2[o2]) {
                for (s2 in g2) i2 && (h2[s2] || p2[s2]) || ("x" === s2.charAt(0) ? r3 : n2)[s2] || (f2[s2] = o2);
                for (l2 in n2) i2 && (h2[l2] || p2[l2]) || !g2[l2] || (u2 = true);
              }
              for (l2 in n2) if (g2[l2]) for (c2 in g2) i2 && (h2[c2] || p2[c2]) || ("x" === c2.charAt(0) ? r3 : n2)[c2] || (d2[c2] = l2);
            }
            u2 && (a.extendFlat(f2, d2), d2 = {});
            var m2 = {}, y2 = [];
            for (s2 in f2) {
              var x2 = M(e3, s2);
              y2.push(x2), m2[x2._id] = x2;
            }
            var b2 = {}, _2 = [];
            for (c2 in d2) {
              var w2 = M(e3, c2);
              _2.push(w2), b2[w2._id] = w2;
            }
            return { xaHash: m2, yaHash: b2, xaxes: y2, yaxes: _2, xLinks: f2, yLinks: d2, isSubplotConstrained: u2 };
          }
          function Z(e3, t3) {
            if (l) {
              var r3 = void 0 !== e3.onwheel ? "wheel" : "mousewheel";
              e3._onwheel && e3.removeEventListener(r3, e3._onwheel), e3._onwheel = t3, e3.addEventListener(r3, t3, { passive: false });
            } else void 0 !== e3.onwheel ? e3.onwheel = t3 : void 0 !== e3.onmousewheel ? e3.onmousewheel = t3 : e3.isAddedWheelEvent || (e3.isAddedWheelEvent = true, e3.addEventListener("wheel", t3, { passive: false }));
          }
          function W(e3) {
            var t3 = [];
            for (var r3 in e3) t3.push(e3[r3]);
            return t3;
          }
          e2.exports = { makeDragBox: function(e3, t3, r3, l2, c2, f2, v2, m2) {
            var P2, z2, Y2, J, X, K, Q, $, ee, te, re, ne, ae, ie, oe, le, se, ce, ue, fe, de, he, pe, ve = e3._fullLayout._zoomlayer, ge = v2 + m2 === "nsew", me = 1 === (v2 + m2).length;
            function ye() {
              if (P2 = t3.xaxis, z2 = t3.yaxis, ee = P2._length, te = z2._length, Q = P2._offset, $ = z2._offset, (Y2 = {})[P2._id] = P2, (J = {})[z2._id] = z2, v2 && m2) for (var r4 = t3.overlays, n2 = 0; n2 < r4.length; n2++) {
                var a2 = r4[n2].xaxis;
                Y2[a2._id] = a2;
                var i2 = r4[n2].yaxis;
                J[i2._id] = i2;
              }
              X = W(Y2), K = W(J), ae = E(X, m2), ie = E(K, v2), oe = !ie && !ae, ne = G(e3, e3._fullLayout._axisMatchGroups, Y2, J);
              var o2 = (re = G(e3, e3._fullLayout._axisConstraintGroups, Y2, J, ne)).isSubplotConstrained || ne.isSubplotConstrained;
              le = m2 || o2, se = v2 || o2;
              var l3 = e3._fullLayout;
              ce = l3._has("scattergl"), ue = l3._has("splom"), fe = l3._has("svg");
            }
            r3 += t3.yaxis._shift, ye();
            var xe = function(e4, t4, r4) {
              return e4 ? "nsew" === e4 ? r4 ? "" : "pan" === t4 ? "move" : "crosshair" : e4.toLowerCase() + "-resize" : "pointer";
            }(ie + ae, e3._fullLayout.dragmode, ge), be = I(t3, v2 + m2 + "drag", xe, r3, l2, c2, f2);
            if (oe && !ge) return be.onmousedown = null, be.style.pointerEvents = "none", be;
            var _e, we, Te, Me, ke, Ae, Le, Se, Ce, Oe, De = { element: be, gd: e3, plotinfo: t3 };
            function Pe() {
              De.plotinfo.selection = false, A(e3);
            }
            function ze(e4, r4) {
              var a2 = De.gd;
              if (a2._fullLayout._activeShapeIndex >= 0) a2._fullLayout._deactivateShape(a2);
              else {
                var o2 = a2._fullLayout.clickmode;
                if (V(a2), 2 !== e4 || me || Ue(), ge) o2.indexOf("select") > -1 && L(r4, a2, X, K, t3.id, De), o2.indexOf("event") > -1 && h.click(a2, r4, t3.id);
                else if (1 === e4 && me) {
                  var l3 = v2 ? z2 : P2, c3 = "s" === v2 || "w" === m2 ? 0 : 1, f3 = l3._name + ".range[" + c3 + "]", d2 = function(e5, t4) {
                    var r5, n2 = e5.range[t4], a3 = Math.abs(n2 - e5.range[1 - t4]);
                    return "date" === e5.type ? n2 : "log" === e5.type ? (r5 = Math.ceil(Math.max(0, -Math.log(a3) / Math.LN10)) + 3, i("." + r5 + "g")(Math.pow(10, n2))) : (r5 = Math.floor(Math.log(Math.abs(n2)) / Math.LN10) - Math.floor(Math.log(a3) / Math.LN10) + 4, i("." + String(r5) + "g")(n2));
                  }(l3, c3), p2 = "left", g2 = "middle";
                  if (l3.fixedrange) return;
                  v2 ? (g2 = "n" === v2 ? "top" : "bottom", "right" === l3.side && (p2 = "right")) : "e" === m2 && (p2 = "right"), a2._context.showAxisRangeEntryBoxes && n.select(be).call(u.makeEditable, { gd: a2, immediate: true, background: a2._fullLayout.paper_bgcolor, text: String(d2), fill: l3.tickfont ? l3.tickfont.color : "#444", horizontalAlign: p2, verticalAlign: g2 }).on("edit", function(e5) {
                    var t4 = l3.d2r(e5);
                    void 0 !== t4 && s.call("_guiRelayout", a2, f3, t4);
                  });
                }
              }
            }
            function Ie(t4, r4) {
              if (e3._transitioningWithDuration) return false;
              var n2 = Math.max(0, Math.min(ee, he * t4 + _e)), a2 = Math.max(0, Math.min(te, pe * r4 + we)), i2 = Math.abs(n2 - _e), o2 = Math.abs(a2 - we);
              function l3() {
                Le = "", Te.r = Te.l, Te.t = Te.b, Ce.attr("d", "M0,0Z");
              }
              if (Te.l = Math.min(_e, n2), Te.r = Math.max(_e, n2), Te.t = Math.min(we, a2), Te.b = Math.max(we, a2), re.isSubplotConstrained) i2 > D || o2 > D ? (Le = "xy", i2 / ee > o2 / te ? (o2 = i2 * te / ee, we > a2 ? Te.t = we - o2 : Te.b = we + o2) : (i2 = o2 * ee / te, _e > n2 ? Te.l = _e - i2 : Te.r = _e + i2), Ce.attr("d", q(Te))) : l3();
              else if (ne.isSubplotConstrained) if (i2 > D || o2 > D) {
                Le = "xy";
                var s2 = Math.min(Te.l / ee, (te - Te.b) / te), c3 = Math.max(Te.r / ee, (te - Te.t) / te);
                Te.l = s2 * ee, Te.r = c3 * ee, Te.b = (1 - s2) * te, Te.t = (1 - c3) * te, Ce.attr("d", q(Te));
              } else l3();
              else !ie || o2 < Math.min(Math.max(0.6 * i2, O), D) ? i2 < O || !ae ? l3() : (Te.t = 0, Te.b = te, Le = "x", Ce.attr("d", function(e4, t5) {
                return "M" + (e4.l - 0.5) + "," + (t5 - D - 0.5) + "h-3v" + (2 * D + 1) + "h3ZM" + (e4.r + 0.5) + "," + (t5 - D - 0.5) + "h3v" + (2 * D + 1) + "h-3Z";
              }(Te, we))) : !ae || i2 < Math.min(0.6 * o2, D) ? (Te.l = 0, Te.r = ee, Le = "y", Ce.attr("d", function(e4, t5) {
                return "M" + (t5 - D - 0.5) + "," + (e4.t - 0.5) + "v-3h" + (2 * D + 1) + "v3ZM" + (t5 - D - 0.5) + "," + (e4.b + 0.5) + "v3h" + (2 * D + 1) + "v-3Z";
              }(Te, _e))) : (Le = "xy", Ce.attr("d", q(Te)));
              Te.w = Te.r - Te.l, Te.h = Te.b - Te.t, Le && (Oe = true), e3._dragged = Oe, j(Se, Ce, Te, ke, Ae, Me), Ee(), e3.emit("plotly_relayouting", de), Ae = true;
            }
            function Ee() {
              de = {}, "xy" !== Le && "x" !== Le || (R(X, Te.l / ee, Te.r / ee, de, re.xaxes), Ye("x", de)), "xy" !== Le && "y" !== Le || (R(K, (te - Te.b) / te, (te - Te.t) / te, de, re.yaxes), Ye("y", de));
            }
            function Re() {
              Ee(), V(e3), qe(), U(e3);
            }
            De.prepFn = function(t4, r4, n2) {
              var i2 = De.dragmode, l3 = e3._fullLayout.dragmode;
              l3 !== i2 && (De.dragmode = l3), ye(), he = e3._fullLayout._invScaleX, pe = e3._fullLayout._invScaleY, oe || (ge ? t4.shiftKey ? "pan" === l3 ? l3 = "zoom" : y(l3) || (l3 = "pan") : t4.ctrlKey && (l3 = "pan") : l3 = "pan"), x(l3) ? De.minDrag = 1 : De.minDrag = void 0, y(l3) ? (De.xaxes = X, De.yaxes = K, k(t4, r4, n2, De, l3)) : (De.clickFn = ze, y(i2) && Pe(), oe || ("zoom" === l3 ? (De.moveFn = Ie, De.doneFn = Re, De.minDrag = 1, function(t5, r5, n3) {
                var i3 = be.getBoundingClientRect();
                _e = r5 - i3.left, we = n3 - i3.top, e3._fullLayout._calcInverseTransform(e3);
                var l4 = a.apply3DTransform(e3._fullLayout._invTransform)(_e, we);
                _e = l4[0], we = l4[1], Te = { l: _e, r: _e, w: 0, t: we, b: we, h: 0 }, Me = e3._hmpixcount ? e3._hmlumcount / e3._hmpixcount : o(e3._fullLayout.plot_bgcolor).getLuminance(), Ae = false, Le = "xy", Oe = false, Se = H(ve, Me, Q, $, ke = "M0,0H" + ee + "V" + te + "H0V0"), Ce = B(ve, Q, $);
              }(0, r4, n2)) : "pan" === l3 && (De.moveFn = je, De.doneFn = qe))), e3._fullLayout._redrag = function() {
                var t5 = e3._dragdata;
                if (t5 && t5.element === be) {
                  var r5 = e3._fullLayout.dragmode;
                  y(r5) || (ye(), Ge([0, 0, ee, te]), De.moveFn(t5.dx, t5.dy));
                }
              };
            }, g.init(De);
            var Ne = [0, 0, ee, te], Fe = null, He = C.REDRAWDELAY, Be = t3.mainplot ? e3._fullLayout._plots[t3.mainplot] : t3;
            function je(t4, r4) {
              if (t4 *= he, r4 *= pe, !e3._transitioningWithDuration) {
                if (e3._fullLayout._replotting = true, "ew" === ae || "ns" === ie) {
                  var n2 = ae ? -t4 : 0, a2 = ie ? -r4 : 0;
                  if (ne.isSubplotConstrained) {
                    if (ae && ie) {
                      var i2 = (t4 / ee - r4 / te) / 2;
                      n2 = -(t4 = i2 * ee), a2 = -(r4 = -i2 * te);
                    }
                    ie ? n2 = -a2 * ee / te : a2 = -n2 * te / ee;
                  }
                  return ae && (N(X, t4), Ye("x")), ie && (N(K, r4), Ye("y")), Ge([n2, a2, ee, te]), Ve(), void e3.emit("plotly_relayouting", de);
                }
                var o2, l3, s2 = "w" === ae == ("n" === ie) ? 1 : -1;
                if (ae && ie && (re.isSubplotConstrained || ne.isSubplotConstrained)) {
                  var c3 = (t4 / ee + s2 * r4 / te) / 2;
                  t4 = c3 * ee, r4 = s2 * c3 * te;
                }
                if ("w" === ae ? t4 = h2(X, 0, t4) : "e" === ae ? t4 = h2(X, 1, -t4) : ae || (t4 = 0), "n" === ie ? r4 = h2(K, 1, r4) : "s" === ie ? r4 = h2(K, 0, -r4) : ie || (r4 = 0), o2 = "w" === ae ? t4 : 0, l3 = "n" === ie ? r4 : 0, re.isSubplotConstrained && !ne.isSubplotConstrained || ne.isSubplotConstrained && ae && ie && s2 > 0) {
                  var u2;
                  if (ne.isSubplotConstrained || !ae && 1 === ie.length) {
                    for (u2 = 0; u2 < X.length; u2++) X[u2].range = X[u2]._r.slice(), S(X[u2], 1 - r4 / te);
                    o2 = (t4 = r4 * ee / te) / 2;
                  }
                  if (ne.isSubplotConstrained || !ie && 1 === ae.length) {
                    for (u2 = 0; u2 < K.length; u2++) K[u2].range = K[u2]._r.slice(), S(K[u2], 1 - t4 / ee);
                    l3 = (r4 = t4 * te / ee) / 2;
                  }
                }
                ne.isSubplotConstrained && ie || Ye("x"), ne.isSubplotConstrained && ae || Ye("y");
                var f3 = ee - t4, d2 = te - r4;
                !ne.isSubplotConstrained || ae && ie || (ae ? (l3 = o2 ? 0 : t4 * te / ee, d2 = f3 * te / ee) : (o2 = l3 ? 0 : r4 * ee / te, f3 = d2 * ee / te)), Ge([o2, l3, f3, d2]), Ve(), e3.emit("plotly_relayouting", de);
              }
              function h2(e4, t5, r5) {
                for (var n3, a3, i3 = 1 - t5, o3 = 0; o3 < e4.length; o3++) {
                  var l4 = e4[o3];
                  if (!l4.fixedrange) {
                    n3 = l4, a3 = l4._rl[i3] + (l4._rl[t5] - l4._rl[i3]) / F(r5 / l4._length);
                    var s3 = l4.l2r(a3);
                    false !== s3 && void 0 !== s3 && (l4.range[t5] = s3);
                  }
                }
                return n3._length * (n3._rl[t5] - a3) / (n3._rl[t5] - n3._rl[i3]);
              }
            }
            function Ye(e4, t4) {
              for (var r4 = ne.isSubplotConstrained ? { x: K, y: X }[e4] : ne[e4 + "axes"], n2 = ne.isSubplotConstrained ? { x: X, y: K }[e4] : [], a2 = 0; a2 < r4.length; a2++) {
                var i2 = r4[a2], o2 = i2._id, l3 = ne.xLinks[o2] || ne.yLinks[o2], s2 = n2[0] || Y2[l3] || J[l3];
                s2 && (t4 ? (t4[i2._name + ".range[0]"] = t4[s2._name + ".range[0]"], t4[i2._name + ".range[1]"] = t4[s2._name + ".range[1]"]) : i2.range = s2.range.slice());
              }
            }
            function Ve() {
              var r4, n2 = [];
              function a2(e4) {
                for (r4 = 0; r4 < e4.length; r4++) e4[r4].fixedrange || n2.push(e4[r4]._id);
              }
              function i2(e4, t4) {
                for (r4 = 0; r4 < e4.length; r4++) {
                  var a3 = e4[r4], i3 = a3[t4];
                  a3.fixedrange || "sync" !== i3.tickmode || n2.push(i3._id);
                }
              }
              for (le && (a2(X), a2(re.xaxes), a2(ne.xaxes), i2(t3.overlays, "xaxis")), se && (a2(K), a2(re.yaxes), a2(ne.yaxes), i2(t3.overlays, "yaxis")), de = {}, r4 = 0; r4 < n2.length; r4++) {
                var o2 = n2[r4], l3 = M(e3, o2);
                p.drawOne(e3, l3, { skipTitle: true }), de[l3._name + ".range[0]"] = l3.range[0], de[l3._name + ".range[1]"] = l3.range[1];
              }
              p.redrawComponents(e3, n2);
            }
            function Ue() {
              if (!e3._transitioningWithDuration) {
                var t4 = e3._context.doubleClick, r4 = [];
                ae && (r4 = r4.concat(X)), ie && (r4 = r4.concat(K)), ne.xaxes && (r4 = r4.concat(ne.xaxes)), ne.yaxes && (r4 = r4.concat(ne.yaxes));
                var n2, a2, i2 = {};
                if ("reset+autosize" === t4) for (t4 = "autosize", a2 = 0; a2 < r4.length; a2++) {
                  var o2 = (n2 = r4[a2])._rangeInitial0, l3 = n2._rangeInitial1, c3 = void 0 !== o2 || void 0 !== l3;
                  if (c3 && (void 0 !== o2 && o2 !== n2.range[0] || void 0 !== l3 && l3 !== n2.range[1]) || !c3 && true !== n2.autorange) {
                    t4 = "reset";
                    break;
                  }
                }
                if ("autosize" === t4) for (a2 = 0; a2 < r4.length; a2++) (n2 = r4[a2]).fixedrange || (i2[n2._name + ".autorange"] = true);
                else if ("reset" === t4) {
                  for ((ae || re.isSubplotConstrained) && (r4 = r4.concat(re.xaxes)), ie && !re.isSubplotConstrained && (r4 = r4.concat(re.yaxes)), re.isSubplotConstrained && (ae ? ie || (r4 = r4.concat(K)) : r4 = r4.concat(X)), a2 = 0; a2 < r4.length; a2++) if (!(n2 = r4[a2]).fixedrange) {
                    var u2 = n2._name, f3 = n2._autorangeInitial;
                    void 0 === n2._rangeInitial0 && void 0 === n2._rangeInitial1 ? i2[u2 + ".autorange"] = true : void 0 === n2._rangeInitial0 ? (i2[u2 + ".autorange"] = f3, i2[u2 + ".range"] = [null, n2._rangeInitial1]) : void 0 === n2._rangeInitial1 ? (i2[u2 + ".range"] = [n2._rangeInitial0, null], i2[u2 + ".autorange"] = f3) : i2[u2 + ".range"] = [n2._rangeInitial0, n2._rangeInitial1];
                  }
                }
                e3.emit("plotly_doubleclick", null), s.call("_guiRelayout", e3, i2);
              }
            }
            function qe() {
              Ge([0, 0, ee, te]), a.syncOrAsync([T.previousPromises, function() {
                e3._fullLayout._replotting = false, s.call("_guiRelayout", e3, de);
              }], e3);
            }
            function Ge(t4) {
              var r4, n2, i2, o2, l3 = e3._fullLayout, c3 = l3._plots, u2 = l3._subplots.cartesian;
              if (ue && s.subplotsRegistry.splom.drag(e3), ce) {
                for (r4 = 0; r4 < u2.length; r4++) if (i2 = (n2 = c3[u2[r4]]).xaxis, o2 = n2.yaxis, n2._scene) {
                  i2.limitRange && i2.limitRange(), o2.limitRange && o2.limitRange();
                  var f3 = a.simpleMap(i2.range, i2.r2l), h2 = a.simpleMap(o2.range, o2.r2l);
                  n2._scene.update({ range: [f3[0], h2[0], f3[1], h2[1]] });
                }
              }
              if ((ue || ce) && (_(e3), w(e3)), fe) {
                var p2 = t4[2] / P2._length, g2 = t4[3] / z2._length;
                for (r4 = 0; r4 < u2.length; r4++) {
                  i2 = (n2 = c3[u2[r4]]).xaxis, o2 = n2.yaxis;
                  var y2, x2, b2, T2, M2 = (le || ne.isSubplotConstrained) && !i2.fixedrange && Y2[i2._id], k2 = (se || ne.isSubplotConstrained) && !o2.fixedrange && J[o2._id];
                  if (M2 ? (y2 = p2, b2 = m2 || ne.isSubplotConstrained ? t4[0] : Je(i2, y2)) : ne.xaHash[i2._id] ? (y2 = p2, b2 = t4[0] * i2._length / P2._length) : ne.yaHash[i2._id] ? (y2 = g2, b2 = "ns" === ie ? -t4[1] * i2._length / z2._length : Je(i2, y2, { n: "top", s: "bottom" }[ie])) : b2 = We(i2, y2 = Ze(i2, p2, g2)), y2 > 1 && (void 0 !== i2.maxallowed && le === (i2.range[0] < i2.range[1] ? "e" : "w") || void 0 !== i2.minallowed && le === (i2.range[0] < i2.range[1] ? "w" : "e")) && (y2 = 1, b2 = 0), k2 ? (x2 = g2, T2 = v2 || ne.isSubplotConstrained ? t4[1] : Je(o2, x2)) : ne.yaHash[o2._id] ? (x2 = g2, T2 = t4[1] * o2._length / z2._length) : ne.xaHash[o2._id] ? (x2 = p2, T2 = "ew" === ae ? -t4[0] * o2._length / P2._length : Je(o2, x2, { e: "right", w: "left" }[ae])) : T2 = We(o2, x2 = Ze(o2, p2, g2)), x2 > 1 && (void 0 !== o2.maxallowed && se === (o2.range[0] < o2.range[1] ? "n" : "s") || void 0 !== o2.minallowed && se === (o2.range[0] < o2.range[1] ? "s" : "n")) && (x2 = 1, T2 = 0), y2 || x2) {
                    y2 || (y2 = 1), x2 || (x2 = 1);
                    var A2 = i2._offset - b2 / y2, L2 = o2._offset - T2 / x2;
                    n2.clipRect.call(d.setTranslate, b2, T2).call(d.setScale, y2, x2), n2.plot.call(d.setTranslate, A2, L2).call(d.setScale, 1 / y2, 1 / x2), y2 === n2.xScaleFactor && x2 === n2.yScaleFactor || (d.setPointGroupScale(n2.zoomScalePts, y2, x2), d.setTextPointsScale(n2.zoomScaleTxt, y2, x2)), d.hideOutsideRangePoints(n2.clipOnAxisFalseTraces, n2), n2.xScaleFactor = y2, n2.yScaleFactor = x2;
                  }
                }
              }
            }
            function Ze(e4, t4, r4) {
              return e4.fixedrange ? 0 : le && re.xaHash[e4._id] ? t4 : se && (re.isSubplotConstrained ? re.xaHash : re.yaHash)[e4._id] ? r4 : 0;
            }
            function We(e4, t4) {
              return t4 ? (e4.range = e4._r.slice(), S(e4, t4), Je(e4, t4)) : 0;
            }
            function Je(e4, t4, r4) {
              return e4._length * (1 - t4) * b[r4 || e4.constraintoward || "middle"];
            }
            return v2.length * m2.length != 1 && Z(be, function(t4) {
              if (e3._context._scrollZoom.cartesian || e3._fullLayout._enablescrollzoom) {
                if (Pe(), e3._transitioningWithDuration) return t4.preventDefault(), void t4.stopPropagation();
                ye(), clearTimeout(Fe);
                var r4 = -t4.deltaY;
                if (isFinite(r4) || (r4 = t4.wheelDelta / 10), isFinite(r4)) {
                  var n2, i2 = Math.exp(-Math.min(Math.max(r4, -20), 20) / 200), o2 = Be.draglayer.select(".nsewdrag").node().getBoundingClientRect(), l3 = (t4.clientX - o2.left) / o2.width, s2 = (o2.bottom - t4.clientY) / o2.height;
                  if (le) {
                    for (m2 || (l3 = 0.5), n2 = 0; n2 < X.length; n2++) c3(X[n2], l3, i2);
                    Ye("x"), Ne[2] *= i2, Ne[0] += Ne[2] * l3 * (1 / i2 - 1);
                  }
                  if (se) {
                    for (v2 || (s2 = 0.5), n2 = 0; n2 < K.length; n2++) c3(K[n2], s2, i2);
                    Ye("y"), Ne[3] *= i2, Ne[1] += Ne[3] * (1 - s2) * (1 / i2 - 1);
                  }
                  Ge(Ne), Ve(), e3.emit("plotly_relayouting", de), Fe = setTimeout(function() {
                    e3._fullLayout && (Ne = [0, 0, ee, te], qe());
                  }, He), t4.preventDefault();
                } else a.log("Did not find wheel motion attributes: ", t4);
              }
              function c3(e4, t5, r5) {
                if (!e4.fixedrange) {
                  var n3 = a.simpleMap(e4.range, e4.r2l), i3 = n3[0] + (n3[1] - n3[0]) * t5;
                  e4.range = n3.map(function(t6) {
                    return e4.l2r(i3 + (t6 - i3) * r5);
                  });
                }
              }
            }), be;
          }, makeDragger: z, makeRectDragger: I, makeZoombox: H, makeCorners: B, updateZoombox: j, xyCorners: q, transitionZoombox: Y, removeZoombox: V, showDoubleClickNotifier: U, attachWheelEventHandler: Z };
        }, 5284: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2141), i = r2(4751), o = r2(7983), l = r2(1680).makeDragBox, s = r2(4826).DRAGGERSIZE;
          t2.initInteractions = function(e3) {
            var r3 = e3._fullLayout;
            if (e3._context.staticPlot) n.select(e3).selectAll(".drag").remove();
            else if (r3._has("cartesian") || r3._has("splom")) {
              Object.keys(r3._plots || {}).sort(function(e4, t3) {
                if ((r3._plots[e4].mainplot && true) === (r3._plots[t3].mainplot && true)) {
                  var n2 = e4.split("y"), a2 = t3.split("y");
                  return n2[0] === a2[0] ? Number(n2[1] || 1) - Number(a2[1] || 1) : Number(n2[0] || 1) - Number(a2[0] || 1);
                }
                return r3._plots[e4].mainplot ? 1 : -1;
              }).forEach(function(t3) {
                var n2 = r3._plots[t3], o3 = n2.xaxis, c = n2.yaxis;
                if (!n2.mainplot) {
                  var u = l(e3, n2, o3._offset, c._offset, o3._length, c._length, "ns", "ew");
                  u.onmousemove = function(r4) {
                    e3._fullLayout._rehover = function() {
                      e3._fullLayout._hoversubplot === t3 && e3._fullLayout._plots[t3] && a.hover(e3, r4, t3);
                    }, a.hover(e3, r4, t3), e3._fullLayout._lasthover = u, e3._fullLayout._hoversubplot = t3;
                  }, u.onmouseout = function(t4) {
                    e3._dragging || (e3._fullLayout._hoversubplot = null, i.unhover(e3, t4));
                  }, e3._context.showAxisDragHandles && (l(e3, n2, o3._offset - s, c._offset - s, s, s, "n", "w"), l(e3, n2, o3._offset + o3._length, c._offset - s, s, s, "n", "e"), l(e3, n2, o3._offset - s, c._offset + c._length, s, s, "s", "w"), l(e3, n2, o3._offset + o3._length, c._offset + c._length, s, s, "s", "e"));
                }
                if (e3._context.showAxisDragHandles) {
                  if (t3 === o3._mainSubplot) {
                    var f = o3._mainLinePosition;
                    "top" === o3.side && (f -= s), l(e3, n2, o3._offset + 0.1 * o3._length, f, 0.8 * o3._length, s, "", "ew"), l(e3, n2, o3._offset, f, 0.1 * o3._length, s, "", "w"), l(e3, n2, o3._offset + 0.9 * o3._length, f, 0.1 * o3._length, s, "", "e");
                  }
                  if (t3 === c._mainSubplot) {
                    var d = c._mainLinePosition;
                    "right" !== c.side && (d -= s), l(e3, n2, d, c._offset + 0.1 * c._length, s, 0.8 * c._length, "ns", ""), l(e3, n2, d, c._offset + 0.9 * c._length, s, 0.1 * c._length, "s", ""), l(e3, n2, d, c._offset, s, 0.1 * c._length, "n", "");
                  }
                }
              });
              var o2 = r3._hoverlayer.node();
              o2.onmousemove = function(t3) {
                t3.target = e3._fullLayout._lasthover, a.hover(e3, t3, r3._hoversubplot);
              }, o2.onclick = function(t3) {
                t3.target = e3._fullLayout._lasthover, a.click(e3, t3);
              }, o2.onmousedown = function(t3) {
                e3._fullLayout._lasthover.onmousedown(t3);
              }, t2.updateFx(e3);
            }
          }, t2.updateFx = function(e3) {
            var t3 = e3._fullLayout, r3 = "pan" === t3.dragmode ? "move" : "crosshair";
            o(t3._draggers, r3);
          };
        }, 706: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809), i = r2(5975);
          e2.exports = function(e3) {
            return function(t3, r3) {
              var o = t3[e3];
              if (Array.isArray(o)) for (var l = n.subplotsRegistry.cartesian, s = l.idRegex, c = r3._subplots, u = c.xaxis, f = c.yaxis, d = c.cartesian, h = r3._has("cartesian") || r3._has("gl2d"), p = 0; p < o.length; p++) {
                var v = o[p];
                if (a.isPlainObject(v)) {
                  var g = i.cleanId(v.xref, "x", false), m = i.cleanId(v.yref, "y", false), y = s.x.test(g), x = s.y.test(m);
                  if (y || x) {
                    h || a.pushUnique(r3._basePlotModules, l);
                    var b = false;
                    y && -1 === u.indexOf(g) && (u.push(g), b = true), x && -1 === f.indexOf(m) && (f.push(m), b = true), b && y && x && d.push(g + m);
                  }
                }
              }
            };
          };
        }, 84: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4809), o = r2(4122), l = r2(2203), s = r2(4173).eV, c = r2(5975), u = r2(4826), f = r2(2972), d = i.ensureSingle;
          function h(e3, t3, r3) {
            return i.ensureSingle(e3, t3, r3, function(e4) {
              e4.datum(r3);
            });
          }
          var p = u.zindexSeparator;
          function v(e3, t3, r3, i2, o2) {
            for (var c2, f2, d2, h2 = u.traceLayerClasses, p2 = e3._fullLayout, v2 = p2._zindices, g2 = p2._modules, m2 = [], y2 = [], x = 0; x < v2.length; x++) for (var b = v2[x], _ = 0; _ < g2.length; _++) {
              var w = (c2 = g2[_]).name, T = a.modules[w].categories;
              if (T.svg) {
                var M = c2.layerName || w + "layer", k = M + (x ? Number(x) + 1 : ""), A = c2.plot;
                d2 = (f2 = s(r3, A, b))[0], r3 = f2[1], d2.length && m2.push({ i: h2.indexOf(M), zindex: x, className: k, plotMethod: A, cdModule: d2 }), T.zoomScale && y2.push("." + k);
              }
            }
            m2.sort(function(e4, t4) {
              return (e4.zindex || 0) - (t4.zindex || 0) || e4.i - t4.i;
            });
            var L = t3.plot.selectAll("g.mlayer").data(m2, function(e4) {
              return e4.className;
            });
            if (L.enter().append("g").attr("class", function(e4) {
              return e4.className;
            }).classed("mlayer", true).classed("rangeplot", t3.isRangePlot), L.exit().remove(), L.order(), L.each(function(r4) {
              var a2 = n.select(this), s2 = r4.className;
              r4.plotMethod(e3, t3, r4.cdModule, a2, i2, o2), -1 === u.clipOnAxisFalseQuery.indexOf("." + s2) && l.setClipUrl(a2, t3.layerClipId, e3);
            }), p2._has("scattergl") && (c2 = a.getModule("scattergl"), d2 = s(r3, c2)[0], c2.plot(e3, t3, d2)), !e3._context.staticPlot && (t3._hasClipOnAxisFalse && (t3.clipOnAxisFalseTraces = t3.plot.selectAll(u.clipOnAxisFalseQuery.join(",")).selectAll(".trace")), y2.length)) {
              var S = t3.plot.selectAll(y2.join(",")).selectAll(".trace");
              t3.zoomScalePts = S.selectAll("path.point"), t3.zoomScaleTxt = S.selectAll(".textpoint");
            }
          }
          function g(e3, t3) {
            var r3 = e3._fullLayout, n2 = t3.plotgroup, a2 = t3.id, i2 = -1 !== a2.indexOf(p), o2 = u.layerValue2layerClass[t3.xaxis.layer], l2 = u.layerValue2layerClass[t3.yaxis.layer], s2 = r3._hasOnlyLargeSploms;
            if (!t3.mainplot || r3._zindices.length > 1) if (s2) t3.xlines = d(n2, "path", "xlines-above"), t3.ylines = d(n2, "path", "ylines-above"), t3.xaxislayer = d(n2, "g", "xaxislayer-above"), t3.yaxislayer = d(n2, "g", "yaxislayer-above");
            else {
              if (!i2) {
                var f2 = d(n2, "g", "layer-subplot");
                t3.shapelayer = d(f2, "g", "shapelayer"), t3.imagelayer = d(f2, "g", "imagelayer"), t3.minorGridlayer = d(n2, "g", "minor-gridlayer"), t3.gridlayer = d(n2, "g", "gridlayer"), t3.zerolinelayer = d(n2, "g", "zerolinelayer");
                var v2 = d(n2, "g", "layer-between");
                t3.shapelayerBetween = d(v2, "g", "shapelayer"), t3.imagelayerBetween = d(v2, "g", "imagelayer"), d(n2, "path", "xlines-below"), d(n2, "path", "ylines-below"), t3.overlinesBelow = d(n2, "g", "overlines-below"), d(n2, "g", "xaxislayer-below"), d(n2, "g", "yaxislayer-below"), t3.overaxesBelow = d(n2, "g", "overaxes-below");
              }
              t3.overplot = d(n2, "g", "overplot"), t3.plot = d(t3.overplot, "g", a2), i2 || (t3.xlines = d(n2, "path", "xlines-above"), t3.ylines = d(n2, "path", "ylines-above"), t3.overlinesAbove = d(n2, "g", "overlines-above"), d(n2, "g", "xaxislayer-above"), d(n2, "g", "yaxislayer-above"), t3.overaxesAbove = d(n2, "g", "overaxes-above"), t3.xlines = n2.select(".xlines-" + o2), t3.ylines = n2.select(".ylines-" + l2), t3.xaxislayer = n2.select(".xaxislayer-" + o2), t3.yaxislayer = n2.select(".yaxislayer-" + l2));
            }
            else {
              var g2 = t3.mainplotinfo, m2 = g2.plotgroup, y2 = a2 + "-x", x = a2 + "-y";
              t3.minorGridlayer = g2.minorGridlayer, t3.gridlayer = g2.gridlayer, t3.zerolinelayer = g2.zerolinelayer, d(g2.overlinesBelow, "path", y2), d(g2.overlinesBelow, "path", x), d(g2.overaxesBelow, "g", y2), d(g2.overaxesBelow, "g", x), t3.plot = d(g2.overplot, "g", a2), d(g2.overlinesAbove, "path", y2), d(g2.overlinesAbove, "path", x), d(g2.overaxesAbove, "g", y2), d(g2.overaxesAbove, "g", x), t3.xlines = m2.select(".overlines-" + o2).select("." + y2), t3.ylines = m2.select(".overlines-" + l2).select("." + x), t3.xaxislayer = m2.select(".overaxes-" + o2).select("." + y2), t3.yaxislayer = m2.select(".overaxes-" + l2).select("." + x);
            }
            i2 || (s2 || (h(t3.minorGridlayer, "g", t3.xaxis._id), h(t3.minorGridlayer, "g", t3.yaxis._id), t3.minorGridlayer.selectAll("g").map(function(e4) {
              return e4[0];
            }).sort(c.idSort), h(t3.gridlayer, "g", t3.xaxis._id), h(t3.gridlayer, "g", t3.yaxis._id), t3.gridlayer.selectAll("g").map(function(e4) {
              return e4[0];
            }).sort(c.idSort)), t3.xlines.style("fill", "none").classed("crisp", true), t3.ylines.style("fill", "none").classed("crisp", true));
          }
          function m(e3, t3) {
            if (e3) {
              var r3 = {};
              for (var a2 in e3.each(function(e4) {
                var a3 = e4[0];
                n.select(this).remove(), y(a3, t3), r3[a3] = true;
              }), t3._plots) for (var i2 = t3._plots[a2].overlays || [], o2 = 0; o2 < i2.length; o2++) {
                var l2 = i2[o2];
                r3[l2.id] && l2.plot.selectAll(".trace").remove();
              }
            }
          }
          function y(e3, t3) {
            t3._draggers.selectAll("g." + e3).remove(), t3._defs.select("#clip" + t3._uid + e3 + "plot").remove();
          }
          t2.name = "cartesian", t2.attr = ["xaxis", "yaxis"], t2.idRoot = ["x", "y"], t2.idRegex = u.idRegex, t2.attrRegex = u.attrRegex, t2.attributes = r2(5126), t2.layoutAttributes = r2(5829), t2.supplyLayoutDefaults = r2(4098), t2.transitionAxes = r2(4982), t2.finalizeSubplots = function(e3, t3) {
            var r3, n2, a2, o2 = t3._subplots, l2 = o2.xaxis, s2 = o2.yaxis, f2 = o2.cartesian, d2 = f2.concat(o2.gl2d || []), h2 = {}, p2 = {};
            for (r3 = 0; r3 < d2.length; r3++) {
              var v2 = d2[r3].split("y");
              h2[v2[0]] = 1, p2["y" + v2[1]] = 1;
            }
            for (r3 = 0; r3 < l2.length; r3++) h2[n2 = l2[r3]] || (a2 = (e3[c.id2name(n2)] || {}).anchor, u.idRegex.y.test(a2) || (a2 = "y"), f2.push(n2 + a2), d2.push(n2 + a2), p2[a2] || (p2[a2] = 1, i.pushUnique(s2, a2)));
            for (r3 = 0; r3 < s2.length; r3++) p2[a2 = s2[r3]] || (n2 = (e3[c.id2name(a2)] || {}).anchor, u.idRegex.x.test(n2) || (n2 = "x"), f2.push(n2 + a2), d2.push(n2 + a2), h2[n2] || (h2[n2] = 1, i.pushUnique(l2, n2)));
            if (!d2.length) {
              for (var g2 in n2 = "", a2 = "", e3) u.attrRegex.test(g2) && ("x" === g2.charAt(0) ? (!n2 || +g2.substr(5) < +n2.substr(5)) && (n2 = g2) : (!a2 || +g2.substr(5) < +a2.substr(5)) && (a2 = g2));
              n2 = n2 ? c.name2id(n2) : "x", a2 = a2 ? c.name2id(a2) : "y", l2.push(n2), s2.push(a2), f2.push(n2 + a2);
            }
          }, t2.plot = function(e3, t3, r3, n2) {
            var a2, o2 = e3._fullLayout, l2 = o2._subplots.cartesian, s2 = e3.calcdata;
            if (!Array.isArray(t3)) for (t3 = [], a2 = 0; a2 < s2.length; a2++) t3.push(a2);
            for (var c2 = o2._zindices, u2 = 0; u2 < c2.length; u2++) {
              var f2 = c2[u2];
              for (a2 = 0; a2 < l2.length; a2++) {
                var d2 = l2[a2], h2 = o2._plots[d2];
                if (u2 > 0) {
                  var g2 = h2.id;
                  if (-1 !== g2.indexOf(p)) continue;
                  g2 += p + (u2 + 1), h2 = i.extendFlat({}, h2, { id: g2, plot: o2._cartesianlayer.selectAll(".subplot").select("." + g2) });
                }
                for (var m2, y2 = [], x = 0; x < s2.length; x++) {
                  var b = s2[x], _ = b[0].trace;
                  f2 === (_.zorder || 0) && _.xaxis + _.yaxis === d2 && ((-1 !== t3.indexOf(_.index) || _.carpet) && (m2 && m2[0].trace.xaxis + m2[0].trace.yaxis === d2 && -1 !== ["tonextx", "tonexty", "tonext"].indexOf(_.fill) && -1 === y2.indexOf(m2) && y2.push(m2), y2.push(b)), m2 = b);
                }
                v(e3, h2, y2, r3, n2);
              }
            }
          }, t2.clean = function(e3, t3, r3, n2) {
            var a2, i2, o2, l2 = n2._plots || {}, s2 = t3._plots || {}, u2 = n2._subplots || {};
            if (n2._hasOnlyLargeSploms && !t3._hasOnlyLargeSploms) for (o2 in l2) (a2 = l2[o2]).plotgroup && a2.plotgroup.remove();
            var f2 = n2._has && n2._has("gl"), d2 = t3._has && t3._has("gl");
            if (f2 && !d2) for (o2 in l2) (a2 = l2[o2])._scene && a2._scene.destroy();
            if (u2.xaxis && u2.yaxis) {
              var h2 = c.listIds({ _fullLayout: n2 });
              for (i2 = 0; i2 < h2.length; i2++) {
                var v2 = h2[i2];
                t3[c.id2name(v2)] || n2._infolayer.selectAll(".g-" + v2 + "title").remove();
              }
            }
            var g2 = n2._has && n2._has("cartesian"), x = t3._has && t3._has("cartesian");
            if (g2 && !x) m(n2._cartesianlayer.selectAll(".subplot"), n2), n2._defs.selectAll(".axesclip").remove(), delete n2._axisConstraintGroups, delete n2._axisMatchGroups;
            else if (u2.cartesian) for (i2 = 0; i2 < u2.cartesian.length; i2++) {
              var b = u2.cartesian[i2];
              if (-1 === b.indexOf(p) && !s2[b]) {
                var _ = "." + b + ",." + b + "-x,." + b + "-y";
                n2._cartesianlayer.selectAll(_).remove(), y(b, n2);
              }
            }
          }, t2.drawFramework = function(e3) {
            var t3, r3 = e3._fullLayout, a2 = e3.calcdata, o2 = {};
            for (t3 = 0; t3 < a2.length; t3++) {
              var l2 = a2[t3][0], s2 = l2.trace.zorder || 0;
              o2[s2] || (o2[s2] = []), o2[s2].push(l2);
            }
            var c2 = Object.keys(o2).map(Number).sort(i.sorterAsc);
            c2.length || (c2 = [0]), r3._zindices = c2;
            var u2 = function(e4) {
              var t4, r4, n2, a3, i2, o3, l3 = e4._fullLayout, s3 = l3._zindices.length, c3 = l3._subplots.cartesian, u3 = c3.length, f3 = [], d2 = [];
              for (t4 = 0; t4 < u3; t4++) {
                n2 = c3[t4], i2 = (a3 = l3._plots[n2]).xaxis, o3 = a3.yaxis;
                var h3 = i2._mainAxis, v3 = o3._mainAxis, g2 = h3._id + v3._id, m2 = l3._plots[g2];
                a3.overlays = [], g2 !== n2 && m2 ? (a3.mainplot = g2, a3.mainplotinfo = m2, d2.push(n2)) : (a3.mainplot = void 0, a3.mainplotinfo = void 0, f3.push(n2));
              }
              for (t4 = 0; t4 < d2.length; t4++) n2 = d2[t4], (a3 = l3._plots[n2]).mainplotinfo.overlays.push(a3);
              var y3 = f3.concat(d2), x2 = [];
              for (t4 = 0; t4 < u3; t4++) {
                n2 = y3[t4], i2 = (a3 = l3._plots[n2]).xaxis, o3 = a3.yaxis;
                for (var b = [], _ = 1; _ <= s3; _++) {
                  var w = "";
                  for (_ > 1 && (w += p + _), b.push(n2 + w), r4 = 0; r4 < a3.overlays.length; r4++) b.push(a3.overlays[r4].id + w);
                }
                b = b.concat([i2.layer, o3.layer, i2.overlaying || "", o3.overlaying || ""]), x2.push(b);
              }
              return x2;
            }(e3), f2 = u2.length, h2 = [];
            for (t3 = 0; t3 < f2; t3++) h2[t3] = u2[t3].slice();
            for (var v2 = 1; v2 < c2.length; v2++) {
              var y2 = [];
              for (t3 = 0; t3 < f2; t3++) y2[t3] = u2[t3].slice(), y2[t3][0] += p + (v2 + 1);
              h2 = h2.concat(y2);
            }
            var x = r3._cartesianlayer.selectAll(".subplot").data(h2, String);
            x.enter().append("g").attr("class", function(e4) {
              return "subplot " + e4[0];
            }), x.order(), x.exit().call(m, r3), x.each(function(t4) {
              var a3 = t4[0], o3 = a3.indexOf(p), l3 = -1 !== o3, s3 = l3 ? a3.slice(0, o3) : a3, c3 = r3._plots[a3];
              c3 || (c3 = i.extendFlat({}, r3._plots[s3])) && (c3.id = a3, r3._plots[a3] = c3, r3._subplots.cartesian.push(a3)), c3 && (c3.plotgroup = n.select(this), g(e3, c3), l3 || (c3.draglayer = d(r3._draggers, "g", a3)));
            });
          }, t2.rangePlot = function(e3, t3, r3) {
            g(e3, t3), v(e3, t3, r3), o.style(e3);
          }, t2.toSVG = function(e3) {
            var t3 = e3._fullLayout._glimages, r3 = n.select(e3).selectAll(".svg-container");
            r3.filter(function(e4, t4) {
              return t4 === r3.size() - 1;
            }).selectAll(".gl-canvas-context, .gl-canvas-focus").each(function() {
              var e4 = this, r4 = e4.toDataURL("image/png");
              t3.append("svg:image").attr({ xmlns: f.svg, "xlink:href": r4, preserveAspectRatio: "none", x: 0, y: 0, width: e4.style.width, height: e4.style.height });
            });
          }, t2.updateFx = r2(5284).updateFx;
        }, 5829: function(e2, t2, r2) {
          var n = r2(337), a = r2(229), i = r2(4850).T, o = r2(3049).extendFlat, l = r2(8032).templatedArray, s = r2(712).descriptionWithDates, c = r2(3821).ONEDAY, u = r2(4826), f = u.HOUR_PATTERN, d = u.WEEKDAY_PATTERN, h = { valType: "enumerated", values: ["auto", "linear", "array"], editType: "ticks", impliedEdits: { tick0: void 0, dtick: void 0 } }, p = o({}, h, { values: h.values.slice().concat(["sync"]) });
          function v(e3) {
            return { valType: "integer", min: 0, dflt: e3 ? 5 : 0, editType: "ticks" };
          }
          var g = { valType: "any", editType: "ticks", impliedEdits: { tickmode: "linear" } }, m = { valType: "any", editType: "ticks", impliedEdits: { tickmode: "linear" } }, y = { valType: "data_array", editType: "ticks" }, x = { valType: "enumerated", values: ["outside", "inside", ""], editType: "ticks" };
          function b(e3) {
            var t3 = { valType: "number", min: 0, editType: "ticks" };
            return e3 || (t3.dflt = 5), t3;
          }
          function _(e3) {
            var t3 = { valType: "number", min: 0, editType: "ticks" };
            return e3 || (t3.dflt = 1), t3;
          }
          var w = { valType: "color", dflt: a.defaultLine, editType: "ticks" }, T = { valType: "color", dflt: a.lightLine, editType: "ticks" };
          function M(e3) {
            var t3 = { valType: "number", min: 0, editType: "ticks" };
            return e3 || (t3.dflt = 1), t3;
          }
          var k = o({}, i, { editType: "ticks" }), A = { valType: "boolean", editType: "ticks" };
          e2.exports = { visible: { valType: "boolean", editType: "plot" }, color: { valType: "color", dflt: a.defaultLine, editType: "ticks" }, title: { text: { valType: "string", editType: "ticks" }, font: n({ editType: "ticks" }), standoff: { valType: "number", min: 0, editType: "ticks" }, editType: "ticks" }, type: { valType: "enumerated", values: ["-", "linear", "log", "date", "category", "multicategory"], dflt: "-", editType: "calc", _noTemplating: true }, autotypenumbers: { valType: "enumerated", values: ["convert types", "strict"], dflt: "convert types", editType: "calc" }, autorange: { valType: "enumerated", values: [true, false, "reversed", "min reversed", "max reversed", "min", "max"], dflt: true, editType: "axrange", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, autorangeoptions: { minallowed: { valType: "any", editType: "plot", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, maxallowed: { valType: "any", editType: "plot", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, clipmin: { valType: "any", editType: "plot", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, clipmax: { valType: "any", editType: "plot", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, include: { valType: "any", arrayOk: true, editType: "plot", impliedEdits: { "range[0]": void 0, "range[1]": void 0 } }, editType: "plot" }, rangemode: { valType: "enumerated", values: ["normal", "tozero", "nonnegative"], dflt: "normal", editType: "plot" }, range: { valType: "info_array", items: [{ valType: "any", editType: "axrange", impliedEdits: { "^autorange": false }, anim: true }, { valType: "any", editType: "axrange", impliedEdits: { "^autorange": false }, anim: true }], editType: "axrange", impliedEdits: { autorange: false }, anim: true }, minallowed: { valType: "any", editType: "plot", impliedEdits: { "^autorange": false } }, maxallowed: { valType: "any", editType: "plot", impliedEdits: { "^autorange": false } }, fixedrange: { valType: "boolean", dflt: false, editType: "calc" }, insiderange: { valType: "info_array", items: [{ valType: "any", editType: "plot" }, { valType: "any", editType: "plot" }], editType: "plot" }, scaleanchor: { valType: "enumerated", values: [u.idRegex.x.toString(), u.idRegex.y.toString(), false], editType: "plot" }, scaleratio: { valType: "number", min: 0, dflt: 1, editType: "plot" }, constrain: { valType: "enumerated", values: ["range", "domain"], editType: "plot" }, constraintoward: { valType: "enumerated", values: ["left", "center", "right", "top", "middle", "bottom"], editType: "plot" }, matches: { valType: "enumerated", values: [u.idRegex.x.toString(), u.idRegex.y.toString()], editType: "calc" }, rangebreaks: l("rangebreak", { enabled: { valType: "boolean", dflt: true, editType: "calc" }, bounds: { valType: "info_array", items: [{ valType: "any", editType: "calc" }, { valType: "any", editType: "calc" }], editType: "calc" }, pattern: { valType: "enumerated", values: [d, f, ""], editType: "calc" }, values: { valType: "info_array", freeLength: true, editType: "calc", items: { valType: "any", editType: "calc" } }, dvalue: { valType: "number", editType: "calc", min: 0, dflt: c }, editType: "calc" }), tickmode: p, nticks: v(), tick0: g, dtick: m, ticklabelstep: { valType: "integer", min: 1, dflt: 1, editType: "ticks" }, tickvals: y, ticktext: { valType: "data_array", editType: "ticks" }, ticks: x, tickson: { valType: "enumerated", values: ["labels", "boundaries"], dflt: "labels", editType: "ticks" }, ticklabelmode: { valType: "enumerated", values: ["instant", "period"], dflt: "instant", editType: "ticks" }, ticklabelposition: { valType: "enumerated", values: ["outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom"], dflt: "outside", editType: "calc" }, ticklabeloverflow: { valType: "enumerated", values: ["allow", "hide past div", "hide past domain"], editType: "calc" }, ticklabelshift: { valType: "integer", dflt: 0, editType: "ticks" }, ticklabelstandoff: { valType: "integer", dflt: 0, editType: "ticks" }, ticklabelindex: { valType: "integer", arrayOk: true, editType: "calc" }, mirror: { valType: "enumerated", values: [true, "ticks", false, "all", "allticks"], dflt: false, editType: "ticks+layoutstyle" }, ticklen: b(), tickwidth: _(), tickcolor: w, showticklabels: { valType: "boolean", dflt: true, editType: "ticks" }, labelalias: { valType: "any", dflt: false, editType: "ticks" }, automargin: { valType: "flaglist", flags: ["height", "width", "left", "right", "top", "bottom"], extras: [true, false], dflt: false, editType: "ticks" }, showspikes: { valType: "boolean", dflt: false, editType: "modebar" }, spikecolor: { valType: "color", dflt: null, editType: "none" }, spikethickness: { valType: "number", dflt: 3, editType: "none" }, spikedash: o({}, i, { dflt: "dash", editType: "none" }), spikemode: { valType: "flaglist", flags: ["toaxis", "across", "marker"], dflt: "toaxis", editType: "none" }, spikesnap: { valType: "enumerated", values: ["data", "cursor", "hovered data"], dflt: "hovered data", editType: "none" }, tickfont: n({ editType: "ticks" }), tickangle: { valType: "angle", dflt: "auto", editType: "ticks" }, autotickangles: { valType: "info_array", freeLength: true, items: { valType: "angle" }, dflt: [0, 30, 90], editType: "ticks" }, tickprefix: { valType: "string", dflt: "", editType: "ticks" }, showtickprefix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks" }, ticksuffix: { valType: "string", dflt: "", editType: "ticks" }, showticksuffix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks" }, showexponent: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks" }, exponentformat: { valType: "enumerated", values: ["none", "e", "E", "power", "SI", "B"], dflt: "B", editType: "ticks" }, minexponent: { valType: "number", dflt: 3, min: 0, editType: "ticks" }, separatethousands: { valType: "boolean", dflt: false, editType: "ticks" }, tickformat: { valType: "string", dflt: "", editType: "ticks", description: s("tick label") }, tickformatstops: l("tickformatstop", { enabled: { valType: "boolean", dflt: true, editType: "ticks" }, dtickrange: { valType: "info_array", items: [{ valType: "any", editType: "ticks" }, { valType: "any", editType: "ticks" }], editType: "ticks" }, value: { valType: "string", dflt: "", editType: "ticks" }, editType: "ticks" }), hoverformat: { valType: "string", dflt: "", editType: "none", description: s("hover text") }, showline: { valType: "boolean", dflt: false, editType: "ticks+layoutstyle" }, linecolor: { valType: "color", dflt: a.defaultLine, editType: "layoutstyle" }, linewidth: { valType: "number", min: 0, dflt: 1, editType: "ticks+layoutstyle" }, showgrid: A, gridcolor: T, gridwidth: M(), griddash: k, zeroline: { valType: "boolean", editType: "ticks" }, zerolinecolor: { valType: "color", dflt: a.defaultLine, editType: "ticks" }, zerolinewidth: { valType: "number", dflt: 1, editType: "ticks" }, showdividers: { valType: "boolean", dflt: true, editType: "ticks" }, dividercolor: { valType: "color", dflt: a.defaultLine, editType: "ticks" }, dividerwidth: { valType: "number", dflt: 1, editType: "ticks" }, anchor: { valType: "enumerated", values: ["free", u.idRegex.x.toString(), u.idRegex.y.toString()], editType: "plot" }, side: { valType: "enumerated", values: ["top", "bottom", "left", "right"], editType: "plot" }, overlaying: { valType: "enumerated", values: ["free", u.idRegex.x.toString(), u.idRegex.y.toString()], editType: "plot" }, minor: { tickmode: h, nticks: v("minor"), tick0: g, dtick: m, tickvals: y, ticks: x, ticklen: b("minor"), tickwidth: _("minor"), tickcolor: w, gridcolor: T, gridwidth: M("minor"), griddash: k, showgrid: A, editType: "ticks" }, layer: { valType: "enumerated", values: ["above traces", "below traces"], dflt: "above traces", editType: "plot" }, domain: { valType: "info_array", items: [{ valType: "number", min: 0, max: 1, editType: "plot" }, { valType: "number", min: 0, max: 1, editType: "plot" }], dflt: [0, 1], editType: "plot" }, position: { valType: "number", min: 0, max: 1, dflt: 0, editType: "plot" }, autoshift: { valType: "boolean", dflt: false, editType: "plot" }, shift: { valType: "number", editType: "plot" }, categoryorder: { valType: "enumerated", values: ["trace", "category ascending", "category descending", "array", "total ascending", "total descending", "min ascending", "min descending", "max ascending", "max descending", "sum ascending", "sum descending", "mean ascending", "mean descending", "geometric mean ascending", "geometric mean descending", "median ascending", "median descending"], dflt: "trace", editType: "calc" }, categoryarray: { valType: "data_array", editType: "calc" }, uirevision: { valType: "any", editType: "none" }, editType: "calc", _deprecated: { autotick: { valType: "boolean", editType: "ticks" }, title: { valType: "string", editType: "ticks" }, titlefont: n({ editType: "ticks" }) } };
        }, 4098: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766), i = r2(6040).isUnifiedHover, o = r2(5265), l = r2(8032), s = r2(6704), c = r2(5829), u = r2(4392), f = r2(7655), d = r2(4391), h = r2(957), p = r2(5975), v = p.id2name, g = p.name2id, m = r2(4826).AX_ID_PATTERN, y = r2(3626), x = y.traceIs, b = y.getComponentMethod;
          function _(e3, t3, r3) {
            Array.isArray(e3[t3]) ? e3[t3].push(r3) : e3[t3] = [r3];
          }
          e2.exports = function(e3, t3, r3) {
            var y2, w, T = t3.autotypenumbers, M = {}, k = {}, A = {}, L = {}, S = {}, C = {}, O = {}, D = {}, P = {}, z = {};
            for (y2 = 0; y2 < r3.length; y2++) {
              var I = r3[y2];
              if (x(I, "cartesian") || x(I, "gl2d")) {
                var E, R;
                if (I.xaxis) E = v(I.xaxis), _(M, E, I);
                else if (I.xaxes) for (w = 0; w < I.xaxes.length; w++) _(M, v(I.xaxes[w]), I);
                if (I.yaxis) R = v(I.yaxis), _(M, R, I);
                else if (I.yaxes) for (w = 0; w < I.yaxes.length; w++) _(M, v(I.yaxes[w]), I);
                "funnel" === I.type ? "h" === I.orientation ? (E && (k[E] = true), R && (O[R] = true)) : R && (A[R] = true) : "image" === I.type ? (R && (D[R] = true), E && (D[E] = true)) : (R && (S[R] = true, C[R] = true), x(I, "carpet") && ("carpet" !== I.type || I._cheater) || E && (L[E] = true)), "carpet" === I.type && I._cheater && E && (k[E] = true), x(I, "2dMap") && (P[E] = true, P[R] = true), x(I, "oriented") && (z["h" === I.orientation ? R : E] = true);
              }
            }
            var N = t3._subplots, F = N.xaxis, H = N.yaxis, B = n.simpleMap(F, v), j = n.simpleMap(H, v), Y = B.concat(j), V = a.background;
            F.length && H.length && (V = n.coerce(e3, t3, s, "plot_bgcolor"));
            var U, q, G, Z, W, J = a.combine(V, t3.paper_bgcolor);
            function X() {
              var e4 = M[U] || [];
              W._traceIndices = e4.map(function(e5) {
                return e5._expandedIndex;
              }), W._annIndices = [], W._shapeIndices = [], W._selectionIndices = [], W._imgIndices = [], W._subplotsWith = [], W._counterAxes = [], W._name = W._attr = U, W._id = q;
            }
            function K(e4, t4) {
              return n.coerce(Z, W, c, e4, t4);
            }
            function Q(e4, t4) {
              return n.coerce2(Z, W, c, e4, t4);
            }
            function $(e4) {
              return "x" === e4 ? H : F;
            }
            function ee(t4, r4) {
              for (var n2 = "x" === t4 ? B : j, a2 = [], i2 = 0; i2 < n2.length; i2++) {
                var o2 = n2[i2];
                o2 === r4 || (e3[o2] || {}).overlaying || a2.push(g(o2));
              }
              return a2;
            }
            var te = { x: $("x"), y: $("y") }, re = te.x.concat(te.y), ne = {}, ae = [];
            function ie() {
              var e4 = Z.matches;
              m.test(e4) && -1 === re.indexOf(e4) && (ne[e4] = Z.type, ae = Object.keys(ne));
            }
            var oe = o(e3, t3), le = i(oe);
            for (y2 = 0; y2 < Y.length; y2++) {
              U = Y[y2], q = g(U), G = U.charAt(0), n.isPlainObject(e3[U]) || (e3[U] = {}), Z = e3[U], W = l.newContainer(t3, U, G + "axis"), X();
              var se = "x" === G && !L[U] && k[U] || "y" === G && !S[U] && A[U], ce = "y" === G && (!C[U] && O[U] || D[U]), ue = { hasMinor: true, letter: G, font: t3.font, outerTicks: P[U], showGrid: !z[U], data: M[U] || [], bgColor: J, calendar: t3.calendar, automargin: true, visibleDflt: se, reverseDflt: ce, autotypenumbersDflt: T, splomStash: ((t3._splomAxes || {})[G] || {})[q], noAutotickangles: "y" === G };
              K("uirevision", t3.uirevision), u(Z, W, K, ue), f(Z, W, K, ue, t3);
              var fe = le && G === oe.charAt(0), de = Q("spikecolor", le ? W.color : void 0), he = Q("spikethickness", le ? 1.5 : void 0), pe = Q("spikedash", le ? "dot" : void 0), ve = Q("spikemode", le ? "across" : void 0), ge = Q("spikesnap");
              K("showspikes", !!(fe || de || he || pe || ve || ge)) || (delete W.spikecolor, delete W.spikethickness, delete W.spikedash, delete W.spikemode, delete W.spikesnap);
              var me = v(Z.overlaying), ye = [0, 1];
              if (void 0 !== t3[me]) {
                var xe = v(t3[me].anchor);
                void 0 !== t3[xe] && (ye = t3[xe].domain);
              }
              h(Z, W, K, { letter: G, counterAxes: te[G], overlayableAxes: ee(G, U), grid: t3.grid, overlayingDomain: ye }), K("title.standoff"), ie(), W._input = Z;
            }
            for (y2 = 0; y2 < ae.length; ) {
              q = ae[y2++], G = (U = v(q)).charAt(0), n.isPlainObject(e3[U]) || (e3[U] = {}), Z = e3[U], W = l.newContainer(t3, U, G + "axis"), X();
              var be = { letter: G, font: t3.font, outerTicks: P[U], showGrid: !z[U], data: [], bgColor: J, calendar: t3.calendar, automargin: true, visibleDflt: false, reverseDflt: false, autotypenumbersDflt: T, splomStash: ((t3._splomAxes || {})[G] || {})[q] };
              K("uirevision", t3.uirevision), W.type = ne[q] || "linear", f(Z, W, K, be, t3), h(Z, W, K, { letter: G, counterAxes: te[G], overlayableAxes: ee(G, U), grid: t3.grid }), K("fixedrange"), ie(), W._input = Z;
            }
            var _e = b("rangeslider", "handleDefaults"), we = b("rangeselector", "handleDefaults");
            for (y2 = 0; y2 < B.length; y2++) U = B[y2], Z = e3[U], W = t3[U], _e(e3, t3, U), "date" === W.type && we(Z, W, t3, j, W.calendar), K("fixedrange");
            for (y2 = 0; y2 < j.length; y2++) {
              U = j[y2], Z = e3[U], W = t3[U];
              var Te = t3[v(W.anchor)];
              K("fixedrange", b("rangeslider", "isVisible")(Te));
            }
            d.handleDefaults(e3, t3, { axIds: re.concat(ae).sort(p.idSort), axHasImage: D });
          };
        }, 7405: function(e2, t2, r2) {
          var n = r2(5657).mix, a = r2(229), i = r2(4809);
          e2.exports = function(e3, t3, r3, o) {
            var l = (o = o || {}).dfltColor;
            function s(r4, n2) {
              return i.coerce2(e3, t3, o.attributes, r4, n2);
            }
            var c = s("linecolor", l), u = s("linewidth");
            r3("showline", o.showLine || !!c || !!u) || (delete t3.linecolor, delete t3.linewidth);
            var f = s("gridcolor", n(l, o.bgColor, o.blend || a.lightFraction).toRgbString()), d = s("gridwidth"), h = s("griddash");
            if (r3("showgrid", o.showGrid || !!f || !!d || !!h) || (delete t3.gridcolor, delete t3.gridwidth, delete t3.griddash), o.hasMinor) {
              var p = s("minor.gridcolor", n(t3.gridcolor, o.bgColor, 67).toRgbString()), v = s("minor.gridwidth", t3.gridwidth || 1), g = s("minor.griddash", t3.griddash || "solid");
              r3("minor.showgrid", !!p || !!v || !!g) || (delete t3.minor.gridcolor, delete t3.minor.gridwidth, delete t3.minor.griddash);
            }
            if (!o.noZeroLine) {
              var m = s("zerolinecolor", l), y = s("zerolinewidth");
              r3("zeroline", o.showGrid || !!m || !!y) || (delete t3.zerolinecolor, delete t3.zerolinewidth);
            }
          };
        }, 957: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809);
          e2.exports = function(e3, t3, r3, i) {
            var o, l, s, c, u, f, d = i.counterAxes || [], h = i.overlayableAxes || [], p = i.letter, v = i.grid, g = i.overlayingDomain;
            v && (l = v._domains[p][v._axisMap[t3._id]], o = v._anchors[t3._id], l && (s = v[p + "side"].split(" ")[0], c = v.domain[p]["right" === s || "top" === s ? 1 : 0])), l = l || [0, 1], o = o || (n(e3.position) ? "free" : d[0] || "free"), s = s || ("x" === p ? "bottom" : "left"), c = c || 0, u = 0, f = false;
            var m = a.coerce(e3, t3, { anchor: { valType: "enumerated", values: ["free"].concat(d), dflt: o } }, "anchor"), y = a.coerce(e3, t3, { side: { valType: "enumerated", values: "x" === p ? ["bottom", "top"] : ["left", "right"], dflt: s } }, "side");
            "free" === m && ("y" === p && (r3("autoshift") && (c = "left" === y ? g[0] : g[1], f = !t3.automargin || t3.automargin, u = "left" === y ? -3 : 3), r3("shift", u)), r3("position", c)), r3("automargin", f);
            var x = false;
            if (h.length && (x = a.coerce(e3, t3, { overlaying: { valType: "enumerated", values: [false].concat(h), dflt: false } }, "overlaying")), !x) {
              var b = r3("domain", l);
              b[0] > b[1] - 1 / 4096 && (t3.domain = l), a.noneOrAll(e3.domain, t3.domain, l), "sync" === t3.tickmode && (t3.tickmode = "auto");
            }
            return r3("layer"), t3;
          };
        }, 4616: function(e2, t2, r2) {
          var n = r2(7703);
          e2.exports = function(e3, t3, r3, a, i) {
            i || (i = {});
            var o = i.tickSuffixDflt, l = n(e3);
            r3("tickprefix") && r3("showtickprefix", l), r3("ticksuffix", o) && r3("showticksuffix", l);
          };
        }, 259: function(e2, t2, r2) {
          var n = r2(5511);
          e2.exports = function(e3, t3, r3, a) {
            var i = t3._template || {}, o = t3.type || i.type || "-";
            r3("minallowed"), r3("maxallowed");
            var l, s = r3("range");
            s || a.noInsiderange || "log" === o || (!(l = r3("insiderange")) || null !== l[0] && null !== l[1] || (t3.insiderange = false, l = void 0), l && (s = r3("range", l)));
            var c, u = t3.getAutorangeDflt(s, a), f = r3("autorange", u);
            !s || (null !== s[0] || null !== s[1]) && (null !== s[0] && null !== s[1] || "reversed" !== f && true !== f) && (null === s[0] || "min" !== f && "max reversed" !== f) && (null === s[1] || "max" !== f && "min reversed" !== f) || (s = void 0, delete t3.range, t3.autorange = true, c = true), c || (f = r3("autorange", u = t3.getAutorangeDflt(s, a))), f && (n(r3, f, s), "linear" !== o && "-" !== o || r3("rangemode")), t3.cleanRange();
          };
        }, 7611: function(e2, t2, r2) {
          var n = r2(4530).FROM_BL;
          e2.exports = function(e3, t3, r3) {
            void 0 === r3 && (r3 = n[e3.constraintoward || "center"]);
            var a = [e3.r2l(e3.range[0]), e3.r2l(e3.range[1])], i = a[0] + (a[1] - a[0]) * r3;
            e3.range = e3._input.range = [e3.l2r(i + (a[0] - i) * t3), e3.l2r(i + (a[1] - i) * t3)], e3.setScale();
          };
        }, 9091: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2696).aL, i = r2(4809), o = i.numberFormat, l = r2(721), s = i.cleanNumber, c = i.ms2DateTime, u = i.dateTime2ms, f = i.ensureNumber, d = i.isArrayOrTypedArray, h = r2(3821), p = h.FP_SAFE, v = h.BADNUM, g = h.LOG_CLIP, m = h.ONEWEEK, y = h.ONEDAY, x = h.ONEHOUR, b = h.ONEMIN, _ = h.ONESEC, w = r2(5975), T = r2(4826), M = T.HOUR_PATTERN, k = T.WEEKDAY_PATTERN;
          function A(e3) {
            return Math.pow(10, e3);
          }
          function L(e3) {
            return null != e3;
          }
          e2.exports = function(e3, t3) {
            t3 = t3 || {};
            var r3 = e3._id || "x", h2 = r3.charAt(0);
            function S(t4, r4) {
              if (t4 > 0) return Math.log(t4) / Math.LN10;
              if (t4 <= 0 && r4 && e3.range && 2 === e3.range.length) {
                var n2 = e3.range[0], a2 = e3.range[1];
                return 0.5 * (n2 + a2 - 2 * g * Math.abs(n2 - a2));
              }
              return v;
            }
            function C(t4, r4, n2, a2) {
              if ((a2 || {}).msUTC && l(t4)) return +t4;
              var o2 = u(t4, n2 || e3.calendar);
              if (o2 === v) {
                if (!l(t4)) return v;
                t4 = +t4;
                var s2 = Math.floor(10 * i.mod(t4 + 0.05, 1)), c2 = Math.round(t4 - s2 / 10);
                o2 = u(new Date(c2)) + s2 / 10;
              }
              return o2;
            }
            function O(t4, r4, n2) {
              return c(t4, r4, n2 || e3.calendar);
            }
            function D(t4) {
              return e3._categories[Math.round(t4)];
            }
            function P(t4) {
              if (L(t4)) {
                if (void 0 === e3._categoriesMap && (e3._categoriesMap = {}), void 0 !== e3._categoriesMap[t4]) return e3._categoriesMap[t4];
                e3._categories.push("number" == typeof t4 ? String(t4) : t4);
                var r4 = e3._categories.length - 1;
                return e3._categoriesMap[t4] = r4, r4;
              }
              return v;
            }
            function z(t4) {
              if (e3._categoriesMap) return e3._categoriesMap[t4];
            }
            function I(e4) {
              var t4 = z(e4);
              return void 0 !== t4 ? t4 : l(e4) ? +e4 : void 0;
            }
            function E(e4) {
              return l(e4) ? +e4 : z(e4);
            }
            function R(e4, t4, r4) {
              return n.round(r4 + t4 * e4, 2);
            }
            function N(e4, t4, r4) {
              return (e4 - r4) / t4;
            }
            var F = function(t4) {
              return l(t4) ? R(t4, e3._m, e3._b) : v;
            }, H = function(t4) {
              return N(t4, e3._m, e3._b);
            };
            if (e3.rangebreaks) {
              var B = "y" === h2;
              F = function(t4) {
                if (!l(t4)) return v;
                var r4 = e3._rangebreaks.length;
                if (!r4) return R(t4, e3._m, e3._b);
                var n2 = B;
                e3.range[0] > e3.range[1] && (n2 = !n2);
                for (var a2 = n2 ? -1 : 1, i2 = a2 * t4, o2 = 0, s2 = 0; s2 < r4; s2++) {
                  var c2 = a2 * e3._rangebreaks[s2].min, u2 = a2 * e3._rangebreaks[s2].max;
                  if (i2 < c2) break;
                  if (!(i2 > u2)) {
                    o2 = i2 < (c2 + u2) / 2 ? s2 : s2 + 1;
                    break;
                  }
                  o2 = s2 + 1;
                }
                var f2 = e3._B[o2] || 0;
                return isFinite(f2) ? R(t4, e3._m2, f2) : 0;
              }, H = function(t4) {
                var r4 = e3._rangebreaks.length;
                if (!r4) return N(t4, e3._m, e3._b);
                for (var n2 = 0, a2 = 0; a2 < r4 && !(t4 < e3._rangebreaks[a2].pmin); a2++) t4 > e3._rangebreaks[a2].pmax && (n2 = a2 + 1);
                return N(t4, e3._m2, e3._B[n2]);
              };
            }
            e3.c2l = "log" === e3.type ? S : f, e3.l2c = "log" === e3.type ? A : f, e3.l2p = F, e3.p2l = H, e3.c2p = "log" === e3.type ? function(e4, t4) {
              return F(S(e4, t4));
            } : F, e3.p2c = "log" === e3.type ? function(e4) {
              return A(H(e4));
            } : H, -1 !== ["linear", "-"].indexOf(e3.type) ? (e3.d2r = e3.r2d = e3.d2c = e3.r2c = e3.d2l = e3.r2l = s, e3.c2d = e3.c2r = e3.l2d = e3.l2r = f, e3.d2p = e3.r2p = function(t4) {
              return e3.l2p(s(t4));
            }, e3.p2d = e3.p2r = H, e3.cleanPos = f) : "log" === e3.type ? (e3.d2r = e3.d2l = function(e4, t4) {
              return S(s(e4), t4);
            }, e3.r2d = e3.r2c = function(e4) {
              return A(s(e4));
            }, e3.d2c = e3.r2l = s, e3.c2d = e3.l2r = f, e3.c2r = S, e3.l2d = A, e3.d2p = function(t4, r4) {
              return e3.l2p(e3.d2r(t4, r4));
            }, e3.p2d = function(e4) {
              return A(H(e4));
            }, e3.r2p = function(t4) {
              return e3.l2p(s(t4));
            }, e3.p2r = H, e3.cleanPos = f) : "date" === e3.type ? (e3.d2r = e3.r2d = i.identity, e3.d2c = e3.r2c = e3.d2l = e3.r2l = C, e3.c2d = e3.c2r = e3.l2d = e3.l2r = O, e3.d2p = e3.r2p = function(t4, r4, n2) {
              return e3.l2p(C(t4, 0, n2));
            }, e3.p2d = e3.p2r = function(e4, t4, r4) {
              return O(H(e4), t4, r4);
            }, e3.cleanPos = function(t4) {
              return i.cleanDate(t4, v, e3.calendar);
            }) : "category" === e3.type ? (e3.d2c = e3.d2l = P, e3.r2d = e3.c2d = e3.l2d = D, e3.d2r = e3.d2l_noadd = I, e3.r2c = function(t4) {
              var r4 = E(t4);
              return void 0 !== r4 ? r4 : e3.fraction2r(0.5);
            }, e3.l2r = e3.c2r = f, e3.r2l = E, e3.d2p = function(t4) {
              return e3.l2p(e3.r2c(t4));
            }, e3.p2d = function(e4) {
              return D(H(e4));
            }, e3.r2p = e3.d2p, e3.p2r = H, e3.cleanPos = function(e4) {
              return "string" == typeof e4 && "" !== e4 ? e4 : f(e4);
            }) : "multicategory" === e3.type && (e3.r2d = e3.c2d = e3.l2d = D, e3.d2r = e3.d2l_noadd = I, e3.r2c = function(t4) {
              var r4 = I(t4);
              return void 0 !== r4 ? r4 : e3.fraction2r(0.5);
            }, e3.r2c_just_indices = z, e3.l2r = e3.c2r = f, e3.r2l = I, e3.d2p = function(t4) {
              return e3.l2p(e3.r2c(t4));
            }, e3.p2d = function(e4) {
              return D(H(e4));
            }, e3.r2p = e3.d2p, e3.p2r = H, e3.cleanPos = function(e4) {
              return Array.isArray(e4) || "string" == typeof e4 && "" !== e4 ? e4 : f(e4);
            }, e3.setupMultiCategory = function(n2) {
              var a2, o2, l2 = e3._traceIndices, s2 = e3._matchGroup;
              if (s2 && 0 === e3._categories.length) {
                for (var c2 in s2) if (c2 !== r3) {
                  var u2 = t3[w.id2name(c2)];
                  l2 = l2.concat(u2._traceIndices);
                }
              }
              var f2 = [[0, {}], [0, {}]], p2 = [];
              for (a2 = 0; a2 < l2.length; a2++) {
                var v2 = n2[l2[a2]];
                if (h2 in v2) {
                  var g2 = v2[h2], m2 = v2._length || i.minRowLength(g2);
                  if (d(g2[0]) && d(g2[1])) for (o2 = 0; o2 < m2; o2++) {
                    var y2 = g2[0][o2], x2 = g2[1][o2];
                    L(y2) && L(x2) && (p2.push([y2, x2]), y2 in f2[0][1] || (f2[0][1][y2] = f2[0][0]++), x2 in f2[1][1] || (f2[1][1][x2] = f2[1][0]++));
                  }
                }
              }
              for (p2.sort(function(e4, t4) {
                var r4 = f2[0][1], n3 = r4[e4[0]] - r4[t4[0]];
                if (n3) return n3;
                var a3 = f2[1][1];
                return a3[e4[1]] - a3[t4[1]];
              }), a2 = 0; a2 < p2.length; a2++) P(p2[a2]);
            }), e3.fraction2r = function(t4) {
              var r4 = e3.r2l(e3.range[0]), n2 = e3.r2l(e3.range[1]);
              return e3.l2r(r4 + t4 * (n2 - r4));
            }, e3.r2fraction = function(t4) {
              var r4 = e3.r2l(e3.range[0]), n2 = e3.r2l(e3.range[1]);
              return (e3.r2l(t4) - r4) / (n2 - r4);
            }, e3.limitRange = function(t4) {
              var r4 = e3.minallowed, n2 = e3.maxallowed;
              if (void 0 !== r4 || void 0 !== n2) {
                t4 || (t4 = "range");
                var a2 = i.nestedProperty(e3, t4).get(), o2 = i.simpleMap(a2, e3.r2l), l2 = o2[1] < o2[0];
                l2 && o2.reverse();
                var s2 = i.simpleMap([r4, n2], e3.r2l);
                if (void 0 !== r4 && o2[0] < s2[0] && (a2[l2 ? 1 : 0] = r4), void 0 !== n2 && o2[1] > s2[1] && (a2[l2 ? 0 : 1] = n2), a2[0] === a2[1]) {
                  var c2 = e3.l2r(r4), u2 = e3.l2r(n2);
                  if (void 0 !== r4) {
                    var f2 = c2 + 1;
                    void 0 !== n2 && (f2 = Math.min(f2, u2)), a2[l2 ? 1 : 0] = f2;
                  }
                  if (void 0 !== n2) {
                    var d2 = u2 + 1;
                    void 0 !== r4 && (d2 = Math.max(d2, c2)), a2[l2 ? 0 : 1] = d2;
                  }
                }
              }
            }, e3.cleanRange = function(t4, r4) {
              e3._cleanRange(t4, r4), e3.limitRange(t4);
            }, e3._cleanRange = function(t4, r4) {
              r4 || (r4 = {}), t4 || (t4 = "range");
              var n2, a2, o2 = i.nestedProperty(e3, t4).get();
              if (a2 = (a2 = "date" === e3.type ? i.dfltRange(e3.calendar) : "y" === h2 ? T.DFLTRANGEY : "realaxis" === e3._name ? [0, 1] : r4.dfltRange || T.DFLTRANGEX).slice(), "tozero" !== e3.rangemode && "nonnegative" !== e3.rangemode || (a2[0] = 0), o2 && 2 === o2.length) {
                var s2 = null === o2[0], c2 = null === o2[1];
                for ("date" !== e3.type || e3.autorange || (o2[0] = i.cleanDate(o2[0], v, e3.calendar), o2[1] = i.cleanDate(o2[1], v, e3.calendar)), n2 = 0; n2 < 2; n2++) if ("date" === e3.type) {
                  if (!i.isDateTime(o2[n2], e3.calendar)) {
                    e3[t4] = a2;
                    break;
                  }
                  if (e3.r2l(o2[0]) === e3.r2l(o2[1])) {
                    var u2 = i.constrain(e3.r2l(o2[0]), i.MIN_MS + 1e3, i.MAX_MS - 1e3);
                    o2[0] = e3.l2r(u2 - 1e3), o2[1] = e3.l2r(u2 + 1e3);
                    break;
                  }
                } else {
                  if (!l(o2[n2])) {
                    if (s2 || c2 || !l(o2[1 - n2])) {
                      e3[t4] = a2;
                      break;
                    }
                    o2[n2] = o2[1 - n2] * (n2 ? 10 : 0.1);
                  }
                  if (o2[n2] < -p ? o2[n2] = -p : o2[n2] > p && (o2[n2] = p), o2[0] === o2[1]) {
                    var f2 = Math.max(1, Math.abs(1e-6 * o2[0]));
                    o2[0] -= f2, o2[1] += f2;
                  }
                }
              } else i.nestedProperty(e3, t4).set(a2);
            }, e3.setScale = function(r4) {
              var n2 = t3._size;
              if (e3.overlaying) {
                var a2 = w.getFromId({ _fullLayout: t3 }, e3.overlaying);
                e3.domain = a2.domain;
              }
              var i2 = r4 && e3._r ? "_r" : "range", o2 = e3.calendar;
              e3.cleanRange(i2);
              var l2, s2, c2 = e3.r2l(e3[i2][0], o2), u2 = e3.r2l(e3[i2][1], o2), f2 = "y" === h2;
              if (f2 ? (e3._offset = n2.t + (1 - e3.domain[1]) * n2.h, e3._length = n2.h * (e3.domain[1] - e3.domain[0]), e3._m = e3._length / (c2 - u2), e3._b = -e3._m * u2) : (e3._offset = n2.l + e3.domain[0] * n2.w, e3._length = n2.w * (e3.domain[1] - e3.domain[0]), e3._m = e3._length / (u2 - c2), e3._b = -e3._m * c2), e3._rangebreaks = [], e3._lBreaks = 0, e3._m2 = 0, e3._B = [], e3.rangebreaks && (e3._rangebreaks = e3.locateBreaks(Math.min(c2, u2), Math.max(c2, u2)), e3._rangebreaks.length)) {
                for (l2 = 0; l2 < e3._rangebreaks.length; l2++) s2 = e3._rangebreaks[l2], e3._lBreaks += Math.abs(s2.max - s2.min);
                var d2 = f2;
                c2 > u2 && (d2 = !d2), d2 && e3._rangebreaks.reverse();
                var p2 = d2 ? -1 : 1;
                for (e3._m2 = p2 * e3._length / (Math.abs(u2 - c2) - e3._lBreaks), e3._B.push(-e3._m2 * (f2 ? u2 : c2)), l2 = 0; l2 < e3._rangebreaks.length; l2++) s2 = e3._rangebreaks[l2], e3._B.push(e3._B[e3._B.length - 1] - p2 * e3._m2 * (s2.max - s2.min));
                for (l2 = 0; l2 < e3._rangebreaks.length; l2++) (s2 = e3._rangebreaks[l2]).pmin = F(s2.min), s2.pmax = F(s2.max);
              }
              if (!isFinite(e3._m) || !isFinite(e3._b) || e3._length < 0) throw t3._replotting = false, new Error("Something went wrong with axis scaling");
            }, e3.maskBreaks = function(t4) {
              var r4, n2, a2, o2, l2, c2 = e3.rangebreaks || [];
              c2._cachedPatterns || (c2._cachedPatterns = c2.map(function(t5) {
                return t5.enabled && t5.bounds ? i.simpleMap(t5.bounds, t5.pattern ? s : e3.d2c) : null;
              })), c2._cachedValues || (c2._cachedValues = c2.map(function(t5) {
                return t5.enabled && t5.values ? i.simpleMap(t5.values, e3.d2c).sort(i.sorterAsc) : null;
              }));
              for (var u2 = 0; u2 < c2.length; u2++) {
                var f2 = c2[u2];
                if (f2.enabled) {
                  if (f2.bounds) {
                    var d2 = f2.pattern;
                    switch (n2 = (r4 = c2._cachedPatterns[u2])[0], a2 = r4[1], d2) {
                      case k:
                        o2 = (l2 = new Date(t4)).getUTCDay(), n2 > a2 && (a2 += 7, o2 < n2 && (o2 += 7));
                        break;
                      case M:
                        o2 = (l2 = new Date(t4)).getUTCHours() + (l2.getUTCMinutes() / 60 + l2.getUTCSeconds() / 3600 + l2.getUTCMilliseconds() / 36e5), n2 > a2 && (a2 += 24, o2 < n2 && (o2 += 24));
                        break;
                      case "":
                        o2 = t4;
                    }
                    if (o2 >= n2 && o2 < a2) return v;
                  } else for (var h3 = c2._cachedValues[u2], p2 = 0; p2 < h3.length; p2++) if (a2 = (n2 = h3[p2]) + f2.dvalue, t4 >= n2 && t4 < a2) return v;
                }
              }
              return t4;
            }, e3.locateBreaks = function(t4, r4) {
              var n2, a2, o2, l2, c2 = [];
              if (!e3.rangebreaks) return c2;
              var u2 = e3.rangebreaks.slice().sort(function(e4, t5) {
                return e4.pattern === k && t5.pattern === M ? -1 : t5.pattern === k && e4.pattern === M ? 1 : 0;
              }), f2 = function(e4, n3) {
                if ((e4 = i.constrain(e4, t4, r4)) !== (n3 = i.constrain(n3, t4, r4))) {
                  for (var a3 = true, o3 = 0; o3 < c2.length; o3++) {
                    var l3 = c2[o3];
                    e4 < l3.max && n3 >= l3.min && (e4 < l3.min && (l3.min = e4), n3 > l3.max && (l3.max = n3), a3 = false);
                  }
                  a3 && c2.push({ min: e4, max: n3 });
                }
              };
              for (n2 = 0; n2 < u2.length; n2++) {
                var d2 = u2[n2];
                if (d2.enabled) if (d2.bounds) {
                  var h3 = t4, p2 = r4;
                  d2.pattern && (h3 = Math.floor(h3)), o2 = (a2 = i.simpleMap(d2.bounds, d2.pattern ? s : e3.r2l))[0], l2 = a2[1];
                  var v2, g2, w2 = new Date(h3);
                  switch (d2.pattern) {
                    case k:
                      g2 = m, v2 = (l2 - o2 + (l2 < o2 ? 7 : 0)) * y, h3 += o2 * y - (w2.getUTCDay() * y + w2.getUTCHours() * x + w2.getUTCMinutes() * b + w2.getUTCSeconds() * _ + w2.getUTCMilliseconds());
                      break;
                    case M:
                      g2 = y, v2 = (l2 - o2 + (l2 < o2 ? 24 : 0)) * x, h3 += o2 * x - (w2.getUTCHours() * x + w2.getUTCMinutes() * b + w2.getUTCSeconds() * _ + w2.getUTCMilliseconds());
                      break;
                    default:
                      h3 = Math.min(a2[0], a2[1]), v2 = g2 = (p2 = Math.max(a2[0], a2[1])) - h3;
                  }
                  for (var T2 = h3; T2 < p2; T2 += g2) f2(T2, T2 + v2);
                } else for (var A2 = i.simpleMap(d2.values, e3.d2c), L2 = 0; L2 < A2.length; L2++) f2(o2 = A2[L2], l2 = o2 + d2.dvalue);
              }
              return c2.sort(function(e4, t5) {
                return e4.min - t5.min;
              }), c2;
            }, e3.makeCalcdata = function(t4, r4, n2) {
              var a2, o2, l2, s2, c2 = e3.type, u2 = "date" === c2 && t4[r4 + "calendar"];
              if (r4 in t4) {
                if (a2 = t4[r4], s2 = t4._length || i.minRowLength(a2), i.isTypedArray(a2) && ("linear" === c2 || "log" === c2)) {
                  if (s2 === a2.length) return a2;
                  if (a2.subarray) return a2.subarray(0, s2);
                }
                if ("multicategory" === c2) return function(e4, t5) {
                  for (var r5 = new Array(t5), n3 = 0; n3 < t5; n3++) {
                    var a3 = (e4[0] || [])[n3], i2 = (e4[1] || [])[n3];
                    r5[n3] = z([a3, i2]);
                  }
                  return r5;
                }(a2, s2);
                for (o2 = new Array(s2), l2 = 0; l2 < s2; l2++) o2[l2] = e3.d2c(a2[l2], 0, u2, n2);
              } else {
                var f2 = r4 + "0" in t4 ? e3.d2c(t4[r4 + "0"], 0, u2) : 0, d2 = t4["d" + r4] ? Number(t4["d" + r4]) : 1;
                for (a2 = t4[{ x: "y", y: "x" }[r4]], s2 = t4._length || a2.length, o2 = new Array(s2), l2 = 0; l2 < s2; l2++) o2[l2] = f2 + l2 * d2;
              }
              if (e3.rangebreaks) for (l2 = 0; l2 < s2; l2++) o2[l2] = e3.maskBreaks(o2[l2]);
              return o2;
            }, e3.isValidRange = function(t4, r4) {
              return Array.isArray(t4) && 2 === t4.length && (r4 && null === t4[0] || l(e3.r2l(t4[0]))) && (r4 && null === t4[1] || l(e3.r2l(t4[1])));
            }, e3.getAutorangeDflt = function(t4, r4) {
              var n2 = !e3.isValidRange(t4, "nullOk");
              return n2 && r4 && r4.reverseDflt ? n2 = "reversed" : t4 && (null === t4[0] && null === t4[1] ? n2 = true : null === t4[0] && null !== t4[1] ? n2 = "min" : null !== t4[0] && null === t4[1] && (n2 = "max")), n2;
            }, e3.isReversed = function() {
              var t4 = e3.autorange;
              return "reversed" === t4 || "min reversed" === t4 || "max reversed" === t4;
            }, e3.isPtWithinRange = function(t4, r4) {
              var n2 = e3.c2l(t4[h2], null, r4), a2 = e3.r2l(e3.range[0]), i2 = e3.r2l(e3.range[1]);
              return a2 < i2 ? a2 <= n2 && n2 <= i2 : i2 <= n2 && n2 <= a2;
            }, e3._emptyCategories = function() {
              e3._categories = [], e3._categoriesMap = {};
            }, e3.clearCalc = function() {
              var r4 = e3._matchGroup;
              if (r4) {
                var n2 = null, a2 = null;
                for (var i2 in r4) {
                  var o2 = t3[w.id2name(i2)];
                  if (o2._categories) {
                    n2 = o2._categories, a2 = o2._categoriesMap;
                    break;
                  }
                }
                n2 && a2 ? (e3._categories = n2, e3._categoriesMap = a2) : e3._emptyCategories();
              } else e3._emptyCategories();
              if (e3._initialCategories) for (var l2 = 0; l2 < e3._initialCategories.length; l2++) P(e3._initialCategories[l2]);
            }, e3.sortByInitialCategories = function() {
              var n2 = [];
              if (e3._emptyCategories(), e3._initialCategories) for (var a2 = 0; a2 < e3._initialCategories.length; a2++) P(e3._initialCategories[a2]);
              n2 = n2.concat(e3._traceIndices);
              var i2 = e3._matchGroup;
              for (var o2 in i2) if (r3 !== o2) {
                var l2 = t3[w.id2name(o2)];
                l2._categories = e3._categories, l2._categoriesMap = e3._categoriesMap, n2 = n2.concat(l2._traceIndices);
              }
              return n2;
            };
            var j = t3._d3locale;
            "date" === e3.type && (e3._dateFormat = j ? j.timeFormat : a, e3._extraFormat = t3._extraFormat), e3._separators = t3.separators, e3._numFormat = j ? j.numberFormat : o, delete e3._minDtick, delete e3._forceTick0;
          };
        }, 7703: function(e2) {
          e2.exports = function(e3) {
            var t2 = ["showexponent", "showtickprefix", "showticksuffix"].filter(function(t3) {
              return void 0 !== e3[t3];
            });
            if (t2.every(function(r2) {
              return e3[r2] === e3[t2[0]];
            }) || 1 === t2.length) return e3[t2[0]];
          };
        }, 2036: function(e2, t2, r2) {
          var n = r2(4809), a = r2(8766).contrast, i = r2(5829), o = r2(7703), l = r2(9008);
          function s(e3, t3) {
            function r3(r4, a2) {
              return n.coerce(e3, t3, i.tickformatstops, r4, a2);
            }
            r3("enabled") && (r3("dtickrange"), r3("value"));
          }
          e2.exports = function(e3, t3, r3, c, u) {
            u || (u = {});
            var f = r3("labelalias");
            n.isPlainObject(f) || delete t3.labelalias;
            var d = o(e3);
            if (r3("showticklabels")) {
              u.noTicklabelshift || r3("ticklabelshift"), u.noTicklabelstandoff || r3("ticklabelstandoff");
              var h = u.font || {}, p = t3.color, v = -1 !== (t3.ticklabelposition || "").indexOf("inside") ? a(u.bgColor) : p && p !== i.color.dflt ? p : h.color;
              if (n.coerceFont(r3, "tickfont", h, { overrideDflt: { color: v } }), u.noTicklabelstep || "multicategory" === c || "log" === c || r3("ticklabelstep"), !u.noAng) {
                var g = r3("tickangle");
                u.noAutotickangles || "auto" !== g || r3("autotickangles");
              }
              if ("category" !== c) {
                var m = r3("tickformat");
                l(e3, t3, { name: "tickformatstops", inclusionAttr: "enabled", handleItemDefaults: s }), t3.tickformatstops.length || delete t3.tickformatstops, u.noExp || m || "date" === c || (r3("showexponent", d), r3("exponentformat"), r3("minexponent"), r3("separatethousands"));
              }
            }
          };
        }, 7433: function(e2, t2, r2) {
          var n = r2(4809), a = r2(5829);
          e2.exports = function(e3, t3, r3, i) {
            var o = i.isMinor, l = o ? e3.minor || {} : e3, s = o ? t3.minor : t3, c = o ? a.minor : a, u = o ? "minor." : "", f = n.coerce2(l, s, c, "ticklen", o ? 0.6 * (t3.ticklen || 5) : void 0), d = n.coerce2(l, s, c, "tickwidth", o ? t3.tickwidth || 1 : void 0), h = n.coerce2(l, s, c, "tickcolor", (o ? t3.tickcolor : void 0) || s.color);
            r3(u + "ticks", !o && i.outerTicks || f || d || h ? "outside" : "") || (delete s.ticklen, delete s.tickwidth, delete s.tickcolor);
          };
        }, 2777: function(e2, t2, r2) {
          var n = r2(8599), a = r2(4809).isArrayOrTypedArray, i = r2(7800).isTypedArraySpec, o = r2(7800).decodeTypedArraySpec;
          e2.exports = function(e3, t3, r3, l, s) {
            s || (s = {});
            var c = s.isMinor, u = c ? e3.minor || {} : e3, f = c ? t3.minor : t3, d = c ? "minor." : "";
            function h(e4) {
              var t4 = u[e4];
              return i(t4) && (t4 = o(t4)), void 0 !== t4 ? t4 : (f._template || {})[e4];
            }
            var p = h("tick0"), v = h("dtick"), g = h("tickvals"), m = r3(d + "tickmode", a(g) ? "array" : v ? "linear" : "auto");
            if ("auto" === m || "sync" === m) r3(d + "nticks");
            else if ("linear" === m) {
              var y = f.dtick = n.dtick(v, l);
              f.tick0 = n.tick0(p, l, t3.calendar, y);
            } else "multicategory" !== l && (void 0 === r3(d + "tickvals") ? f.tickmode = "auto" : c || r3("ticktext"));
          };
        }, 4982: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4809), o = r2(2203), l = r2(9714);
          e2.exports = function(e3, t3, r3, s) {
            var c = e3._fullLayout;
            if (0 !== t3.length) {
              var u, f, d, h;
              s && (u = s());
              var p = n.ease(r3.easing);
              return e3._transitionData._interruptCallbacks.push(function() {
                return window.cancelAnimationFrame(h), h = null, function() {
                  for (var r4 = {}, n2 = 0; n2 < t3.length; n2++) {
                    var i2 = t3[n2], o2 = i2.plotinfo.xaxis, l2 = i2.plotinfo.yaxis;
                    i2.xr0 && (r4[o2._name + ".range"] = i2.xr0.slice()), i2.yr0 && (r4[l2._name + ".range"] = i2.yr0.slice());
                  }
                  return a.call("relayout", e3, r4).then(function() {
                    for (var e4 = 0; e4 < t3.length; e4++) v(t3[e4].plotinfo);
                  });
                }();
              }), f = Date.now(), h = window.requestAnimationFrame(function n2() {
                d = Date.now();
                for (var i2 = Math.min(1, (d - f) / r3.duration), o2 = p(i2), l2 = 0; l2 < t3.length; l2++) g(t3[l2], o2);
                d - f > r3.duration ? (function() {
                  for (var r4 = {}, n3 = 0; n3 < t3.length; n3++) {
                    var i3 = t3[n3], o3 = i3.plotinfo.xaxis, l3 = i3.plotinfo.yaxis;
                    i3.xr1 && (r4[o3._name + ".range"] = i3.xr1.slice()), i3.yr1 && (r4[l3._name + ".range"] = i3.yr1.slice());
                  }
                  u && u(), a.call("relayout", e3, r4).then(function() {
                    for (var e4 = 0; e4 < t3.length; e4++) v(t3[e4].plotinfo);
                  });
                }(), h = window.cancelAnimationFrame(n2)) : h = window.requestAnimationFrame(n2);
              }), Promise.resolve();
            }
            function v(e4) {
              var t4 = e4.xaxis, r4 = e4.yaxis;
              c._defs.select("#" + e4.clipId + "> rect").call(o.setTranslate, 0, 0).call(o.setScale, 1, 1), e4.plot.call(o.setTranslate, t4._offset, r4._offset).call(o.setScale, 1, 1);
              var n2 = e4.plot.selectAll(".scatterlayer .trace");
              n2.selectAll(".point").call(o.setPointGroupScale, 1, 1), n2.selectAll(".textpoint").call(o.setTextPointsScale, 1, 1), n2.call(o.hideOutsideRangePoints, e4);
            }
            function g(t4, r4) {
              var n2 = t4.plotinfo, a2 = n2.xaxis, s2 = n2.yaxis, c2 = a2._length, u2 = s2._length, f2 = !!t4.xr1, d2 = !!t4.yr1, h2 = [];
              if (f2) {
                var p2 = i.simpleMap(t4.xr0, a2.r2l), v2 = i.simpleMap(t4.xr1, a2.r2l), g2 = p2[1] - p2[0], m = v2[1] - v2[0];
                h2[0] = (p2[0] * (1 - r4) + r4 * v2[0] - p2[0]) / (p2[1] - p2[0]) * c2, h2[2] = c2 * (1 - r4 + r4 * m / g2), a2.range[0] = a2.l2r(p2[0] * (1 - r4) + r4 * v2[0]), a2.range[1] = a2.l2r(p2[1] * (1 - r4) + r4 * v2[1]);
              } else h2[0] = 0, h2[2] = c2;
              if (d2) {
                var y = i.simpleMap(t4.yr0, s2.r2l), x = i.simpleMap(t4.yr1, s2.r2l), b = y[1] - y[0], _ = x[1] - x[0];
                h2[1] = (y[1] * (1 - r4) + r4 * x[1] - y[1]) / (y[0] - y[1]) * u2, h2[3] = u2 * (1 - r4 + r4 * _ / b), s2.range[0] = a2.l2r(y[0] * (1 - r4) + r4 * x[0]), s2.range[1] = s2.l2r(y[1] * (1 - r4) + r4 * x[1]);
              } else h2[1] = 0, h2[3] = u2;
              l.drawOne(e3, a2, { skipTitle: true }), l.drawOne(e3, s2, { skipTitle: true }), l.redrawComponents(e3, [a2._id, s2._id]);
              var w = f2 ? c2 / h2[2] : 1, T = d2 ? u2 / h2[3] : 1, M = f2 ? h2[0] : 0, k = d2 ? h2[1] : 0, A = f2 ? h2[0] / h2[2] * c2 : 0, L = d2 ? h2[1] / h2[3] * u2 : 0, S = a2._offset - A, C = s2._offset - L;
              n2.clipRect.call(o.setTranslate, M, k).call(o.setScale, 1 / w, 1 / T), n2.plot.call(o.setTranslate, S, C).call(o.setScale, w, T), o.setPointGroupScale(n2.zoomScalePts, 1 / w, 1 / T), o.setTextPointsScale(n2.zoomScaleTxt, 1 / w, 1 / T);
            }
            l.redrawComponents(e3);
          };
        }, 4392: function(e2, t2, r2) {
          var n = r2(3626).traceIs, a = r2(9666);
          function i(e3) {
            return { v: "x", h: "y" }[e3.orientation || "v"];
          }
          function o(e3, t3) {
            var r3 = i(e3), a2 = n(e3, "box-violin"), o2 = n(e3._fullInput || {}, "candlestick");
            return a2 && !o2 && t3 === r3 && void 0 === e3[r3] && void 0 === e3[r3 + "0"];
          }
          e2.exports = function(e3, t3, r3, l) {
            r3("autotypenumbers", l.autotypenumbersDflt), "-" === r3("type", (l.splomStash || {}).type) && (function(e4, t4) {
              if ("-" === e4.type) {
                var r4, l2 = e4._id, s = l2.charAt(0);
                -1 !== l2.indexOf("scene") && (l2 = s);
                var c = function(e5, t5, r5) {
                  for (var n2 = 0; n2 < e5.length; n2++) {
                    var a2 = e5[n2];
                    if ("splom" === a2.type && a2._length > 0 && (a2["_" + r5 + "axes"] || {})[t5]) return a2;
                    if ((a2[r5 + "axis"] || r5) === t5) {
                      if (o(a2, r5)) return a2;
                      if ((a2[r5] || []).length || a2[r5 + "0"]) return a2;
                    }
                  }
                }(t4, l2, s);
                if (c) if ("histogram" !== c.type || s !== { v: "y", h: "x" }[c.orientation || "v"]) {
                  var u = s + "calendar", f = c[u], d = { noMultiCategory: !n(c, "cartesian") || n(c, "noMultiCategory") };
                  if ("box" === c.type && c._hasPreCompStats && s === { h: "x", v: "y" }[c.orientation || "v"] && (d.noMultiCategory = true), d.autotypenumbers = e4.autotypenumbers, o(c, s)) {
                    var h = i(c), p = [];
                    for (r4 = 0; r4 < t4.length; r4++) {
                      var v = t4[r4];
                      n(v, "box-violin") && (v[s + "axis"] || s) === l2 && (void 0 !== v[h] ? p.push(v[h][0]) : void 0 !== v.name ? p.push(v.name) : p.push("text"), v[u] !== f && (f = void 0));
                    }
                    e4.type = a(p, f, d);
                  } else if ("splom" === c.type) {
                    var g = c.dimensions[c._axesDim[l2]];
                    g.visible && (e4.type = a(g.values, f, d));
                  } else e4.type = a(c[s] || [c[s + "0"]], f, d);
                } else e4.type = "linear";
              }
            }(t3, l.data), "-" === t3.type ? t3.type = "linear" : e3.type = t3.type);
          };
        }, 251: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809);
          function i(e3, t3, r3) {
            var n2, i2, o2, l2 = false;
            if ("data" === t3.type) n2 = e3._fullData[null !== t3.traces ? t3.traces[0] : 0];
            else {
              if ("layout" !== t3.type) return false;
              n2 = e3._fullLayout;
            }
            return i2 = a.nestedProperty(n2, t3.prop).get(), (o2 = r3[t3.type] = r3[t3.type] || {}).hasOwnProperty(t3.prop) && o2[t3.prop] !== i2 && (l2 = true), o2[t3.prop] = i2, { changed: l2, value: i2 };
          }
          function o(e3, t3) {
            var r3 = [], n2 = t3[0], i2 = {};
            if ("string" == typeof n2) i2[n2] = t3[1];
            else {
              if (!a.isPlainObject(n2)) return r3;
              i2 = n2;
            }
            return s(i2, function(e4, t4, n3) {
              r3.push({ type: "layout", prop: e4, value: n3 });
            }, "", 0), r3;
          }
          function l(e3, t3) {
            var r3, n2, i2, o2, l2 = [];
            if (n2 = t3[0], i2 = t3[1], r3 = t3[2], o2 = {}, "string" == typeof n2) o2[n2] = i2;
            else {
              if (!a.isPlainObject(n2)) return l2;
              o2 = n2, void 0 === r3 && (r3 = i2);
            }
            return void 0 === r3 && (r3 = null), s(o2, function(t4, n3, a2) {
              var i3, o3;
              if (Array.isArray(a2)) {
                o3 = a2.slice();
                var s2 = Math.min(o3.length, e3.data.length);
                r3 && (s2 = Math.min(s2, r3.length)), i3 = [];
                for (var c = 0; c < s2; c++) i3[c] = r3 ? r3[c] : c;
              } else o3 = a2, i3 = r3 ? r3.slice() : null;
              if (null === i3) Array.isArray(o3) && (o3 = o3[0]);
              else if (Array.isArray(i3)) {
                if (!Array.isArray(o3)) {
                  var u = o3;
                  o3 = [];
                  for (var f = 0; f < i3.length; f++) o3[f] = u;
                }
                o3.length = Math.min(i3.length, o3.length);
              }
              l2.push({ type: "data", prop: t4, traces: i3, value: o3 });
            }, "", 0), l2;
          }
          function s(e3, t3, r3, n2) {
            Object.keys(e3).forEach(function(i2) {
              var o2 = e3[i2];
              if ("_" !== i2[0]) {
                var l2 = r3 + (n2 > 0 ? "." : "") + i2;
                a.isPlainObject(o2) ? s(o2, t3, l2, n2 + 1) : t3(l2, i2, o2);
              }
            });
          }
          t2.manageCommandObserver = function(e3, r3, n2, o2) {
            var l2 = {}, s2 = true;
            r3 && r3._commandObserver && (l2 = r3._commandObserver), l2.cache || (l2.cache = {}), l2.lookupTable = {};
            var c = t2.hasSimpleAPICommandBindings(e3, n2, l2.lookupTable);
            if (r3 && r3._commandObserver) {
              if (c) return l2;
              if (r3._commandObserver.remove) return r3._commandObserver.remove(), r3._commandObserver = null, l2;
            }
            if (c) {
              i(e3, c, l2.cache), l2.check = function() {
                if (s2) {
                  var t3 = i(e3, c, l2.cache);
                  return t3.changed && o2 && void 0 !== l2.lookupTable[t3.value] && (l2.disable(), Promise.resolve(o2({ value: t3.value, type: c.type, prop: c.prop, traces: c.traces, index: l2.lookupTable[t3.value] })).then(l2.enable, l2.enable)), t3.changed;
                }
              };
              for (var u = ["plotly_relayout", "plotly_redraw", "plotly_restyle", "plotly_update", "plotly_animatingframe", "plotly_afterplot"], f = 0; f < u.length; f++) e3._internalOn(u[f], l2.check);
              l2.remove = function() {
                for (var t3 = 0; t3 < u.length; t3++) e3._removeInternalListener(u[t3], l2.check);
              };
            } else a.log("Unable to automatically bind plot updates to API command"), l2.lookupTable = {}, l2.remove = function() {
            };
            return l2.disable = function() {
              s2 = false;
            }, l2.enable = function() {
              s2 = true;
            }, r3 && (r3._commandObserver = l2), l2;
          }, t2.hasSimpleAPICommandBindings = function(e3, r3, n2) {
            var a2, i2, o2 = r3.length;
            for (a2 = 0; a2 < o2; a2++) {
              var l2, s2 = r3[a2], c = s2.method, u = s2.args;
              if (Array.isArray(u) || (u = []), !c) return false;
              var f = t2.computeAPICommandBindings(e3, c, u);
              if (1 !== f.length) return false;
              if (i2) {
                if ((l2 = f[0]).type !== i2.type) return false;
                if (l2.prop !== i2.prop) return false;
                if (Array.isArray(i2.traces)) {
                  if (!Array.isArray(l2.traces)) return false;
                  l2.traces.sort();
                  for (var d = 0; d < i2.traces.length; d++) if (i2.traces[d] !== l2.traces[d]) return false;
                } else if (l2.prop !== i2.prop) return false;
              } else i2 = f[0], Array.isArray(i2.traces) && i2.traces.sort();
              var h = (l2 = f[0]).value;
              if (Array.isArray(h)) {
                if (1 !== h.length) return false;
                h = h[0];
              }
              n2 && (n2[h] = a2);
            }
            return i2;
          }, t2.executeAPICommand = function(e3, t3, r3) {
            if ("skip" === t3) return Promise.resolve();
            var i2 = n.apiMethodRegistry[t3], o2 = [e3];
            Array.isArray(r3) || (r3 = []);
            for (var l2 = 0; l2 < r3.length; l2++) o2.push(r3[l2]);
            return i2.apply(null, o2).catch(function(e4) {
              return a.warn("API call to Plotly." + t3 + " rejected.", e4), Promise.reject(e4);
            });
          }, t2.computeAPICommandBindings = function(e3, t3, r3) {
            var n2;
            switch (Array.isArray(r3) || (r3 = []), t3) {
              case "restyle":
                n2 = l(e3, r3);
                break;
              case "relayout":
                n2 = o(0, r3);
                break;
              case "update":
                n2 = l(e3, [r3[0], r3[2]]).concat(o(0, [r3[1]]));
                break;
              case "animate":
                n2 = function(e4, t4) {
                  return Array.isArray(t4[0]) && 1 === t4[0].length && -1 !== ["string", "number"].indexOf(typeof t4[0][0]) ? [{ type: "layout", prop: "_currentFrame", value: t4[0][0].toString() }] : [];
                }(0, r3);
                break;
              default:
                n2 = [];
            }
            return n2;
          };
        }, 3792: function(e2, t2, r2) {
          var n = r2(3049).extendFlat;
          t2.u = function(e3, t3) {
            t3 = t3 || {};
            var r3 = { valType: "info_array", editType: (e3 = e3 || {}).editType, items: [{ valType: "number", min: 0, max: 1, editType: e3.editType }, { valType: "number", min: 0, max: 1, editType: e3.editType }], dflt: [0, 1] }, a = (e3.name && e3.name, e3.trace, t3.description && t3.description, { x: n({}, r3, {}), y: n({}, r3, {}), editType: e3.editType });
            return e3.noGridCell || (a.row = { valType: "integer", min: 0, dflt: 0, editType: e3.editType }, a.column = { valType: "integer", min: 0, dflt: 0, editType: e3.editType }), a;
          }, t2.N = function(e3, t3, r3, n2) {
            var a = n2 && n2.x || [0, 1], i = n2 && n2.y || [0, 1], o = t3.grid;
            if (o) {
              var l = r3("domain.column");
              void 0 !== l && (l < o.columns ? a = o._domains.x[l] : delete e3.domain.column);
              var s = r3("domain.row");
              void 0 !== s && (s < o.rows ? i = o._domains.y[s] : delete e3.domain.row);
            }
            var c = r3("domain.x", a), u = r3("domain.y", i);
            c[0] < c[1] || (e3.domain.x = a.slice()), u[0] < u[1] || (e3.domain.y = i.slice());
          };
        }, 337: function(e2) {
          e2.exports = function(e3) {
            var t2 = e3.variantValues, r2 = e3.editType, n = e3.colorEditType;
            void 0 === n && (n = r2);
            var a = { editType: r2, valType: "integer", min: 1, max: 1e3, extras: ["normal", "bold"], dflt: "normal" };
            e3.noNumericWeightValues && (a.valType = "enumerated", a.values = a.extras, a.extras = void 0, a.min = void 0, a.max = void 0);
            var i = { family: { valType: "string", noBlank: true, strict: true, editType: r2 }, size: { valType: "number", min: 1, editType: r2 }, color: { valType: "color", editType: n }, weight: a, style: { editType: r2, valType: "enumerated", values: ["normal", "italic"], dflt: "normal" }, variant: e3.noFontVariant ? void 0 : { editType: r2, valType: "enumerated", values: t2 || ["normal", "small-caps", "all-small-caps", "all-petite-caps", "petite-caps", "unicase"], dflt: "normal" }, textcase: e3.noFontTextcase ? void 0 : { editType: r2, valType: "enumerated", values: ["normal", "word caps", "upper", "lower"], dflt: "normal" }, lineposition: e3.noFontLineposition ? void 0 : { editType: r2, valType: "flaglist", flags: ["under", "over", "through"], extras: ["none"], dflt: "none" }, shadow: e3.noFontShadow ? void 0 : { editType: r2, valType: "string", dflt: e3.autoShadowDflt ? "auto" : "none" }, editType: r2 };
            return e3.autoSize && (i.size.dflt = "auto"), e3.autoColor && (i.color.dflt = "auto"), e3.arrayOk && (i.family.arrayOk = true, i.weight.arrayOk = true, i.style.arrayOk = true, e3.noFontVariant || (i.variant.arrayOk = true), e3.noFontTextcase || (i.textcase.arrayOk = true), e3.noFontLineposition || (i.lineposition.arrayOk = true), e3.noFontShadow || (i.shadow.arrayOk = true), i.size.arrayOk = true, i.color.arrayOk = true), i;
          };
        }, 8935: function(e2) {
          e2.exports = { _isLinkedToArray: "frames_entry", group: { valType: "string" }, name: { valType: "string" }, traces: { valType: "any" }, baseframe: { valType: "string" }, data: { valType: "any" }, layout: { valType: "any" } };
        }, 4173: function(e2, t2, r2) {
          var n = r2(3626);
          r2(4826).SUBPLOT_PATTERN;
          t2.eV = function(e3, t3, r3) {
            var a, i = [], o = [];
            if (!(a = "string" == typeof t3 ? n.getModule(t3).plot : "function" == typeof t3 ? t3 : t3.plot)) return [i, e3];
            for (var l = r3, s = 0; s < e3.length; s++) {
              var c = e3[s], u = c[0].trace, f = void 0 !== u.zorder;
              true === u.visible && 0 !== u._length && (!u._module || u._module.plot !== a || f && u.zorder !== l ? o.push(c) : i.push(c));
            }
            return [i, o];
          };
        }, 5802: function(e2) {
          function t2(e3, t3) {
            var r2, n, a = [0, 0, 0, 0];
            for (r2 = 0; r2 < 4; ++r2) for (n = 0; n < 4; ++n) a[n] += e3[4 * r2 + n] * t3[r2];
            return a;
          }
          e2.exports = function(e3, r2) {
            return t2(e3.projection, t2(e3.view, t2(e3.model, [r2[0], r2[1], r2[2], 1])));
          };
        }, 6704: function(e2, t2, r2) {
          var n = r2(337), a = r2(9722), i = r2(229), o = r2(4101), l = r2(2307), s = r2(7891), c = r2(3049).extendFlat, u = n({ editType: "calc" });
          u.family.dflt = '"Open Sans", verdana, arial, sans-serif', u.size.dflt = 12, u.color.dflt = i.defaultLine, e2.exports = { font: u, title: { text: { valType: "string", editType: "layoutstyle" }, font: n({ editType: "layoutstyle" }), subtitle: { text: { valType: "string", editType: "layoutstyle" }, font: n({ editType: "layoutstyle" }), editType: "layoutstyle" }, xref: { valType: "enumerated", dflt: "container", values: ["container", "paper"], editType: "layoutstyle" }, yref: { valType: "enumerated", dflt: "container", values: ["container", "paper"], editType: "layoutstyle" }, x: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "layoutstyle" }, y: { valType: "number", min: 0, max: 1, dflt: "auto", editType: "layoutstyle" }, xanchor: { valType: "enumerated", dflt: "auto", values: ["auto", "left", "center", "right"], editType: "layoutstyle" }, yanchor: { valType: "enumerated", dflt: "auto", values: ["auto", "top", "middle", "bottom"], editType: "layoutstyle" }, pad: c(s({ editType: "layoutstyle" }), {}), automargin: { valType: "boolean", dflt: false, editType: "plot" }, editType: "layoutstyle" }, uniformtext: { mode: { valType: "enumerated", values: [false, "hide", "show"], dflt: false, editType: "plot" }, minsize: { valType: "number", min: 0, dflt: 0, editType: "plot" }, editType: "plot" }, autosize: { valType: "boolean", dflt: false, editType: "none" }, width: { valType: "number", min: 10, dflt: 700, editType: "plot" }, height: { valType: "number", min: 10, dflt: 450, editType: "plot" }, minreducedwidth: { valType: "number", min: 2, dflt: 64, editType: "plot" }, minreducedheight: { valType: "number", min: 2, dflt: 64, editType: "plot" }, margin: { l: { valType: "number", min: 0, dflt: 80, editType: "plot" }, r: { valType: "number", min: 0, dflt: 80, editType: "plot" }, t: { valType: "number", min: 0, dflt: 100, editType: "plot" }, b: { valType: "number", min: 0, dflt: 80, editType: "plot" }, pad: { valType: "number", min: 0, dflt: 0, editType: "plot" }, autoexpand: { valType: "boolean", dflt: true, editType: "plot" }, editType: "plot" }, computed: { valType: "any", editType: "none" }, paper_bgcolor: { valType: "color", dflt: i.background, editType: "plot" }, plot_bgcolor: { valType: "color", dflt: i.background, editType: "layoutstyle" }, autotypenumbers: { valType: "enumerated", values: ["convert types", "strict"], dflt: "convert types", editType: "calc" }, separators: { valType: "string", editType: "plot" }, hidesources: { valType: "boolean", dflt: false, editType: "plot" }, showlegend: { valType: "boolean", editType: "legend" }, colorway: { valType: "colorlist", dflt: i.defaults, editType: "calc" }, datarevision: { valType: "any", editType: "calc" }, uirevision: { valType: "any", editType: "none" }, editrevision: { valType: "any", editType: "none" }, selectionrevision: { valType: "any", editType: "none" }, template: { valType: "any", editType: "calc" }, newshape: o.newshape, activeshape: o.activeshape, newselection: l.newselection, activeselection: l.activeselection, meta: { valType: "any", arrayOk: true, editType: "plot" }, transition: c({}, a.transition, { editType: "none" }), _deprecated: { title: { valType: "string", editType: "layoutstyle" }, titlefont: n({ editType: "layoutstyle" }) } };
        }, 7891: function(e2) {
          e2.exports = function(e3) {
            var t2 = e3.editType;
            return { t: { valType: "number", dflt: 0, editType: t2 }, r: { valType: "number", dflt: 0, editType: t2 }, b: { valType: "number", dflt: 0, editType: t2 }, l: { valType: "number", dflt: 0, editType: t2 }, editType: t2 };
          };
        }, 4122: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2696).de, i = r2(6464).OE, o = r2(721), l = r2(3229), s = r2(3626), c = r2(7297), u = r2(8032), f = r2(4809), d = r2(8766), h = r2(3821).BADNUM, p = r2(5975), v = r2(8534).clearOutline, g = r2(6667), m = r2(9722), y = r2(8935), x = r2(4173).eV, b = f.relinkPrivateKeys, _ = f._, w = e2.exports = {};
          f.extendFlat(w, s), w.attributes = r2(9829), w.attributes.type.values = w.allTypes, w.fontAttrs = r2(337), w.layoutAttributes = r2(6704);
          var T = w.transformsRegistry, M = r2(251);
          w.executeAPICommand = M.executeAPICommand, w.computeAPICommandBindings = M.computeAPICommandBindings, w.manageCommandObserver = M.manageCommandObserver, w.hasSimpleAPICommandBindings = M.hasSimpleAPICommandBindings, w.redrawText = function(e3) {
            return e3 = f.getGraphDiv(e3), new Promise(function(t3) {
              setTimeout(function() {
                e3._fullLayout && (s.getComponentMethod("annotations", "draw")(e3), s.getComponentMethod("legend", "draw")(e3), s.getComponentMethod("colorbar", "draw")(e3), t3(w.previousPromises(e3)));
              }, 300);
            });
          }, w.resize = function(e3) {
            var t3;
            e3 = f.getGraphDiv(e3);
            var r3 = new Promise(function(r4, n2) {
              e3 && !f.isHidden(e3) || n2(new Error("Resize must be passed a displayed plot div element.")), e3._redrawTimer && clearTimeout(e3._redrawTimer), e3._resolveResize && (t3 = e3._resolveResize), e3._resolveResize = r4, e3._redrawTimer = setTimeout(function() {
                if (!e3.layout || e3.layout.width && e3.layout.height || f.isHidden(e3)) r4(e3);
                else {
                  delete e3.layout.width, delete e3.layout.height;
                  var t4 = e3.changed;
                  e3.autoplay = true, s.call("relayout", e3, { autosize: true }).then(function() {
                    e3.changed = t4, e3._resolveResize === r4 && (delete e3._resolveResize, r4(e3));
                  });
                }
              }, 100);
            });
            return t3 && t3(r3), r3;
          }, w.previousPromises = function(e3) {
            if ((e3._promises || []).length) return Promise.all(e3._promises).then(function() {
              e3._promises = [];
            });
          }, w.addLinks = function(e3) {
            if (e3._context.showLink || e3._context.showSources) {
              var t3 = e3._fullLayout, r3 = f.ensureSingle(t3._paper, "text", "js-plot-link-container", function(e4) {
                e4.style({ "font-family": '"Open Sans", Arial, sans-serif', "font-size": "12px", fill: d.defaultLine, "pointer-events": "all" }).each(function() {
                  var e5 = n.select(this);
                  e5.append("tspan").classed("js-link-to-tool", true), e5.append("tspan").classed("js-link-spacer", true), e5.append("tspan").classed("js-sourcelinks", true);
                });
              }), a2 = r3.node(), i2 = { y: t3._paper.attr("height") - 9 };
              document.body.contains(a2) && a2.getComputedTextLength() >= t3.width - 20 ? (i2["text-anchor"] = "start", i2.x = 5) : (i2["text-anchor"] = "end", i2.x = t3._paper.attr("width") - 7), r3.attr(i2);
              var o2 = r3.select(".js-link-to-tool"), l2 = r3.select(".js-link-spacer"), s2 = r3.select(".js-sourcelinks");
              e3._context.showSources && e3._context.showSources(e3), e3._context.showLink && function(e4, t4) {
                t4.text("");
                var r4 = t4.append("a").attr({ "xlink:xlink:href": "#", class: "link--impt link--embedview", "font-weight": "bold" }).text(e4._context.linkText + " " + String.fromCharCode(187));
                if (e4._context.sendData) r4.on("click", function() {
                  w.sendDataToCloud(e4);
                });
                else {
                  var n2 = window.location.pathname.split("/"), a3 = window.location.search;
                  r4.attr({ "xlink:xlink:show": "new", "xlink:xlink:href": "/" + n2[2].split(".")[0] + "/" + n2[1] + a3 });
                }
              }(e3, o2), l2.text(o2.text() && s2.text() ? " - " : "");
            }
          }, w.sendDataToCloud = function(e3) {
            var t3 = (window.PLOTLYENV || {}).BASE_URL || e3._context.plotlyServerURL;
            if (t3) {
              e3.emit("plotly_beforeexport");
              var r3 = n.select(e3).append("div").attr("id", "hiddenform").style("display", "none"), a2 = r3.append("form").attr({ action: t3 + "/external", method: "post", target: "_blank" });
              return a2.append("input").attr({ type: "text", name: "data" }).node().value = w.graphJson(e3, false, "keepdata"), a2.node().submit(), r3.remove(), e3.emit("plotly_afterexport"), false;
            }
          };
          var k = ["days", "shortDays", "months", "shortMonths", "periods", "dateTime", "date", "time", "decimal", "thousands", "grouping", "currency"], A = ["year", "month", "dayMonth", "dayMonthYear"];
          function L(e3, t3) {
            var r3 = e3._context.locale;
            r3 || (r3 = "en-US");
            var n2 = false, a2 = {};
            function i2(e4) {
              for (var r4 = true, i3 = 0; i3 < t3.length; i3++) {
                var o3 = t3[i3];
                a2[o3] || (e4[o3] ? a2[o3] = e4[o3] : r4 = false);
              }
              r4 && (n2 = true);
            }
            for (var o2 = 0; o2 < 2; o2++) {
              for (var l2 = e3._context.locales, c2 = 0; c2 < 2; c2++) {
                var u2 = (l2[r3] || {}).format;
                if (u2 && (i2(u2), n2)) break;
                l2 = s.localeRegistry;
              }
              var f2 = r3.split("-")[0];
              if (n2 || f2 === r3) break;
              r3 = f2;
            }
            return n2 || i2(s.localeRegistry.en.format), a2;
          }
          function S(e3, t3) {
            var r3 = { _fullLayout: t3 }, n2 = "x" === e3._id.charAt(0), a2 = e3._mainAxis._anchorAxis, i2 = "", o2 = "", l2 = "";
            if (a2 && (l2 = a2._mainAxis._id, i2 = n2 ? e3._id + l2 : l2 + e3._id), !i2 || !t3._plots[i2]) {
              i2 = "";
              for (var s2 = e3._counterAxes, c2 = 0; c2 < s2.length; c2++) {
                var u2 = s2[c2], f2 = n2 ? e3._id + u2 : u2 + e3._id;
                o2 || (o2 = f2);
                var d2 = p.getFromId(r3, u2);
                if (l2 && d2.overlaying === l2) {
                  i2 = f2;
                  break;
                }
              }
            }
            return i2 || o2;
          }
          function C(e3) {
            var t3 = e3.transforms;
            if (Array.isArray(t3) && t3.length) for (var r3 = 0; r3 < t3.length; r3++) {
              var n2 = t3[r3], a2 = n2._module || T[n2.type];
              if (a2 && a2.makesData) return true;
            }
            return false;
          }
          function O(e3, t3, r3, n2) {
            for (var a2 = e3.transforms, i2 = [e3], o2 = 0; o2 < a2.length; o2++) {
              var l2 = a2[o2], s2 = T[l2.type];
              s2 && s2.transform && (i2 = s2.transform(i2, { transform: l2, fullTrace: e3, fullData: t3, layout: r3, fullLayout: n2, transformIndex: o2 }));
            }
            return i2;
          }
          function D(e3) {
            return "string" == typeof e3 && "px" === e3.substr(e3.length - 2) && parseFloat(e3);
          }
          function P(e3) {
            var t3 = e3.margin;
            if (!e3._size) {
              var r3 = e3._size = { l: Math.round(t3.l), r: Math.round(t3.r), t: Math.round(t3.t), b: Math.round(t3.b), p: Math.round(t3.pad) };
              r3.w = Math.round(e3.width) - r3.l - r3.r, r3.h = Math.round(e3.height) - r3.t - r3.b;
            }
            e3._pushmargin || (e3._pushmargin = {}), e3._pushmarginIds || (e3._pushmarginIds = {}), e3._reservedMargin || (e3._reservedMargin = {});
          }
          w.supplyDefaults = function(e3, t3) {
            var r3 = t3 && t3.skipUpdateCalc, n2 = e3._fullLayout || {};
            if (n2._skipDefaults) delete n2._skipDefaults;
            else {
              var o2, l2 = e3._fullLayout = {}, c2 = e3.layout || {}, u2 = e3._fullData || [], d2 = e3._fullData = [], h2 = e3.data || [], p2 = e3.calcdata || [], g2 = e3._context || {};
              e3._transitionData || w.createTransitionData(e3), l2._dfltTitle = { plot: _(e3, "Click to enter Plot title"), subtitle: _(e3, "Click to enter Plot subtitle"), x: _(e3, "Click to enter X axis title"), y: _(e3, "Click to enter Y axis title"), colorbar: _(e3, "Click to enter Colorscale title"), annotation: _(e3, "new text") }, l2._traceWord = _(e3, "trace");
              var m2 = L(e3, k);
              if (l2._mapboxAccessToken = g2.mapboxAccessToken, n2._initialAutoSizeIsDone) {
                var y2 = n2.width, x2 = n2.height;
                w.supplyLayoutGlobalDefaults(c2, l2, m2), c2.width || (l2.width = y2), c2.height || (l2.height = x2), w.sanitizeMargins(l2);
              } else {
                w.supplyLayoutGlobalDefaults(c2, l2, m2);
                var T2 = !c2.width || !c2.height, M2 = l2.autosize, S2 = g2.autosizable;
                T2 && (M2 || S2) ? w.plotAutoSize(e3, c2, l2) : T2 && w.sanitizeMargins(l2), !M2 && T2 && (c2.width = l2.width, c2.height = l2.height);
              }
              l2._d3locale = function(e4, t4) {
                return e4.decimal = t4.charAt(0), e4.thousands = t4.charAt(1), { numberFormat: function(t5) {
                  try {
                    t5 = i(e4).format(f.adjustFormat(t5));
                  } catch (e5) {
                    return f.warnBadFormat(t5), f.noFormat;
                  }
                  return t5;
                }, timeFormat: a(e4).utcFormat };
              }(m2, l2.separators), l2._extraFormat = L(e3, A), l2._initialAutoSizeIsDone = true, l2._dataLength = h2.length, l2._modules = [], l2._visibleModules = [], l2._basePlotModules = [];
              var C2 = l2._subplots = function() {
                var e4, t4, r4 = s.collectableSubplotTypes, n3 = {};
                if (!r4) {
                  r4 = [];
                  var a2 = s.subplotsRegistry;
                  for (var i2 in a2) {
                    var o3 = a2[i2].attr;
                    if (o3 && (r4.push(i2), Array.isArray(o3))) for (t4 = 0; t4 < o3.length; t4++) f.pushUnique(r4, o3[t4]);
                  }
                }
                for (e4 = 0; e4 < r4.length; e4++) n3[r4[e4]] = [];
                return n3;
              }(), O2 = l2._splomAxes = { x: {}, y: {} }, D2 = l2._splomSubplots = {};
              l2._splomGridDflt = {}, l2._scatterStackOpts = {}, l2._firstScatter = {}, l2._alignmentOpts = {}, l2._colorAxes = {}, l2._requestRangeslider = {}, l2._traceUids = function(e4, t4) {
                var r4, n3, a2 = t4.length, i2 = [];
                for (r4 = 0; r4 < e4.length; r4++) {
                  var o3 = e4[r4]._fullInput;
                  o3 !== n3 && i2.push(o3), n3 = o3;
                }
                var l3 = i2.length, s2 = new Array(a2), c3 = {};
                function u3(e5, t5) {
                  s2[t5] = e5, c3[e5] = 1;
                }
                function d3(e5, t5) {
                  if (e5 && "string" == typeof e5 && !c3[e5]) return u3(e5, t5), true;
                }
                for (r4 = 0; r4 < a2; r4++) {
                  var h3 = t4[r4].uid;
                  "number" == typeof h3 && (h3 = String(h3)), d3(h3, r4) || r4 < l3 && d3(i2[r4].uid, r4) || u3(f.randstr(c3), r4);
                }
                return s2;
              }(u2, h2), l2._globalTransforms = (e3._context || {}).globalTransforms, w.supplyDataDefaults(h2, d2, c2, l2);
              var z2 = Object.keys(O2.x), I2 = Object.keys(O2.y);
              if (z2.length > 1 && I2.length > 1) {
                for (s.getComponentMethod("grid", "sizeDefaults")(c2, l2), o2 = 0; o2 < z2.length; o2++) f.pushUnique(C2.xaxis, z2[o2]);
                for (o2 = 0; o2 < I2.length; o2++) f.pushUnique(C2.yaxis, I2[o2]);
                for (var E2 in D2) f.pushUnique(C2.cartesian, E2);
              }
              if (l2._has = w._hasPlotType.bind(l2), u2.length === d2.length) for (o2 = 0; o2 < d2.length; o2++) b(d2[o2], u2[o2]);
              w.supplyLayoutModuleDefaults(c2, l2, d2, e3._transitionData);
              var R2 = l2._visibleModules, N2 = [];
              for (o2 = 0; o2 < R2.length; o2++) {
                var F = R2[o2].crossTraceDefaults;
                F && f.pushUnique(N2, F);
              }
              for (o2 = 0; o2 < N2.length; o2++) N2[o2](d2, l2);
              l2._hasOnlyLargeSploms = 1 === l2._basePlotModules.length && "splom" === l2._basePlotModules[0].name && z2.length > 15 && I2.length > 15 && 0 === l2.shapes.length && 0 === l2.images.length, w.linkSubplots(d2, l2, u2, n2), w.cleanPlot(d2, l2, u2, n2);
              var H = !(!n2._has || !n2._has("gl2d")), B = !(!l2._has || !l2._has("gl2d")), j = !(!n2._has || !n2._has("cartesian")) || H, Y = !(!l2._has || !l2._has("cartesian")) || B;
              j && !Y ? n2._bgLayer.remove() : Y && !j && (l2._shouldCreateBgLayer = true), n2._zoomlayer && !e3._dragging && v({ _fullLayout: n2 }), function(e4, t4) {
                var r4, n3 = [];
                t4.meta && (r4 = t4._meta = { meta: t4.meta, layout: { meta: t4.meta } });
                for (var a2 = 0; a2 < e4.length; a2++) {
                  var i2 = e4[a2];
                  i2.meta ? n3[i2.index] = i2._meta = { meta: i2.meta } : t4.meta && (i2._meta = { meta: t4.meta }), t4.meta && (i2._meta.layout = { meta: t4.meta });
                }
                n3.length && (r4 || (r4 = t4._meta = {}), r4.data = n3);
              }(d2, l2), b(l2, n2), s.getComponentMethod("colorscale", "crossTraceDefaults")(d2, l2), l2._preGUI || (l2._preGUI = {}), l2._tracePreGUI || (l2._tracePreGUI = {});
              var V, U = l2._tracePreGUI, q = {};
              for (V in U) q[V] = "old";
              for (o2 = 0; o2 < d2.length; o2++) q[V = d2[o2]._fullInput.uid] || (U[V] = {}), q[V] = "new";
              for (V in q) "old" === q[V] && delete U[V];
              P(l2), s.getComponentMethod("rangeslider", "makeData")(l2), r3 || p2.length !== d2.length || w.supplyDefaultsUpdateCalc(p2, d2);
            }
          }, w.supplyDefaultsUpdateCalc = function(e3, t3) {
            for (var r3 = 0; r3 < t3.length; r3++) {
              var n2 = t3[r3], a2 = (e3[r3] || [])[0];
              if (a2 && a2.trace) {
                var i2 = a2.trace;
                if (i2._hasCalcTransform) {
                  var o2, l2, s2, c2 = i2._arrayAttrs;
                  for (o2 = 0; o2 < c2.length; o2++) l2 = c2[o2], s2 = f.nestedProperty(i2, l2).get().slice(), f.nestedProperty(n2, l2).set(s2);
                }
                a2.trace = n2;
              }
            }
          }, w.createTransitionData = function(e3) {
            e3._transitionData || (e3._transitionData = {}), e3._transitionData._frames || (e3._transitionData._frames = []), e3._transitionData._frameHash || (e3._transitionData._frameHash = {}), e3._transitionData._counter || (e3._transitionData._counter = 0), e3._transitionData._interruptCallbacks || (e3._transitionData._interruptCallbacks = []);
          }, w._hasPlotType = function(e3) {
            var t3, r3 = this._basePlotModules || [];
            for (t3 = 0; t3 < r3.length; t3++) if (r3[t3].name === e3) return true;
            var n2 = this._modules || [];
            for (t3 = 0; t3 < n2.length; t3++) {
              var a2 = n2[t3].name;
              if (a2 === e3) return true;
              var i2 = s.modules[a2];
              if (i2 && i2.categories[e3]) return true;
            }
            return false;
          }, w.cleanPlot = function(e3, t3, r3, n2) {
            var a2, i2, o2 = n2._basePlotModules || [];
            for (a2 = 0; a2 < o2.length; a2++) {
              var l2 = o2[a2];
              l2.clean && l2.clean(e3, t3, r3, n2);
            }
            var s2 = n2._has && n2._has("gl"), c2 = t3._has && t3._has("gl");
            s2 && !c2 && void 0 !== n2._glcontainer && (n2._glcontainer.selectAll(".gl-canvas").remove(), n2._glcontainer.selectAll(".no-webgl").remove(), n2._glcanvas = null);
            var u2 = !!n2._infolayer;
            e: for (a2 = 0; a2 < r3.length; a2++) {
              var f2 = r3[a2].uid;
              for (i2 = 0; i2 < e3.length; i2++) if (f2 === e3[i2].uid) continue e;
              u2 && n2._infolayer.select(".cb" + f2).remove();
            }
          }, w.linkSubplots = function(e3, t3, r3, n2) {
            var a2, i2, o2 = n2._plots || {}, l2 = t3._plots = {}, c2 = t3._subplots, u2 = { _fullData: e3, _fullLayout: t3 }, d2 = c2.cartesian.concat(c2.gl2d || []);
            for (a2 = 0; a2 < d2.length; a2++) {
              var h2, v2 = d2[a2], g2 = o2[v2], m2 = p.getFromId(u2, v2, "x"), y2 = p.getFromId(u2, v2, "y");
              for (g2 ? h2 = l2[v2] = g2 : (h2 = l2[v2] = {}).id = v2, m2._counterAxes.push(y2._id), y2._counterAxes.push(m2._id), m2._subplotsWith.push(v2), y2._subplotsWith.push(v2), h2.xaxis = m2, h2.yaxis = y2, h2._hasClipOnAxisFalse = false, i2 = 0; i2 < e3.length; i2++) {
                var x2 = e3[i2];
                if (x2.xaxis === h2.xaxis._id && x2.yaxis === h2.yaxis._id && false === x2.cliponaxis) {
                  h2._hasClipOnAxisFalse = true;
                  break;
                }
              }
            }
            var b2, _2 = p.list(u2, null, true);
            for (a2 = 0; a2 < _2.length; a2++) {
              var w2 = null;
              (b2 = _2[a2]).overlaying && (w2 = p.getFromId(u2, b2.overlaying)) && w2.overlaying && (b2.overlaying = false, w2 = null), b2._mainAxis = w2 || b2, w2 && (b2.domain = w2.domain.slice()), b2._anchorAxis = "free" === b2.anchor ? null : p.getFromId(u2, b2.anchor);
            }
            for (a2 = 0; a2 < _2.length; a2++) if ((b2 = _2[a2])._counterAxes.sort(p.idSort), b2._subplotsWith.sort(f.subplotSort), b2._mainSubplot = S(b2, t3), b2._counterAxes.length && (b2.spikemode && -1 !== b2.spikemode.indexOf("across") || b2.automargin && b2.mirror && "free" !== b2.anchor || s.getComponentMethod("rangeslider", "isVisible")(b2))) {
              var T2 = 1, M2 = 0;
              for (i2 = 0; i2 < b2._counterAxes.length; i2++) {
                var k2 = p.getFromId(u2, b2._counterAxes[i2]);
                T2 = Math.min(T2, k2.domain[0]), M2 = Math.max(M2, k2.domain[1]);
              }
              T2 < M2 && (b2._counterDomainMin = T2, b2._counterDomainMax = M2);
            }
          }, w.clearExpandedTraceDefaultColors = function(e3) {
            var t3, r3, n2;
            for (r3 = [], (t3 = e3._module._colorAttrs) || (e3._module._colorAttrs = t3 = [], c.crawl(e3._module.attributes, function(e4, n3, a2, i2) {
              r3[i2] = n3, r3.length = i2 + 1, "color" === e4.valType && void 0 === e4.dflt && t3.push(r3.join("."));
            })), n2 = 0; n2 < t3.length; n2++) f.nestedProperty(e3, "_input." + t3[n2]).get() || f.nestedProperty(e3, t3[n2]).set(null);
          }, w.supplyDataDefaults = function(e3, t3, r3, n2) {
            var a2, i2, o2, l2 = n2._modules, c2 = n2._visibleModules, d2 = n2._basePlotModules, h2 = 0, p2 = 0;
            function v2(e4) {
              t3.push(e4);
              var r4 = e4._module;
              r4 && (f.pushUnique(l2, r4), true === e4.visible && f.pushUnique(c2, r4), f.pushUnique(d2, e4._module.basePlotModule), h2++, false !== e4._input.visible && p2++);
            }
            n2._transformModules = [];
            var g2 = {}, m2 = [], y2 = (r3.template || {}).data || {}, x2 = u.traceTemplater(y2);
            for (a2 = 0; a2 < e3.length; a2++) {
              if (o2 = e3[a2], (i2 = x2.newTrace(o2)).uid = n2._traceUids[a2], w.supplyTraceDefaults(o2, i2, p2, n2, a2), i2.index = a2, i2._input = o2, i2._expandedIndex = h2, i2.transforms && i2.transforms.length) for (var _2 = false !== o2.visible && false === i2.visible, T2 = O(i2, t3, r3, n2), M2 = 0; M2 < T2.length; M2++) {
                var k2 = T2[M2], A2 = { _template: i2._template, type: i2.type, uid: i2.uid + M2 };
                _2 && false === k2.visible && delete k2.visible, w.supplyTraceDefaults(k2, A2, h2, n2, a2), b(A2, k2), A2.index = a2, A2._input = o2, A2._fullInput = i2, A2._expandedIndex = h2, A2._expandedInput = k2, v2(A2);
              }
              else i2._fullInput = i2, i2._expandedInput = i2, v2(i2);
              s.traceIs(i2, "carpetAxis") && (g2[i2.carpet] = i2), s.traceIs(i2, "carpetDependent") && m2.push(a2);
            }
            for (a2 = 0; a2 < m2.length; a2++) if ((i2 = t3[m2[a2]]).visible) {
              var L2 = g2[i2.carpet];
              i2._carpet = L2, L2 && L2.visible ? (i2.xaxis = L2.xaxis, i2.yaxis = L2.yaxis) : i2.visible = false;
            }
          }, w.supplyAnimationDefaults = function(e3) {
            var t3;
            e3 = e3 || {};
            var r3 = {};
            function n2(t4, n3) {
              return f.coerce(e3 || {}, r3, m, t4, n3);
            }
            if (n2("mode"), n2("direction"), n2("fromcurrent"), Array.isArray(e3.frame)) for (r3.frame = [], t3 = 0; t3 < e3.frame.length; t3++) r3.frame[t3] = w.supplyAnimationFrameDefaults(e3.frame[t3] || {});
            else r3.frame = w.supplyAnimationFrameDefaults(e3.frame || {});
            if (Array.isArray(e3.transition)) for (r3.transition = [], t3 = 0; t3 < e3.transition.length; t3++) r3.transition[t3] = w.supplyAnimationTransitionDefaults(e3.transition[t3] || {});
            else r3.transition = w.supplyAnimationTransitionDefaults(e3.transition || {});
            return r3;
          }, w.supplyAnimationFrameDefaults = function(e3) {
            var t3 = {};
            function r3(r4, n2) {
              return f.coerce(e3 || {}, t3, m.frame, r4, n2);
            }
            return r3("duration"), r3("redraw"), t3;
          }, w.supplyAnimationTransitionDefaults = function(e3) {
            var t3 = {};
            function r3(r4, n2) {
              return f.coerce(e3 || {}, t3, m.transition, r4, n2);
            }
            return r3("duration"), r3("easing"), t3;
          }, w.supplyFrameDefaults = function(e3) {
            var t3 = {};
            function r3(r4, n2) {
              return f.coerce(e3, t3, y, r4, n2);
            }
            return r3("group"), r3("name"), r3("traces"), r3("baseframe"), r3("data"), r3("layout"), t3;
          }, w.supplyTraceDefaults = function(e3, t3, r3, n2, a2) {
            var i2, o2 = n2.colorway || d.defaults, l2 = o2[r3 % o2.length];
            function c2(r4, n3) {
              return f.coerce(e3, t3, w.attributes, r4, n3);
            }
            var u2 = c2("visible");
            c2("type"), c2("name", n2._traceWord + " " + a2), c2("uirevision", n2.uirevision);
            var h2 = w.getModule(t3);
            if (t3._module = h2, h2) {
              var p2 = h2.basePlotModule, v2 = p2.attr, g2 = p2.attributes;
              if (v2 && g2) {
                var m2 = n2._subplots, y2 = "";
                if (u2 || "gl2d" !== p2.name) {
                  if (Array.isArray(v2)) for (i2 = 0; i2 < v2.length; i2++) {
                    var x2 = v2[i2], b2 = f.coerce(e3, t3, g2, x2);
                    m2[x2] && f.pushUnique(m2[x2], b2), y2 += b2;
                  }
                  else y2 = f.coerce(e3, t3, g2, v2);
                  m2[p2.name] && f.pushUnique(m2[p2.name], y2);
                }
              }
            }
            if (u2) {
              if (c2("customdata"), c2("ids"), c2("meta"), s.traceIs(t3, "showLegend") ? (f.coerce(e3, t3, h2.attributes.showlegend ? h2.attributes : w.attributes, "showlegend"), c2("legend"), c2("legendwidth"), c2("legendgroup"), c2("legendgrouptitle.text"), c2("legendrank"), t3._dfltShowLegend = true) : t3._dfltShowLegend = false, h2 && h2.supplyDefaults(e3, t3, l2, n2), s.traceIs(t3, "noOpacity") || c2("opacity"), s.traceIs(t3, "notLegendIsolatable") && (t3.visible = !!t3.visible), s.traceIs(t3, "noHover") || (t3.hovertemplate || f.coerceHoverinfo(e3, t3, n2), "parcats" !== t3.type && s.getComponentMethod("fx", "supplyDefaults")(e3, t3, l2, n2)), h2 && h2.selectPoints) {
                var _2 = c2("selectedpoints");
                f.isTypedArray(_2) && (t3.selectedpoints = Array.from(_2));
              }
              w.supplyTransformDefaults(e3, t3, n2);
            }
            return t3;
          }, w.hasMakesDataTransform = C, w.supplyTransformDefaults = function(e3, t3, r3) {
            if (t3._length || C(e3)) {
              var n2 = r3._globalTransforms || [], a2 = r3._transformModules || [];
              if (Array.isArray(e3.transforms) || 0 !== n2.length) for (var i2 = e3.transforms || [], o2 = n2.concat(i2), l2 = t3.transforms = [], s2 = 0; s2 < o2.length; s2++) {
                var c2, u2 = o2[s2], d2 = u2.type, h2 = T[d2], p2 = !(u2._module && u2._module === h2), v2 = h2 && "function" == typeof h2.transform;
                h2 || f.warn("Unrecognized transform type " + d2 + "."), h2 && h2.supplyDefaults && (p2 || v2) ? ((c2 = h2.supplyDefaults(u2, t3, r3, e3)).type = d2, c2._module = h2, f.pushUnique(a2, h2)) : c2 = f.extendFlat({}, u2), l2.push(c2);
              }
            }
          }, w.supplyLayoutGlobalDefaults = function(e3, t3, r3) {
            function n2(r4, n3) {
              return f.coerce(e3, t3, w.layoutAttributes, r4, n3);
            }
            var a2 = e3.template;
            f.isPlainObject(a2) && (t3.template = a2, t3._template = a2.layout, t3._dataTemplate = a2.data), n2("autotypenumbers");
            var i2 = f.coerceFont(n2, "font"), o2 = i2.size;
            f.coerceFont(n2, "title.font", i2, { overrideDflt: { size: Math.round(1.4 * o2) } }), n2("title.text", t3._dfltTitle.plot), n2("title.xref");
            var l2 = n2("title.yref");
            n2("title.pad.t"), n2("title.pad.r"), n2("title.pad.b"), n2("title.pad.l");
            var c2 = n2("title.automargin");
            n2("title.x"), n2("title.xanchor"), n2("title.y"), n2("title.yanchor"), n2("title.subtitle.text", t3._dfltTitle.subtitle), f.coerceFont(n2, "title.subtitle.font", i2, { overrideDflt: { size: Math.round(0.7 * t3.title.font.size) } }), c2 && ("paper" === l2 && (0 !== t3.title.y && (t3.title.y = 1), "auto" === t3.title.yanchor && (t3.title.yanchor = 0 === t3.title.y ? "top" : "bottom")), "container" === l2 && ("auto" === t3.title.y && (t3.title.y = 1), "auto" === t3.title.yanchor && (t3.title.yanchor = t3.title.y < 0.5 ? "bottom" : "top"))), n2("uniformtext.mode") && n2("uniformtext.minsize"), n2("autosize", !(e3.width && e3.height)), n2("width"), n2("height"), n2("minreducedwidth"), n2("minreducedheight"), n2("margin.l"), n2("margin.r"), n2("margin.t"), n2("margin.b"), n2("margin.pad"), n2("margin.autoexpand"), e3.width && e3.height && w.sanitizeMargins(t3), s.getComponentMethod("grid", "sizeDefaults")(e3, t3), n2("paper_bgcolor"), n2("separators", r3.decimal + r3.thousands), n2("hidesources"), n2("colorway"), n2("datarevision");
            var u2 = n2("uirevision");
            n2("editrevision", u2), n2("selectionrevision", u2), s.getComponentMethod("modebar", "supplyLayoutDefaults")(e3, t3), s.getComponentMethod("shapes", "supplyDrawNewShapeDefaults")(e3, t3, n2), s.getComponentMethod("selections", "supplyDrawNewSelectionDefaults")(e3, t3, n2), n2("meta"), f.isPlainObject(e3.transition) && (n2("transition.duration"), n2("transition.easing"), n2("transition.ordering")), s.getComponentMethod("calendars", "handleDefaults")(e3, t3, "calendar"), s.getComponentMethod("fx", "supplyLayoutGlobalDefaults")(e3, t3, n2), f.coerce(e3, t3, g, "scattermode");
          }, w.plotAutoSize = function(e3, t3, r3) {
            var n2, a2, i2 = e3._context || {}, l2 = i2.frameMargins, s2 = f.isPlotDiv(e3);
            if (s2 && e3.emit("plotly_autosize"), i2.fillFrame) n2 = window.innerWidth, a2 = window.innerHeight, document.body.style.overflow = "hidden";
            else {
              var c2 = s2 ? window.getComputedStyle(e3) : {};
              if (n2 = D(c2.width) || D(c2.maxWidth) || r3.width, a2 = D(c2.height) || D(c2.maxHeight) || r3.height, o(l2) && l2 > 0) {
                var u2 = 1 - 2 * l2;
                n2 = Math.round(u2 * n2), a2 = Math.round(u2 * a2);
              }
            }
            var d2 = w.layoutAttributes.width.min, h2 = w.layoutAttributes.height.min;
            n2 < d2 && (n2 = d2), a2 < h2 && (a2 = h2);
            var p2 = !t3.width && Math.abs(r3.width - n2) > 1, v2 = !t3.height && Math.abs(r3.height - a2) > 1;
            (v2 || p2) && (p2 && (r3.width = n2), v2 && (r3.height = a2)), e3._initialAutoSize || (e3._initialAutoSize = { width: n2, height: a2 }), w.sanitizeMargins(r3);
          }, w.supplyLayoutModuleDefaults = function(e3, t3, r3, n2) {
            var a2, i2, o2, l2 = s.componentsRegistry, c2 = t3._basePlotModules, u2 = s.subplotsRegistry.cartesian;
            for (a2 in l2) (o2 = l2[a2]).includeBasePlot && o2.includeBasePlot(e3, t3);
            for (var d2 in c2.length || c2.push(u2), t3._has("cartesian") && (s.getComponentMethod("grid", "contentDefaults")(e3, t3), u2.finalizeSubplots(e3, t3)), t3._subplots) t3._subplots[d2].sort(f.subplotSort);
            for (i2 = 0; i2 < c2.length; i2++) (o2 = c2[i2]).supplyLayoutDefaults && o2.supplyLayoutDefaults(e3, t3, r3);
            var h2 = t3._modules;
            for (i2 = 0; i2 < h2.length; i2++) (o2 = h2[i2]).supplyLayoutDefaults && o2.supplyLayoutDefaults(e3, t3, r3);
            var p2 = t3._transformModules;
            for (i2 = 0; i2 < p2.length; i2++) (o2 = p2[i2]).supplyLayoutDefaults && o2.supplyLayoutDefaults(e3, t3, r3, n2);
            for (a2 in l2) (o2 = l2[a2]).supplyLayoutDefaults && o2.supplyLayoutDefaults(e3, t3, r3);
          }, w.purge = function(e3) {
            var t3 = e3._fullLayout || {};
            void 0 !== t3._glcontainer && (t3._glcontainer.selectAll(".gl-canvas").remove(), t3._glcontainer.remove(), t3._glcanvas = null), t3._modeBar && t3._modeBar.destroy(), e3._transitionData && (e3._transitionData._interruptCallbacks && (e3._transitionData._interruptCallbacks.length = 0), e3._transitionData._animationRaf && window.cancelAnimationFrame(e3._transitionData._animationRaf)), f.clearThrottle(), f.clearResponsive(e3), delete e3.data, delete e3.layout, delete e3._fullData, delete e3._fullLayout, delete e3.calcdata, delete e3.empty, delete e3.fid, delete e3.undoqueue, delete e3.undonum, delete e3.autoplay, delete e3.changed, delete e3._promises, delete e3._redrawTimer, delete e3._hmlumcount, delete e3._hmpixcount, delete e3._transitionData, delete e3._transitioning, delete e3._initialAutoSize, delete e3._transitioningWithDuration, delete e3._dragging, delete e3._dragged, delete e3._dragdata, delete e3._hoverdata, delete e3._snapshotInProgress, delete e3._editing, delete e3._mouseDownTime, delete e3._legendMouseDownTime, e3.removeAllListeners && e3.removeAllListeners();
          }, w.style = function(e3) {
            var t3, r3 = e3._fullLayout._visibleModules, n2 = [];
            for (t3 = 0; t3 < r3.length; t3++) {
              var a2 = r3[t3];
              a2.style && f.pushUnique(n2, a2.style);
            }
            for (t3 = 0; t3 < n2.length; t3++) n2[t3](e3);
          }, w.sanitizeMargins = function(e3) {
            if (e3 && e3.margin) {
              var t3, r3 = e3.width, n2 = e3.height, a2 = e3.margin, i2 = r3 - (a2.l + a2.r), o2 = n2 - (a2.t + a2.b);
              i2 < 0 && (t3 = (r3 - 1) / (a2.l + a2.r), a2.l = Math.floor(t3 * a2.l), a2.r = Math.floor(t3 * a2.r)), o2 < 0 && (t3 = (n2 - 1) / (a2.t + a2.b), a2.t = Math.floor(t3 * a2.t), a2.b = Math.floor(t3 * a2.b));
            }
          }, w.clearAutoMarginIds = function(e3) {
            e3._fullLayout._pushmarginIds = {};
          }, w.allowAutoMargin = function(e3, t3) {
            e3._fullLayout._pushmarginIds[t3] = 1;
          }, w.autoMargin = function(e3, t3, r3) {
            var n2 = e3._fullLayout, a2 = n2.width, i2 = n2.height, o2 = n2.margin, l2 = n2.minreducedwidth, s2 = n2.minreducedheight, c2 = f.constrain(a2 - o2.l - o2.r, 2, l2), u2 = f.constrain(i2 - o2.t - o2.b, 2, s2), d2 = Math.max(0, a2 - c2), h2 = Math.max(0, i2 - u2), p2 = n2._pushmargin, v2 = n2._pushmarginIds;
            if (false !== o2.autoexpand) {
              if (r3) {
                var g2 = r3.pad;
                if (void 0 === g2 && (g2 = Math.min(12, o2.l, o2.r, o2.t, o2.b)), d2) {
                  var m2 = (r3.l + r3.r) / d2;
                  m2 > 1 && (r3.l /= m2, r3.r /= m2);
                }
                if (h2) {
                  var y2 = (r3.t + r3.b) / h2;
                  y2 > 1 && (r3.t /= y2, r3.b /= y2);
                }
                var x2 = void 0 !== r3.xl ? r3.xl : r3.x, b2 = void 0 !== r3.xr ? r3.xr : r3.x, _2 = void 0 !== r3.yt ? r3.yt : r3.y, T2 = void 0 !== r3.yb ? r3.yb : r3.y;
                p2[t3] = { l: { val: x2, size: r3.l + g2 }, r: { val: b2, size: r3.r + g2 }, b: { val: T2, size: r3.b + g2 }, t: { val: _2, size: r3.t + g2 } }, v2[t3] = 1;
              } else delete p2[t3], delete v2[t3];
              if (!n2._replotting) return w.doAutoMargin(e3);
            }
          }, w.doAutoMargin = function(e3) {
            var t3 = e3._fullLayout, r3 = t3.width, n2 = t3.height;
            t3._size || (t3._size = {}), P(t3);
            var a2 = t3._size, i2 = t3.margin, l2 = { t: 0, b: 0, l: 0, r: 0 }, c2 = f.extendFlat({}, a2), u2 = i2.l, d2 = i2.r, h2 = i2.t, v2 = i2.b, g2 = t3._pushmargin, m2 = t3._pushmarginIds, y2 = t3.minreducedwidth, x2 = t3.minreducedheight;
            if (false !== i2.autoexpand) {
              for (var b2 in g2) m2[b2] || delete g2[b2];
              var _2 = e3._fullLayout._reservedMargin;
              for (var T2 in _2) for (var M2 in _2[T2]) {
                var k2 = _2[T2][M2];
                l2[M2] = Math.max(l2[M2], k2);
              }
              for (var A2 in g2.base = { l: { val: 0, size: u2 }, r: { val: 1, size: d2 }, t: { val: 1, size: h2 }, b: { val: 0, size: v2 } }, l2) {
                var L2 = 0;
                for (var S2 in g2) "base" !== S2 && o(g2[S2][A2].size) && (L2 = g2[S2][A2].size > L2 ? g2[S2][A2].size : L2);
                var C2 = Math.max(0, i2[A2] - L2);
                l2[A2] = Math.max(0, l2[A2] - C2);
              }
              for (var O2 in g2) {
                var D2 = g2[O2].l || {}, z2 = g2[O2].b || {}, I2 = D2.val, E2 = D2.size, R2 = z2.val, N2 = z2.size, F = r3 - l2.r - l2.l, H = n2 - l2.t - l2.b;
                for (var B in g2) {
                  if (o(E2) && g2[B].r) {
                    var j = g2[B].r.val, Y = g2[B].r.size;
                    if (j > I2) {
                      var V = (E2 * j + (Y - F) * I2) / (j - I2), U = (Y * (1 - I2) + (E2 - F) * (1 - j)) / (j - I2);
                      V + U > u2 + d2 && (u2 = V, d2 = U);
                    }
                  }
                  if (o(N2) && g2[B].t) {
                    var q = g2[B].t.val, G = g2[B].t.size;
                    if (q > R2) {
                      var Z = (N2 * q + (G - H) * R2) / (q - R2), W = (G * (1 - R2) + (N2 - H) * (1 - q)) / (q - R2);
                      Z + W > v2 + h2 && (v2 = Z, h2 = W);
                    }
                  }
                }
              }
            }
            var J = f.constrain(r3 - i2.l - i2.r, 2, y2), X = f.constrain(n2 - i2.t - i2.b, 2, x2), K = Math.max(0, r3 - J), Q = Math.max(0, n2 - X);
            if (K) {
              var $ = (u2 + d2) / K;
              $ > 1 && (u2 /= $, d2 /= $);
            }
            if (Q) {
              var ee = (v2 + h2) / Q;
              ee > 1 && (v2 /= ee, h2 /= ee);
            }
            if (a2.l = Math.round(u2) + l2.l, a2.r = Math.round(d2) + l2.r, a2.t = Math.round(h2) + l2.t, a2.b = Math.round(v2) + l2.b, a2.p = Math.round(i2.pad), a2.w = Math.round(r3) - a2.l - a2.r, a2.h = Math.round(n2) - a2.t - a2.b, !t3._replotting && (w.didMarginChange(c2, a2) || function(e4) {
              if ("_redrawFromAutoMarginCount" in e4._fullLayout) return false;
              var t4 = p.list(e4, "", true);
              for (var r4 in t4) if (t4[r4].autoshift || t4[r4].shift) return true;
              return false;
            }(e3))) {
              "_redrawFromAutoMarginCount" in t3 ? t3._redrawFromAutoMarginCount++ : t3._redrawFromAutoMarginCount = 1;
              var te = 3 * (1 + Object.keys(m2).length);
              if (t3._redrawFromAutoMarginCount < te) return s.call("_doPlot", e3);
              t3._size = c2, f.warn("Too many auto-margin redraws.");
            }
            !function(e4) {
              var t4 = p.list(e4, "", true);
              ["_adjustTickLabelsOverflow", "_hideCounterAxisInsideTickLabels"].forEach(function(e5) {
                for (var r4 = 0; r4 < t4.length; r4++) {
                  var n3 = t4[r4][e5];
                  n3 && n3();
                }
              });
            }(e3);
          };
          var z = ["l", "r", "t", "b", "p", "w", "h"];
          function I(e3, t3, r3) {
            var n2 = false, a2 = [w.previousPromises, function() {
              if (e3._transitionData) return e3._transitioning = false, function(e4) {
                var t4 = Promise.resolve();
                if (!e4) return t4;
                for (; e4.length; ) t4 = t4.then(e4.shift());
                return t4;
              }(e3._transitionData._interruptCallbacks);
            }, r3.prepareFn, w.rehover, w.reselect, function() {
              return e3.emit("plotly_transitioning", []), new Promise(function(a3) {
                e3._transitioning = true, t3.duration > 0 && (e3._transitioningWithDuration = true), e3._transitionData._interruptCallbacks.push(function() {
                  n2 = true;
                }), r3.redraw && e3._transitionData._interruptCallbacks.push(function() {
                  return s.call("redraw", e3);
                }), e3._transitionData._interruptCallbacks.push(function() {
                  e3.emit("plotly_transitioninterrupted", []);
                });
                var i3 = 0, o2 = 0;
                function l2() {
                  return i3++, function() {
                    var t4;
                    o2++, n2 || o2 !== i3 || (t4 = a3, e3._transitionData && (function(e4) {
                      if (e4) for (; e4.length; ) e4.shift();
                    }(e3._transitionData._interruptCallbacks), Promise.resolve().then(function() {
                      if (r3.redraw) return s.call("redraw", e3);
                    }).then(function() {
                      e3._transitioning = false, e3._transitioningWithDuration = false, e3.emit("plotly_transitioned", []);
                    }).then(t4)));
                  };
                }
                r3.runFn(l2), setTimeout(l2());
              });
            }], i2 = f.syncOrAsync(a2, e3);
            return i2 && i2.then || (i2 = Promise.resolve()), i2.then(function() {
              return e3;
            });
          }
          w.didMarginChange = function(e3, t3) {
            for (var r3 = 0; r3 < z.length; r3++) {
              var n2 = z[r3], a2 = e3[n2], i2 = t3[n2];
              if (!o(a2) || Math.abs(i2 - a2) > 1) return true;
            }
            return false;
          }, w.graphJson = function(e3, t3, r3, n2, a2, i2) {
            (a2 && t3 && !e3._fullData || a2 && !t3 && !e3._fullLayout) && w.supplyDefaults(e3);
            var o2 = a2 ? e3._fullData : e3.data, s2 = a2 ? e3._fullLayout : e3.layout, c2 = (e3._transitionData || {})._frames;
            function u2(e4, t4) {
              if ("function" == typeof e4) return t4 ? "_function_" : null;
              if (f.isPlainObject(e4)) {
                var n3, a3 = {};
                return Object.keys(e4).sort().forEach(function(i4) {
                  if (-1 === ["_", "["].indexOf(i4.charAt(0))) if ("function" != typeof e4[i4]) {
                    if ("keepdata" === r3) {
                      if ("src" === i4.substr(i4.length - 3)) return;
                    } else if ("keepstream" === r3) {
                      if ("string" == typeof (n3 = e4[i4 + "src"]) && n3.indexOf(":") > 0 && !f.isPlainObject(e4.stream)) return;
                    } else if ("keepall" !== r3 && "string" == typeof (n3 = e4[i4 + "src"]) && n3.indexOf(":") > 0) return;
                    a3[i4] = u2(e4[i4], t4);
                  } else t4 && (a3[i4] = "_function");
                }), a3;
              }
              var i3 = Array.isArray(e4), o3 = f.isTypedArray(e4);
              if ((i3 || o3) && e4.dtype && e4.shape) {
                var s3 = e4.bdata;
                return u2({ dtype: e4.dtype, shape: e4.shape, bdata: f.isArrayBuffer(s3) ? l.encode(s3) : s3 }, t4);
              }
              return i3 ? e4.map(function(e5) {
                return u2(e5, t4);
              }) : o3 ? f.simpleMap(e4, f.identity) : f.isJSDate(e4) ? f.ms2DateTimeLocal(+e4) : e4;
            }
            var d2 = { data: (o2 || []).map(function(e4) {
              var r4 = u2(e4);
              return t3 && delete r4.fit, r4;
            }) };
            if (!t3 && (d2.layout = u2(s2), a2)) {
              var h2 = s2._size;
              d2.layout.computed = { margin: { b: h2.b, l: h2.l, r: h2.r, t: h2.t } };
            }
            return c2 && (d2.frames = u2(c2)), i2 && (d2.config = u2(e3._context, true)), "object" === n2 ? d2 : JSON.stringify(d2);
          }, w.modifyFrames = function(e3, t3) {
            var r3, n2, a2, i2 = e3._transitionData._frames, o2 = e3._transitionData._frameHash;
            for (r3 = 0; r3 < t3.length; r3++) switch ((n2 = t3[r3]).type) {
              case "replace":
                a2 = n2.value;
                var l2 = (i2[n2.index] || {}).name, s2 = a2.name;
                i2[n2.index] = o2[s2] = a2, s2 !== l2 && (delete o2[l2], o2[s2] = a2);
                break;
              case "insert":
                o2[(a2 = n2.value).name] = a2, i2.splice(n2.index, 0, a2);
                break;
              case "delete":
                delete o2[(a2 = i2[n2.index]).name], i2.splice(n2.index, 1);
            }
            return Promise.resolve();
          }, w.computeFrame = function(e3, t3) {
            var r3, n2, a2, i2, o2 = e3._transitionData._frameHash;
            if (!t3) throw new Error("computeFrame must be given a string frame name");
            var l2 = o2[t3.toString()];
            if (!l2) return false;
            for (var s2 = [l2], c2 = [l2.name]; l2.baseframe && (l2 = o2[l2.baseframe.toString()]) && -1 === c2.indexOf(l2.name); ) s2.push(l2), c2.push(l2.name);
            for (var u2 = {}; l2 = s2.pop(); ) if (l2.layout && (u2.layout = w.extendLayout(u2.layout, l2.layout)), l2.data) {
              if (u2.data || (u2.data = []), !(n2 = l2.traces)) for (n2 = [], r3 = 0; r3 < l2.data.length; r3++) n2[r3] = r3;
              for (u2.traces || (u2.traces = []), r3 = 0; r3 < l2.data.length; r3++) null != (a2 = n2[r3]) && (-1 === (i2 = u2.traces.indexOf(a2)) && (i2 = u2.data.length, u2.traces[i2] = a2), u2.data[i2] = w.extendTrace(u2.data[i2], l2.data[r3]));
            }
            return u2;
          }, w.recomputeFrameHash = function(e3) {
            for (var t3 = e3._transitionData._frameHash = {}, r3 = e3._transitionData._frames, n2 = 0; n2 < r3.length; n2++) {
              var a2 = r3[n2];
              a2 && a2.name && (t3[a2.name] = a2);
            }
          }, w.extendObjectWithContainers = function(e3, t3, r3) {
            var n2, a2, i2, o2, l2, s2, c2, u2 = f.extendDeepNoArrays({}, t3 || {}), d2 = f.expandObjectPaths(u2), h2 = {};
            if (r3 && r3.length) for (i2 = 0; i2 < r3.length; i2++) void 0 === (a2 = (n2 = f.nestedProperty(d2, r3[i2])).get()) ? f.nestedProperty(h2, r3[i2]).set(null) : (n2.set(null), f.nestedProperty(h2, r3[i2]).set(a2));
            if (e3 = f.extendDeepNoArrays(e3 || {}, d2), r3 && r3.length) {
              for (i2 = 0; i2 < r3.length; i2++) if (s2 = f.nestedProperty(h2, r3[i2]).get()) {
                for (c2 = (l2 = f.nestedProperty(e3, r3[i2])).get(), Array.isArray(c2) || (c2 = [], l2.set(c2)), o2 = 0; o2 < s2.length; o2++) {
                  var p2 = s2[o2];
                  c2[o2] = null === p2 ? null : w.extendObjectWithContainers(c2[o2], p2);
                }
                l2.set(c2);
              }
            }
            return e3;
          }, w.dataArrayContainers = ["transforms", "dimensions"], w.layoutArrayContainers = s.layoutArrayContainers, w.extendTrace = function(e3, t3) {
            return w.extendObjectWithContainers(e3, t3, w.dataArrayContainers);
          }, w.extendLayout = function(e3, t3) {
            return w.extendObjectWithContainers(e3, t3, w.layoutArrayContainers);
          }, w.transition = function(e3, t3, r3, n2, a2, i2) {
            var o2 = { redraw: a2.redraw }, l2 = {}, s2 = [];
            return o2.prepareFn = function() {
              for (var a3 = Array.isArray(t3) ? t3.length : 0, i3 = n2.slice(0, a3), o3 = 0; o3 < i3.length; o3++) {
                var c2 = i3[o3], u2 = e3._fullData[c2]._module;
                if (u2) {
                  if (u2.animatable) {
                    var d2 = u2.basePlotModule.name;
                    l2[d2] || (l2[d2] = []), l2[d2].push(c2);
                  }
                  e3.data[i3[o3]] = w.extendTrace(e3.data[i3[o3]], t3[o3]);
                }
              }
              var h2 = f.expandObjectPaths(f.extendDeepNoArrays({}, r3)), p2 = /^[xy]axis[0-9]*$/;
              for (var v2 in h2) p2.test(v2) && delete h2[v2].range;
              w.extendLayout(e3.layout, h2), delete e3.calcdata, w.supplyDefaults(e3), w.doCalcdata(e3);
              var g2 = f.expandObjectPaths(r3);
              if (g2) {
                var m2 = e3._fullLayout._plots;
                for (var y2 in m2) {
                  var x2 = m2[y2], b2 = x2.xaxis, _2 = x2.yaxis, T2 = b2.range.slice(), M2 = _2.range.slice(), k2 = null, A2 = null, L2 = null, S2 = null;
                  Array.isArray(g2[b2._name + ".range"]) ? k2 = g2[b2._name + ".range"].slice() : Array.isArray((g2[b2._name] || {}).range) && (k2 = g2[b2._name].range.slice()), Array.isArray(g2[_2._name + ".range"]) ? A2 = g2[_2._name + ".range"].slice() : Array.isArray((g2[_2._name] || {}).range) && (A2 = g2[_2._name].range.slice()), T2 && k2 && (b2.r2l(T2[0]) !== b2.r2l(k2[0]) || b2.r2l(T2[1]) !== b2.r2l(k2[1])) && (L2 = { xr0: T2, xr1: k2 }), M2 && A2 && (_2.r2l(M2[0]) !== _2.r2l(A2[0]) || _2.r2l(M2[1]) !== _2.r2l(A2[1])) && (S2 = { yr0: M2, yr1: A2 }), (L2 || S2) && s2.push(f.extendFlat({ plotinfo: x2 }, L2, S2));
                }
              }
              return Promise.resolve();
            }, o2.runFn = function(t4) {
              var n3, a3, o3 = e3._fullLayout._basePlotModules, c2 = s2.length;
              if (r3) for (a3 = 0; a3 < o3.length; a3++) o3[a3].transitionAxes && o3[a3].transitionAxes(e3, s2, i2, t4);
              for (var u2 in c2 ? ((n3 = f.extendFlat({}, i2)).duration = 0, delete l2.cartesian) : n3 = i2, l2) {
                var d2 = l2[u2];
                e3._fullData[d2[0]]._module.basePlotModule.plot(e3, d2, n3, t4);
              }
            }, I(e3, i2, o2);
          }, w.transitionFromReact = function(e3, t3, r3, n2) {
            var a2 = e3._fullLayout, i2 = a2.transition, o2 = {}, l2 = [];
            return o2.prepareFn = function() {
              var e4 = a2._plots;
              for (var i3 in o2.redraw = false, "some" === t3.anim && (o2.redraw = true), "some" === r3.anim && (o2.redraw = true), e4) {
                var s2 = e4[i3], c2 = s2.xaxis, u2 = s2.yaxis, d2 = n2[c2._name].range.slice(), h2 = n2[u2._name].range.slice(), p2 = c2.range.slice(), v2 = u2.range.slice();
                c2.setScale(), u2.setScale();
                var g2 = null, m2 = null;
                c2.r2l(d2[0]) === c2.r2l(p2[0]) && c2.r2l(d2[1]) === c2.r2l(p2[1]) || (g2 = { xr0: d2, xr1: p2 }), u2.r2l(h2[0]) === u2.r2l(v2[0]) && u2.r2l(h2[1]) === u2.r2l(v2[1]) || (m2 = { yr0: h2, yr1: v2 }), (g2 || m2) && l2.push(f.extendFlat({ plotinfo: s2 }, g2, m2));
              }
              return Promise.resolve();
            }, o2.runFn = function(r4) {
              for (var n3, a3, o3, s2 = e3._fullData, c2 = e3._fullLayout._basePlotModules, u2 = [], d2 = 0; d2 < s2.length; d2++) u2.push(d2);
              function h2() {
                if (e3._fullLayout) for (var t4 = 0; t4 < c2.length; t4++) c2[t4].transitionAxes && c2[t4].transitionAxes(e3, l2, n3, r4);
              }
              function p2() {
                if (e3._fullLayout) for (var t4 = 0; t4 < c2.length; t4++) c2[t4].plot(e3, o3, a3, r4);
              }
              l2.length && t3.anim ? "traces first" === i2.ordering ? (n3 = f.extendFlat({}, i2, { duration: 0 }), o3 = u2, a3 = i2, setTimeout(h2, i2.duration), p2()) : (n3 = i2, o3 = null, a3 = f.extendFlat({}, i2, { duration: 0 }), setTimeout(p2, n3.duration), h2()) : l2.length ? (n3 = i2, h2()) : t3.anim && (o3 = u2, a3 = i2, p2());
            }, I(e3, i2, o2);
          }, w.doCalcdata = function(e3, t3) {
            var r3, n2, a2, i2, o2 = p.list(e3), l2 = e3._fullData, u2 = e3._fullLayout, d2 = new Array(l2.length), v2 = (e3.calcdata || []).slice();
            for (e3.calcdata = d2, u2._numBoxes = 0, u2._numViolins = 0, u2._violinScaleGroupStats = {}, e3._hmpixcount = 0, e3._hmlumcount = 0, u2._piecolormap = {}, u2._sunburstcolormap = {}, u2._treemapcolormap = {}, u2._iciclecolormap = {}, u2._funnelareacolormap = {}, a2 = 0; a2 < l2.length; a2++) Array.isArray(t3) && -1 === t3.indexOf(a2) && (d2[a2] = v2[a2]);
            for (a2 = 0; a2 < l2.length; a2++) (r3 = l2[a2])._arrayAttrs = c.findArrayAttributes(r3), r3._extremes = {};
            var g2 = u2._subplots.polar || [];
            for (a2 = 0; a2 < g2.length; a2++) o2.push(u2[g2[a2]].radialaxis, u2[g2[a2]].angularaxis);
            for (var m2 in u2._colorAxes) {
              var y2 = u2[m2];
              false !== y2.cauto && (delete y2.cmin, delete y2.cmax);
            }
            var x2 = false;
            function b2(t4) {
              if (r3 = l2[t4], n2 = r3._module, true === r3.visible && r3.transforms) {
                if (n2 && n2.calc) {
                  var a3 = n2.calc(e3, r3);
                  a3[0] && a3[0].t && a3[0].t._scene && delete a3[0].t._scene.dirty;
                }
                for (i2 = 0; i2 < r3.transforms.length; i2++) {
                  var o3 = r3.transforms[i2];
                  (n2 = T[o3.type]) && n2.calcTransform && (r3._hasCalcTransform = true, x2 = true, n2.calcTransform(e3, r3, o3));
                }
              }
            }
            function _2(t4, a3) {
              if (r3 = l2[t4], !!(n2 = r3._module).isContainer === a3) {
                var o3 = [];
                if (true === r3.visible && 0 !== r3._length) {
                  delete r3._indexToPoints;
                  var s2 = r3.transforms || [];
                  for (i2 = s2.length - 1; i2 >= 0; i2--) if (s2[i2].enabled) {
                    r3._indexToPoints = s2[i2]._indexToPoints;
                    break;
                  }
                  n2 && n2.calc && (o3 = n2.calc(e3, r3));
                }
                Array.isArray(o3) && o3[0] || (o3 = [{ x: h, y: h }]), o3[0].t || (o3[0].t = {}), o3[0].trace = r3, d2[t4] = o3;
              }
            }
            for (R(o2, l2, u2), a2 = 0; a2 < l2.length; a2++) _2(a2, true);
            for (a2 = 0; a2 < l2.length; a2++) b2(a2);
            for (x2 && R(o2, l2, u2), a2 = 0; a2 < l2.length; a2++) _2(a2, true);
            for (a2 = 0; a2 < l2.length; a2++) _2(a2, false);
            N(e3);
            var w2 = function(e4, t4) {
              var r4, n3, a3, i3, o3, l3 = [];
              function c2(e5, r5, n4) {
                var a4 = r5._id.charAt(0);
                if ("histogram2dcontour" === e5) {
                  var i4 = r5._counterAxes[0], o4 = p.getFromId(t4, i4), l4 = "x" === a4 || "x" === i4 && "category" === o4.type, s2 = "y" === a4 || "y" === i4 && "category" === o4.type;
                  return function(e6, t5) {
                    return 0 === e6 || 0 === t5 || l4 && e6 === n4[t5].length - 1 || s2 && t5 === n4.length - 1 ? -1 : ("y" === a4 ? t5 : e6) - 1;
                  };
                }
                return function(e6, t5) {
                  return "y" === a4 ? t5 : e6;
                };
              }
              var u3 = { min: function(e5) {
                return f.aggNums(Math.min, null, e5);
              }, max: function(e5) {
                return f.aggNums(Math.max, null, e5);
              }, sum: function(e5) {
                return f.aggNums(function(e6, t5) {
                  return e6 + t5;
                }, null, e5);
              }, total: function(e5) {
                return f.aggNums(function(e6, t5) {
                  return e6 + t5;
                }, null, e5);
              }, mean: function(e5) {
                return f.mean(e5);
              }, "geometric mean": function(e5) {
                return f.geometricMean(e5);
              }, median: function(e5) {
                return f.median(e5);
              } };
              function d3(e5, t5) {
                return e5[1] - t5[1];
              }
              function h2(e5, t5) {
                return t5[1] - e5[1];
              }
              for (r4 = 0; r4 < e4.length; r4++) {
                var v3 = e4[r4];
                if ("category" === v3.type) {
                  var g3 = v3.categoryorder.match(E);
                  if (g3) {
                    var m3 = g3[1], y3 = g3[2], x3 = v3._id.charAt(0), b3 = "x" === x3, _3 = [];
                    for (n3 = 0; n3 < v3._categories.length; n3++) _3.push([v3._categories[n3], []]);
                    for (n3 = 0; n3 < v3._traceIndices.length; n3++) {
                      var w3 = v3._traceIndices[n3], T2 = t4._fullData[w3];
                      if (true === T2.visible) {
                        var M2 = T2.type;
                        s.traceIs(T2, "histogram") && (delete T2._xautoBinFinished, delete T2._yautoBinFinished);
                        var k2 = "splom" === M2, A2 = "scattergl" === M2, L2 = t4.calcdata[w3];
                        for (a3 = 0; a3 < L2.length; a3++) {
                          var S2, C2, O2 = L2[a3];
                          if (k2) {
                            var D2 = T2._axesDim[v3._id];
                            if (!b3) {
                              var P2 = T2._diag[D2][0];
                              P2 && (v3 = t4._fullLayout[p.id2name(P2)]);
                            }
                            var z2 = O2.trace.dimensions[D2].values;
                            for (i3 = 0; i3 < z2.length; i3++) for (S2 = v3._categoriesMap[z2[i3]], o3 = 0; o3 < O2.trace.dimensions.length; o3++) if (o3 !== D2) {
                              var I2 = O2.trace.dimensions[o3];
                              _3[S2][1].push(I2.values[i3]);
                            }
                          } else if (A2) {
                            for (i3 = 0; i3 < O2.t.x.length; i3++) b3 ? (S2 = O2.t.x[i3], C2 = O2.t.y[i3]) : (S2 = O2.t.y[i3], C2 = O2.t.x[i3]), _3[S2][1].push(C2);
                            O2.t && O2.t._scene && delete O2.t._scene.dirty;
                          } else if (O2.hasOwnProperty("z")) {
                            C2 = O2.z;
                            var R2 = c2(T2.type, v3, C2);
                            for (i3 = 0; i3 < C2.length; i3++) for (o3 = 0; o3 < C2[i3].length; o3++) (S2 = R2(o3, i3)) + 1 && _3[S2][1].push(C2[i3][o3]);
                          } else for (void 0 === (S2 = O2.p) && (S2 = O2[x3]), void 0 === (C2 = O2.s) && (C2 = O2.v), void 0 === C2 && (C2 = b3 ? O2.y : O2.x), Array.isArray(C2) || (C2 = void 0 === C2 ? [] : [C2]), i3 = 0; i3 < C2.length; i3++) _3[S2][1].push(C2[i3]);
                        }
                      }
                    }
                    v3._categoriesValue = _3;
                    var N2 = [];
                    for (n3 = 0; n3 < _3.length; n3++) N2.push([_3[n3][0], u3[m3](_3[n3][1])]);
                    N2.sort("descending" === y3 ? h2 : d3), v3._categoriesAggregatedValue = N2, v3._initialCategories = N2.map(function(e5) {
                      return e5[0];
                    }), l3 = l3.concat(v3.sortByInitialCategories());
                  }
                }
              }
              return l3;
            }(o2, e3);
            if (w2.length) {
              for (u2._numBoxes = 0, u2._numViolins = 0, a2 = 0; a2 < w2.length; a2++) _2(w2[a2], true);
              for (a2 = 0; a2 < w2.length; a2++) _2(w2[a2], false);
              N(e3);
            }
            s.getComponentMethod("fx", "calc")(e3), s.getComponentMethod("errorbars", "calc")(e3);
          };
          var E = /(total|sum|min|max|mean|geometric mean|median) (ascending|descending)/;
          function R(e3, t3, r3) {
            var n2 = {};
            function a2(e4) {
              e4.clearCalc(), "multicategory" === e4.type && e4.setupMultiCategory(t3), n2[e4._id] = 1;
            }
            f.simpleMap(e3, a2);
            for (var i2 = r3._axisMatchGroups || [], o2 = 0; o2 < i2.length; o2++) for (var l2 in i2[o2]) n2[l2] || a2(r3[p.id2name(l2)]);
          }
          function N(e3) {
            var t3, r3, n2, a2 = e3._fullLayout, i2 = a2._visibleModules, o2 = {};
            for (r3 = 0; r3 < i2.length; r3++) {
              var l2 = i2[r3], s2 = l2.crossTraceCalc;
              if (s2) {
                var c2 = l2.basePlotModule.name;
                o2[c2] ? f.pushUnique(o2[c2], s2) : o2[c2] = [s2];
              }
            }
            for (n2 in o2) {
              var u2 = o2[n2], d2 = a2._subplots[n2];
              if (Array.isArray(d2)) for (t3 = 0; t3 < d2.length; t3++) {
                var h2 = d2[t3], p2 = "cartesian" === n2 ? a2._plots[h2] : a2[h2];
                for (r3 = 0; r3 < u2.length; r3++) u2[r3](e3, p2, h2);
              }
              else for (r3 = 0; r3 < u2.length; r3++) u2[r3](e3);
            }
          }
          w.rehover = function(e3) {
            e3._fullLayout._rehover && e3._fullLayout._rehover();
          }, w.redrag = function(e3) {
            e3._fullLayout._redrag && e3._fullLayout._redrag();
          }, w.reselect = function(e3) {
            var t3 = e3._fullLayout, r3 = (e3.layout || {}).selections, n2 = t3._previousSelections;
            t3._previousSelections = r3;
            var a2 = t3._reselect || JSON.stringify(r3) !== JSON.stringify(n2);
            s.getComponentMethod("selections", "reselect")(e3, a2);
          }, w.generalUpdatePerTraceModule = function(e3, t3, r3, n2) {
            var a2, i2 = t3.traceHash, o2 = {};
            for (a2 = 0; a2 < r3.length; a2++) {
              var l2 = r3[a2], s2 = l2[0].trace;
              s2.visible && (o2[s2.type] = o2[s2.type] || [], o2[s2.type].push(l2));
            }
            for (var c2 in i2) if (!o2[c2]) {
              var u2 = i2[c2][0];
              u2[0].trace.visible = false, o2[c2] = [u2];
            }
            for (var d2 in o2) {
              var h2 = o2[d2];
              h2[0][0].trace._module.plot(e3, t3, f.filterVisible(h2), n2);
            }
            t3.traceHash = o2;
          }, w.plotBasePlot = function(e3, t3, r3, n2, a2) {
            var i2 = s.getModule(e3), o2 = x(t3.calcdata, i2)[0];
            i2.plot(t3, o2, n2, a2);
          }, w.cleanBasePlot = function(e3, t3, r3, n2, a2) {
            var i2 = a2._has && a2._has(e3), o2 = r3._has && r3._has(e3);
            i2 && !o2 && a2["_" + e3 + "layer"].selectAll("g.trace").remove();
          };
        }, 3208: function(e2, t2, r2) {
          var n = r2(7296);
          function a(e3) {
            var t3 = e3.description ? " " + e3.description : "", r3 = e3.keys || [];
            if (r3.length > 0) {
              for (var n2 = [], a2 = 0; a2 < r3.length; a2++) n2[a2] = "`" + r3[a2] + "`";
              t3 += "Finally, the template string has access to ", t3 = 1 === r3.length ? t3 + "variable " + n2[0] : t3 + "variables " + n2.slice(0, -1).join(", ") + " and " + n2.slice(-1) + ".";
            }
            return t3;
          }
          n.FORMAT_LINK, n.DATE_FORMAT_LINK, t2.rb = function(e3, t3) {
            e3 = e3 || {}, a(t3 = t3 || {});
            var r3 = { valType: "string", dflt: "", editType: e3.editType || "none" };
            return false !== e3.arrayOk && (r3.arrayOk = true), r3;
          }, t2.ay = function(e3, t3) {
            e3 = e3 || {}, a(t3 = t3 || {});
            var r3 = { valType: "string", dflt: "", editType: e3.editType || "calc" };
            return false !== e3.arrayOk && (r3.arrayOk = true), r3;
          }, t2.LF = function(e3, t3) {
            return t3 = t3 || {}, (e3 = e3 || {}).newshape, a(t3), { valType: "string", dflt: "", editType: e3.editType || "arraydraw" };
          };
        }, 3626: function(e2, t2, r2) {
          var n = r2(8636), a = r2(4969), i = r2(6539), o = r2(6174), l = r2(5425).addStyleRule, s = r2(3049), c = r2(9829), u = r2(6704), f = s.extendFlat, d = s.extendDeepAll;
          function h(e3) {
            var a2 = e3.name, i2 = e3.categories, o2 = e3.meta;
            if (t2.modules[a2]) n.log("Type " + a2 + " already registered");
            else {
              t2.subplotsRegistry[e3.basePlotModule.name] || function(e4) {
                var r3 = e4.name;
                if (t2.subplotsRegistry[r3]) n.log("Plot type " + r3 + " already registered.");
                else for (var a3 in m(e4), t2.subplotsRegistry[r3] = e4, t2.componentsRegistry) b(a3, e4.name);
              }(e3.basePlotModule);
              for (var s2 = {}, c2 = 0; c2 < i2.length; c2++) s2[i2[c2]] = true, t2.allCategories[i2[c2]] = true;
              for (var u2 in t2.modules[a2] = { _module: e3, categories: s2 }, o2 && Object.keys(o2).length && (t2.modules[a2].meta = o2), t2.allTypes.push(a2), t2.componentsRegistry) y(u2, a2);
              e3.layoutAttributes && f(t2.traceLayoutAttributes, e3.layoutAttributes);
              var d2 = e3.basePlotModule, h2 = d2.name;
              if ("mapbox" === h2) {
                var p2 = d2.constants.styleRules;
                for (var v2 in p2) l(".js-plotly-plot .plotly .mapboxgl-" + v2, p2[v2]);
              }
              "map" === h2 && r2(6144), "geo" !== h2 && "mapbox" !== h2 && "map" !== h2 || void 0 !== window.PlotlyGeoAssets || (window.PlotlyGeoAssets = { topojson: {} });
            }
          }
          function p(e3) {
            if ("string" != typeof e3.name) throw new Error("Component module *name* must be a string.");
            var r3 = e3.name;
            for (var n2 in t2.componentsRegistry[r3] = e3, e3.layoutAttributes && (e3.layoutAttributes._isLinkedToArray && i(t2.layoutArrayContainers, r3), m(e3)), t2.modules) y(r3, n2);
            for (var a2 in t2.subplotsRegistry) b(r3, a2);
            for (var o2 in t2.transformsRegistry) x(r3, o2);
            e3.schema && e3.schema.layout && d(u, e3.schema.layout);
          }
          function v(e3) {
            if ("string" != typeof e3.name) throw new Error("Transform module *name* must be a string.");
            var r3 = "Transform module " + e3.name, a2 = "function" == typeof e3.transform, i2 = "function" == typeof e3.calcTransform;
            if (!a2 && !i2) throw new Error(r3 + " is missing a *transform* or *calcTransform* method.");
            for (var l2 in a2 && i2 && n.log([r3 + " has both a *transform* and *calcTransform* methods.", "Please note that all *transform* methods are executed", "before all *calcTransform* methods."].join(" ")), o(e3.attributes) || n.log(r3 + " registered without an *attributes* object."), "function" != typeof e3.supplyDefaults && n.log(r3 + " registered without a *supplyDefaults* method."), t2.transformsRegistry[e3.name] = e3, t2.componentsRegistry) x(l2, e3.name);
          }
          function g(e3) {
            var r3 = e3.name, n2 = r3.split("-")[0], a2 = e3.dictionary, i2 = e3.format, o2 = a2 && Object.keys(a2).length, l2 = i2 && Object.keys(i2).length, s2 = t2.localeRegistry, c2 = s2[r3];
            if (c2 || (s2[r3] = c2 = {}), n2 !== r3) {
              var u2 = s2[n2];
              u2 || (s2[n2] = u2 = {}), o2 && u2.dictionary === c2.dictionary && (u2.dictionary = a2), l2 && u2.format === c2.format && (u2.format = i2);
            }
            o2 && (c2.dictionary = a2), l2 && (c2.format = i2);
          }
          function m(e3) {
            if (e3.layoutAttributes) {
              var r3 = e3.layoutAttributes._arrayAttrRegexps;
              if (r3) for (var n2 = 0; n2 < r3.length; n2++) i(t2.layoutArrayRegexes, r3[n2]);
            }
          }
          function y(e3, r3) {
            var n2 = t2.componentsRegistry[e3].schema;
            if (n2 && n2.traces) {
              var a2 = n2.traces[r3];
              a2 && d(t2.modules[r3]._module.attributes, a2);
            }
          }
          function x(e3, r3) {
            var n2 = t2.componentsRegistry[e3].schema;
            if (n2 && n2.transforms) {
              var a2 = n2.transforms[r3];
              a2 && d(t2.transformsRegistry[r3].attributes, a2);
            }
          }
          function b(e3, r3) {
            var n2 = t2.componentsRegistry[e3].schema;
            if (n2 && n2.subplots) {
              var a2 = t2.subplotsRegistry[r3], i2 = a2.layoutAttributes, o2 = "subplot" === a2.attr ? a2.name : a2.attr;
              Array.isArray(o2) && (o2 = o2[0]);
              var l2 = n2.subplots[o2];
              i2 && l2 && d(i2, l2);
            }
          }
          function _(e3) {
            return "object" == typeof e3 && (e3 = e3.type), e3;
          }
          t2.modules = {}, t2.allCategories = {}, t2.allTypes = [], t2.subplotsRegistry = {}, t2.transformsRegistry = {}, t2.componentsRegistry = {}, t2.layoutArrayContainers = [], t2.layoutArrayRegexes = [], t2.traceLayoutAttributes = {}, t2.localeRegistry = {}, t2.apiMethodRegistry = {}, t2.collectableSubplotTypes = null, t2.register = function(e3) {
            if (t2.collectableSubplotTypes = null, !e3) throw new Error("No argument passed to Plotly.register.");
            e3 && !Array.isArray(e3) && (e3 = [e3]);
            for (var r3 = 0; r3 < e3.length; r3++) {
              var n2 = e3[r3];
              if (!n2) throw new Error("Invalid module was attempted to be registered!");
              switch (n2.moduleType) {
                case "trace":
                  h(n2);
                  break;
                case "transform":
                  v(n2);
                  break;
                case "component":
                  p(n2);
                  break;
                case "locale":
                  g(n2);
                  break;
                case "apiMethod":
                  var a2 = n2.name;
                  t2.apiMethodRegistry[a2] = n2.fn;
                  break;
                default:
                  throw new Error("Invalid module was attempted to be registered!");
              }
            }
          }, t2.getModule = function(e3) {
            var r3 = t2.modules[_(e3)];
            return !!r3 && r3._module;
          }, t2.traceIs = function(e3, r3) {
            if ("various" === (e3 = _(e3))) return false;
            var a2 = t2.modules[e3];
            return a2 || (e3 && n.log("Unrecognized trace type " + e3 + "."), a2 = t2.modules[c.type.dflt]), !!a2.categories[r3];
          }, t2.getTransformIndices = function(e3, t3) {
            for (var r3 = [], n2 = e3.transforms || [], a2 = 0; a2 < n2.length; a2++) n2[a2].type === t3 && r3.push(a2);
            return r3;
          }, t2.hasTransform = function(e3, t3) {
            for (var r3 = e3.transforms || [], n2 = 0; n2 < r3.length; n2++) if (r3[n2].type === t3) return true;
            return false;
          }, t2.getComponentMethod = function(e3, r3) {
            var n2 = t2.componentsRegistry[e3];
            return n2 && n2[r3] || a;
          }, t2.call = function() {
            var e3 = arguments[0], r3 = [].slice.call(arguments, 1);
            return t2.apiMethodRegistry[e3].apply(null, r3);
          };
        }, 3164: function(e2, t2, r2) {
          var n = r2(3626), a = r2(4809), i = a.extendFlat, o = a.extendDeep;
          function l(e3) {
            var t3;
            switch (e3) {
              case "themes__thumb":
                t3 = { autosize: true, width: 150, height: 150, title: { text: "" }, showlegend: false, margin: { l: 5, r: 5, t: 5, b: 5, pad: 0 }, annotations: [] };
                break;
              case "thumbnail":
                t3 = { title: { text: "" }, hidesources: true, showlegend: false, borderwidth: 0, bordercolor: "", margin: { l: 1, r: 1, t: 1, b: 1, pad: 0 }, annotations: [] };
                break;
              default:
                t3 = {};
            }
            return t3;
          }
          e2.exports = function(e3, t3) {
            var r3, a2, s = e3.data, c = e3.layout, u = o([], s), f = o({}, c, l(t3.tileClass)), d = e3._context || {};
            if (t3.width && (f.width = t3.width), t3.height && (f.height = t3.height), "thumbnail" === t3.tileClass || "themes__thumb" === t3.tileClass) {
              f.annotations = [];
              var h = Object.keys(f);
              for (r3 = 0; r3 < h.length; r3++) a2 = h[r3], ["xaxis", "yaxis", "zaxis"].indexOf(a2.slice(0, 5)) > -1 && (f[h[r3]].title = { text: "" });
              for (r3 = 0; r3 < u.length; r3++) {
                var p = u[r3];
                p.showscale = false, p.marker && (p.marker.showscale = false), n.traceIs(p, "pie-like") && (p.textposition = "none");
              }
            }
            if (Array.isArray(t3.annotations)) for (r3 = 0; r3 < t3.annotations.length; r3++) f.annotations.push(t3.annotations[r3]);
            var v = Object.keys(f).filter(function(e4) {
              return e4.match(/^scene\d*$/);
            });
            if (v.length) {
              var g = {};
              for ("thumbnail" === t3.tileClass && (g = { title: { text: "" }, showaxeslabels: false, showticklabels: false, linetickenable: false }), r3 = 0; r3 < v.length; r3++) {
                var m = f[v[r3]];
                m.xaxis || (m.xaxis = {}), m.yaxis || (m.yaxis = {}), m.zaxis || (m.zaxis = {}), i(m.xaxis, g), i(m.yaxis, g), i(m.zaxis, g), m._scene = null;
              }
            }
            var y = document.createElement("div");
            t3.tileClass && (y.className = t3.tileClass);
            var x = { gd: y, td: y, layout: f, data: u, config: { staticPlot: void 0 === t3.staticPlot || t3.staticPlot, plotGlPixelRatio: void 0 === t3.plotGlPixelRatio ? 2 : t3.plotGlPixelRatio, displaylogo: t3.displaylogo || false, showLink: t3.showLink || false, showTips: t3.showTips || false, mapboxAccessToken: d.mapboxAccessToken } };
            return "transparent" !== t3.setBackground && (x.config.setBackground = t3.setBackground || "opaque"), x.gd.defaultLayout = l(t3.tileClass), x;
          };
        }, 6452: function(e2, t2, r2) {
          var n = r2(4809), a = r2(491), i = r2(3353), o = r2(4619);
          e2.exports = function(e3, t3) {
            var r3;
            return n.isPlainObject(e3) || (r3 = n.getGraphDiv(e3)), (t3 = t3 || {}).format = t3.format || "png", t3.width = t3.width || null, t3.height = t3.height || null, t3.imageDataOnly = true, new Promise(function(l, s) {
              r3 && r3._snapshotInProgress && s(new Error("Snapshotting already in progress.")), n.isIE() && "svg" !== t3.format && s(new Error(o.MSG_IE_BAD_FORMAT)), r3 && (r3._snapshotInProgress = true);
              var c = a(e3, t3), u = t3.filename || e3.fn || "newplot";
              u += "." + t3.format.replace("-", "."), c.then(function(e4) {
                return r3 && (r3._snapshotInProgress = false), i(e4, u, t3.format);
              }).then(function(e4) {
                l(e4);
              }).catch(function(e4) {
                r3 && (r3._snapshotInProgress = false), s(e4);
              });
            });
          };
        }, 3353: function(e2, t2, r2) {
          var n = r2(4809), a = r2(4619);
          e2.exports = function(e3, t3, r3) {
            var i = document.createElement("a"), o = "download" in i;
            return new Promise(function(l, s) {
              var c, u;
              if (n.isIE()) return c = a.createBlob(e3, "svg"), window.navigator.msSaveBlob(c, t3), c = null, l(t3);
              if (o) return c = a.createBlob(e3, r3), u = a.createObjectURL(c), i.href = u, i.download = t3, document.body.appendChild(i), i.click(), document.body.removeChild(i), a.revokeObjectURL(u), c = null, l(t3);
              if (n.isSafari()) {
                var f = "svg" === r3 ? "," : ";base64,";
                return a.octetStream(f + encodeURIComponent(e3)), l(t3);
              }
              s(new Error("download error"));
            });
          };
        }, 4619: function(e2, t2, r2) {
          var n = r2(3626);
          t2.getDelay = function(e3) {
            return e3._has && (e3._has("gl3d") || e3._has("gl2d") || e3._has("mapbox") || e3._has("map")) ? 500 : 0;
          }, t2.getRedrawFunc = function(e3) {
            return function() {
              n.getComponentMethod("colorbar", "draw")(e3);
            };
          }, t2.encodeSVG = function(e3) {
            return "data:image/svg+xml," + encodeURIComponent(e3);
          }, t2.encodeJSON = function(e3) {
            return "data:application/json," + encodeURIComponent(e3);
          };
          var a = window.URL || window.webkitURL;
          t2.createObjectURL = function(e3) {
            return a.createObjectURL(e3);
          }, t2.revokeObjectURL = function(e3) {
            return a.revokeObjectURL(e3);
          }, t2.createBlob = function(e3, t3) {
            if ("svg" === t3) return new window.Blob([e3], { type: "image/svg+xml;charset=utf-8" });
            if ("full-json" === t3) return new window.Blob([e3], { type: "application/json;charset=utf-8" });
            var r3 = function(e4) {
              for (var t4 = e4.length, r4 = new ArrayBuffer(t4), n2 = new Uint8Array(r4), a2 = 0; a2 < t4; a2++) n2[a2] = e4.charCodeAt(a2);
              return r4;
            }(window.atob(e3));
            return new window.Blob([r3], { type: "image/" + t3 });
          }, t2.octetStream = function(e3) {
            document.location.href = "data:application/octet-stream" + e3;
          }, t2.IMAGE_URL_PREFIX = /^data:image\/\w+;base64,/, t2.MSG_IE_BAD_FORMAT = "Sorry IE does not support downloading from canvas. Try {format:'svg'} instead.";
        }, 6170: function(e2, t2, r2) {
          var n = r2(4619), a = { getDelay: n.getDelay, getRedrawFunc: n.getRedrawFunc, clone: r2(3164), toSVG: r2(6243), svgToImg: r2(2914), toImage: r2(6896), downloadImage: r2(6452) };
          e2.exports = a;
        }, 2914: function(e2, t2, r2) {
          var n = r2(4809), a = r2(7683).EventEmitter, i = r2(4619);
          e2.exports = function(e3) {
            var t3 = e3.emitter || new a(), r3 = new Promise(function(a2, o) {
              var l = window.Image, s = e3.svg, c = e3.format || "png";
              if (n.isIE() && "svg" !== c) {
                var u = new Error(i.MSG_IE_BAD_FORMAT);
                return o(u), e3.promise ? r3 : t3.emit("error", u);
              }
              var f, d, h = e3.canvas, p = e3.scale || 1, v = e3.width || 300, g = e3.height || 150, m = p * v, y = p * g, x = h.getContext("2d", { willReadFrequently: true }), b = new l();
              "svg" === c || n.isSafari() ? d = i.encodeSVG(s) : (f = i.createBlob(s, "svg"), d = i.createObjectURL(f)), h.width = m, h.height = y, b.onload = function() {
                var r4;
                switch (f = null, i.revokeObjectURL(d), "svg" !== c && x.drawImage(b, 0, 0, m, y), c) {
                  case "jpeg":
                    r4 = h.toDataURL("image/jpeg");
                    break;
                  case "png":
                    r4 = h.toDataURL("image/png");
                    break;
                  case "webp":
                    r4 = h.toDataURL("image/webp");
                    break;
                  case "svg":
                    r4 = d;
                    break;
                  default:
                    var n2 = "Image format is not jpeg, png, svg or webp.";
                    if (o(new Error(n2)), !e3.promise) return t3.emit("error", n2);
                }
                a2(r4), e3.promise || t3.emit("success", r4);
              }, b.onerror = function(r4) {
                if (f = null, i.revokeObjectURL(d), o(r4), !e3.promise) return t3.emit("error", r4);
              }, b.src = d;
            });
            return e3.promise ? r3 : t3;
          };
        }, 6896: function(e2, t2, r2) {
          var n = r2(7683).EventEmitter, a = r2(3626), i = r2(4809), o = r2(4619), l = r2(3164), s = r2(6243), c = r2(2914);
          e2.exports = function(e3, t3) {
            var r3 = new n(), u = l(e3, { format: "png" }), f = u.gd;
            f.style.position = "absolute", f.style.left = "-5000px", document.body.appendChild(f);
            var d = o.getRedrawFunc(f);
            return a.call("_doPlot", f, u.data, u.layout, u.config).then(d).then(function() {
              var e4 = o.getDelay(f._fullLayout);
              setTimeout(function() {
                var e5 = s(f), n2 = document.createElement("canvas");
                n2.id = i.randstr(), (r3 = c({ format: t3.format, width: f._fullLayout.width, height: f._fullLayout.height, canvas: n2, emitter: r3, svg: e5 })).clean = function() {
                  f && document.body.removeChild(f);
                };
              }, e4);
            }).catch(function(e4) {
              r3.emit("error", e4);
            }), r3;
          };
        }, 6243: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809), i = r2(2203), o = r2(8766), l = r2(2972), s = /"/g, c = "TOBESTRIPPED", u = new RegExp('("' + c + ")|(" + c + '")', "g");
          e2.exports = function(e3, t3, r3) {
            var f, d = e3._fullLayout, h = d._paper, p = d._toppaper, v = d.width, g = d.height;
            h.insert("rect", ":first-child").call(i.setRect, 0, 0, v, g).call(o.fill, d.paper_bgcolor);
            var m = d._basePlotModules || [];
            for (f = 0; f < m.length; f++) {
              var y = m[f];
              y.toSVG && y.toSVG(e3);
            }
            if (p) {
              var x = p.node().childNodes, b = Array.prototype.slice.call(x);
              for (f = 0; f < b.length; f++) {
                var _ = b[f];
                _.childNodes.length && h.node().appendChild(_);
              }
            }
            d._draggers && d._draggers.remove(), h.node().style.background = "", h.selectAll("text").attr({ "data-unformatted": null, "data-math": null }).each(function() {
              var e4 = n.select(this);
              if ("hidden" !== this.style.visibility && "none" !== this.style.display) {
                e4.style({ visibility: null, display: null });
                var t4 = this.style.fontFamily;
                t4 && -1 !== t4.indexOf('"') && e4.style("font-family", t4.replace(s, c));
                var r4 = this.style.fontWeight;
                !r4 || "normal" !== r4 && "400" !== r4 || e4.style("font-weight", void 0);
                var a2 = this.style.fontStyle;
                a2 && "normal" === a2 && e4.style("font-style", void 0);
                var i2 = this.style.fontVariant;
                i2 && "normal" === i2 && e4.style("font-variant", void 0);
              } else e4.remove();
            }), h.selectAll(".gradient_filled,.pattern_filled").each(function() {
              var e4 = n.select(this), t4 = this.style.fill;
              t4 && -1 !== t4.indexOf("url(") && e4.style("fill", t4.replace(s, c));
              var r4 = this.style.stroke;
              r4 && -1 !== r4.indexOf("url(") && e4.style("stroke", r4.replace(s, c));
            }), "pdf" !== t3 && "eps" !== t3 || h.selectAll("#MathJax_SVG_glyphs path").attr("stroke-width", 0), h.node().setAttributeNS(l.xmlns, "xmlns", l.svg), h.node().setAttributeNS(l.xmlns, "xmlns:xlink", l.xlink), "svg" === t3 && r3 && (h.attr("width", r3 * v), h.attr("height", r3 * g), h.attr("viewBox", "0 0 " + v + " " + g));
            var w = new window.XMLSerializer().serializeToString(h.node());
            return w = (w = (w = function(e4) {
              var t4 = n.select("body").append("div").style({ display: "none" }).html(""), r4 = e4.replace(/(&[^;]*;)/gi, function(e5) {
                return "&lt;" === e5 ? "&#60;" : "&rt;" === e5 ? "&#62;" : -1 !== e5.indexOf("<") || -1 !== e5.indexOf(">") ? "" : t4.html(e5).text();
              });
              return t4.remove(), r4;
            }(w)).replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g, "&amp;")).replace(u, "'"), a.isIE() && (w = (w = (w = w.replace(/"/gi, "'")).replace(/(\('#)([^']*)('\))/gi, '("#$2")')).replace(/(\\')/gi, '"')), w;
          };
        }, 5374: function(e2, t2, r2) {
          var n = r2(4809);
          e2.exports = function(e3, t3) {
            for (var r3 = 0; r3 < e3.length; r3++) e3[r3].i = r3;
            n.mergeArray(t3.text, e3, "tx"), n.mergeArray(t3.hovertext, e3, "htx");
            var a = t3.marker;
            if (a) {
              n.mergeArray(a.opacity, e3, "mo", true), n.mergeArray(a.color, e3, "mc");
              var i = a.line;
              i && (n.mergeArray(i.color, e3, "mlc"), n.mergeArrayCastPositive(i.width, e3, "mlw"));
            }
          };
        }, 1481: function(e2, t2, r2) {
          var n = r2(6640), a = r2(712).axisHoverFormat, i = r2(3208).rb, o = r2(3208).ay, l = r2(7163), s = r2(337), c = r2(6155), u = r2(4850).k, f = r2(3049).extendFlat, d = s({ editType: "calc", arrayOk: true, colorEditType: "style" }), h = f({}, n.marker.line.width, { dflt: 0 }), p = f({ width: h, editType: "calc" }, l("marker.line")), v = f({ line: p, editType: "calc" }, l("marker"), { opacity: { valType: "number", arrayOk: true, dflt: 1, min: 0, max: 1, editType: "style" }, pattern: u, cornerradius: { valType: "any", editType: "calc" } });
          e2.exports = { x: n.x, x0: n.x0, dx: n.dx, y: n.y, y0: n.y0, dy: n.dy, xperiod: n.xperiod, yperiod: n.yperiod, xperiod0: n.xperiod0, yperiod0: n.yperiod0, xperiodalignment: n.xperiodalignment, yperiodalignment: n.yperiodalignment, xhoverformat: a("x"), yhoverformat: a("y"), text: n.text, texttemplate: o({ editType: "plot" }, { keys: c.eventDataKeys }), hovertext: n.hovertext, hovertemplate: i({}, { keys: c.eventDataKeys }), textposition: { valType: "enumerated", values: ["inside", "outside", "auto", "none"], dflt: "auto", arrayOk: true, editType: "calc" }, insidetextanchor: { valType: "enumerated", values: ["end", "middle", "start"], dflt: "end", editType: "plot" }, textangle: { valType: "angle", dflt: "auto", editType: "plot" }, textfont: f({}, d, {}), insidetextfont: f({}, d, {}), outsidetextfont: f({}, d, {}), constraintext: { valType: "enumerated", values: ["inside", "outside", "both", "none"], dflt: "both", editType: "calc" }, cliponaxis: f({}, n.cliponaxis, {}), orientation: { valType: "enumerated", values: ["v", "h"], editType: "calc+clearAxisTypes" }, base: { valType: "any", dflt: null, arrayOk: true, editType: "calc" }, offset: { valType: "number", dflt: null, arrayOk: true, editType: "calc" }, width: { valType: "number", dflt: null, min: 0, arrayOk: true, editType: "calc" }, marker: v, offsetgroup: n.offsetgroup, alignmentgroup: n.alignmentgroup, selected: { marker: { opacity: n.selected.marker.opacity, color: n.selected.marker.color, editType: "style" }, textfont: n.selected.textfont, editType: "style" }, unselected: { marker: { opacity: n.unselected.marker.opacity, color: n.unselected.marker.color, editType: "style" }, textfont: n.unselected.textfont, editType: "style" }, zorder: n.zorder, _deprecated: { bardir: { valType: "enumerated", editType: "calc", values: ["v", "h"] } } };
        }, 7565: function(e2, t2, r2) {
          var n = r2(9714), a = r2(528), i = r2(5477).hasColorscale, o = r2(8379), l = r2(5374), s = r2(8861);
          e2.exports = function(e3, t3) {
            var r3, c, u, f, d, h, p = n.getFromId(e3, t3.xaxis || "x"), v = n.getFromId(e3, t3.yaxis || "y"), g = { msUTC: !(!t3.base && 0 !== t3.base) };
            "h" === t3.orientation ? (r3 = p.makeCalcdata(t3, "x", g), u = v.makeCalcdata(t3, "y"), f = a(t3, v, "y", u), d = !!t3.yperiodalignment, h = "y") : (r3 = v.makeCalcdata(t3, "y", g), u = p.makeCalcdata(t3, "x"), f = a(t3, p, "x", u), d = !!t3.xperiodalignment, h = "x"), c = f.vals;
            for (var m = Math.min(c.length, r3.length), y = new Array(m), x = 0; x < m; x++) y[x] = { p: c[x], s: r3[x] }, d && (y[x].orig_p = u[x], y[x][h + "End"] = f.ends[x], y[x][h + "Start"] = f.starts[x]), t3.ids && (y[x].id = String(t3.ids[x]));
            return i(t3, "marker") && o(e3, t3, { vals: t3.marker.color, containerStr: "marker", cLetter: "c" }), i(t3, "marker.line") && o(e3, t3, { vals: t3.marker.line.color, containerStr: "marker.line", cLetter: "c" }), l(y, t3), s(y, t3), y;
          };
        }, 6155: function(e2) {
          e2.exports = { TEXTPAD: 3, eventDataKeys: ["value", "label"] };
        }, 4782: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809).isArrayOrTypedArray, i = r2(3821).BADNUM, o = r2(3626), l = r2(9714), s = r2(4391).getAxisGroup, c = r2(2880);
          function u(e3, t3, r3, o2, u2) {
            if (o2.length) {
              var b, _, w, T;
              switch (function(e4, t4) {
                var r4, i2;
                for (r4 = 0; r4 < t4.length; r4++) {
                  var o3, l2 = t4[r4], s2 = l2[0].trace, c2 = "funnel" === s2.type ? s2._base : s2.base, u3 = "h" === s2.orientation ? s2.xcalendar : s2.ycalendar, f2 = "category" === e4.type || "multicategory" === e4.type ? function() {
                    return null;
                  } : e4.d2c;
                  if (a(c2)) {
                    for (i2 = 0; i2 < Math.min(c2.length, l2.length); i2++) o3 = f2(c2[i2], 0, u3), n(o3) ? (l2[i2].b = +o3, l2[i2].hasB = 1) : l2[i2].b = 0;
                    for (; i2 < l2.length; i2++) l2[i2].b = 0;
                  } else {
                    o3 = f2(c2, 0, u3);
                    var d2 = n(o3);
                    for (o3 = d2 ? o3 : 0, i2 = 0; i2 < l2.length; i2++) l2[i2].b = o3, d2 && (l2[i2].hasB = 1);
                  }
                }
              }(r3, o2), u2.mode) {
                case "overlay":
                  f(t3, r3, o2, u2);
                  break;
                case "group":
                  for (b = [], _ = [], w = 0; w < o2.length; w++) void 0 === (T = o2[w])[0].trace.offset ? _.push(T) : b.push(T);
                  _.length && function(e4, t4, r4, n2, a2) {
                    var o3 = new c(n2, { posAxis: t4, sepNegVal: false, overlapNoMerge: !a2.norm });
                    (function(e5, t5, r5, n3) {
                      for (var a3 = e5._fullLayout, i2 = r5.positions, o4 = r5.distinctPositions, l2 = r5.minDiff, c2 = r5.traces, u3 = c2.length, f2 = i2.length !== o4.length, d2 = l2 * (1 - n3.gap), g2 = s(a3, t5._id) + c2[0][0].trace.orientation, m2 = a3._alignmentOpts[g2] || {}, y2 = 0; y2 < u3; y2++) {
                        var x2, b2, _2 = c2[y2], w2 = _2[0].trace, T2 = m2[w2.alignmentgroup] || {}, M = Object.keys(T2.offsetGroups || {}).length, k = (x2 = M ? d2 / M : f2 ? d2 / u3 : d2) * (1 - (n3.groupgap || 0));
                        b2 = M ? ((2 * w2._offsetIndex + 1 - M) * x2 - k) / 2 : f2 ? ((2 * y2 + 1 - u3) * x2 - k) / 2 : -k / 2;
                        var A = _2[0].t;
                        A.barwidth = k, A.poffset = b2, A.bargroupwidth = d2, A.bardelta = l2;
                      }
                      r5.binWidth = c2[0][0].t.barwidth / 100, h(r5), p(t5, r5), v(t5, r5, f2);
                    })(e4, t4, o3, a2), function(e5, t5) {
                      for (var r5 = e5.traces, n3 = 0; n3 < r5.length; n3++) {
                        var a3 = r5[n3];
                        if (void 0 === a3[0].trace.base) for (var o4 = new c([a3], { posAxis: t5, sepNegVal: true, overlapNoMerge: true }), l2 = 0; l2 < a3.length; l2++) {
                          var s2 = a3[l2];
                          if (s2.p !== i) {
                            var u3 = o4.put(s2.p, s2.b + s2.s);
                            u3 && (s2.b = u3);
                          }
                        }
                      }
                    }(o3, t4), a2.norm ? (m(o3), y(r4, o3, a2)) : g(r4, o3);
                  }(e3, t3, r3, _, u2), b.length && f(t3, r3, b, u2);
                  break;
                case "stack":
                case "relative":
                  for (b = [], _ = [], w = 0; w < o2.length; w++) void 0 === (T = o2[w])[0].trace.base ? _.push(T) : b.push(T);
                  !function(e4) {
                    if (!(e4.length < 2)) {
                      var t4, r4, a2, i2, o3, l2;
                      for (t4 = 0; t4 < e4.length && void 0 === (i2 = (r4 = e4[t4][0].trace).marker ? r4.marker.cornerradius : void 0); t4++) ;
                      if (void 0 !== i2) for (o3 = n(i2) ? +i2 : +i2.slice(0, -1), l2 = n(i2) ? "px" : "%", t4 = 0; t4 < e4.length; t4++) (a2 = e4[t4][0].t).cornerradiusvalue = o3, a2.cornerradiusform = l2;
                    }
                  }(_), _.length && function(e4, t4, r4, n2, a2) {
                    var o3 = new c(n2, { posAxis: t4, sepNegVal: "relative" === a2.mode, overlapNoMerge: !(a2.norm || "stack" === a2.mode || "relative" === a2.mode) });
                    d(t4, o3, a2), function(e5, t5, r5) {
                      var n3, a3, o4, s3, c2, u4, f3 = x(e5), d2 = t5.traces;
                      for (s3 = 0; s3 < d2.length; s3++) if ("funnel" === (a3 = (n3 = d2[s3])[0].trace).type) for (c2 = 0; c2 < n3.length; c2++) (u4 = n3[c2]).s !== i && t5.put(u4.p, -0.5 * u4.s);
                      for (s3 = 0; s3 < d2.length; s3++) {
                        o4 = "funnel" === (a3 = (n3 = d2[s3])[0].trace).type;
                        var h3 = [];
                        for (c2 = 0; c2 < n3.length; c2++) if ((u4 = n3[c2]).s !== i) {
                          var p2;
                          p2 = o4 ? u4.s : u4.s + u4.b;
                          var v2 = t5.put(u4.p, p2), g2 = v2 + p2;
                          u4.b = v2, u4[f3] = g2, r5.norm || (h3.push(g2), u4.hasB && h3.push(v2));
                        }
                        r5.norm || (a3._extremes[e5._id] = l.findExtremes(e5, h3, { tozero: true, padded: true }));
                      }
                    }(r4, o3, a2);
                    for (var s2 = 0; s2 < n2.length; s2++) for (var u3 = n2[s2], f2 = 0; f2 < u3.length; f2++) {
                      var h2 = u3[f2];
                      h2.s !== i && h2.b + h2.s === o3.get(h2.p, h2.s) && (h2._outmost = true);
                    }
                    a2.norm && y(r4, o3, a2);
                  }(0, t3, r3, _, u2), b.length && f(t3, r3, b, u2);
              }
              !function(e4) {
                var t4, r4, a2, i2, o3, l2, s2;
                for (t4 = 0; t4 < e4.length; t4++) a2 = (r4 = e4[t4])[0].trace, void 0 === (i2 = r4[0].t).cornerradiusvalue && void 0 !== (o3 = a2.marker ? a2.marker.cornerradius : void 0) && (l2 = n(o3) ? +o3 : +o3.slice(0, -1), s2 = n(o3) ? "px" : "%", i2.cornerradiusvalue = l2, i2.cornerradiusform = s2);
              }(o2), function(e4, t4) {
                var r4, i2, o3, l2 = x(t4), s2 = {}, c2 = 1 / 0, u3 = -1 / 0;
                for (r4 = 0; r4 < e4.length; r4++) for (o3 = e4[r4], i2 = 0; i2 < o3.length; i2++) {
                  var f2 = o3[i2].p;
                  n(f2) && (c2 = Math.min(c2, f2), u3 = Math.max(u3, f2));
                }
                var d2 = 1e4 / (u3 - c2), h2 = s2.round = function(e5) {
                  return String(Math.round(d2 * (e5 - c2)));
                }, p2 = {}, v2 = {}, g2 = e4.some(function(e5) {
                  var t5 = e5[0].trace;
                  return "marker" in t5 && t5.marker.cornerradius;
                });
                for (r4 = 0; r4 < e4.length; r4++) {
                  (o3 = e4[r4])[0].t.extents = s2;
                  var m2 = o3[0].t.poffset, y2 = a(m2);
                  for (i2 = 0; i2 < o3.length; i2++) {
                    var b2 = o3[i2], _2 = b2[l2] - b2.w / 2;
                    if (n(_2)) {
                      var w2 = b2[l2] + b2.w / 2, T2 = h2(b2.p);
                      s2[T2] ? s2[T2] = [Math.min(_2, s2[T2][0]), Math.max(w2, s2[T2][1])] : s2[T2] = [_2, w2];
                    }
                    if (b2.p0 = b2.p + (y2 ? m2[i2] : m2), b2.p1 = b2.p0 + b2.w, b2.s0 = b2.b, b2.s1 = b2.s0 + b2.s, g2) {
                      var M = Math.min(b2.s0, b2.s1) || 0, k = Math.max(b2.s0, b2.s1) || 0, A = b2[l2];
                      p2[A] = A in p2 ? Math.min(p2[A], M) : M, v2[A] = A in v2 ? Math.max(v2[A], k) : k;
                    }
                  }
                }
                g2 && function(e5, t5, r5, n2) {
                  for (var a2 = x(n2), i3 = 0; i3 < e5.length; i3++) for (var o4 = e5[i3], l3 = 0; l3 < o4.length; l3++) {
                    var s3 = o4[l3], c3 = s3[a2];
                    s3._sMin = t5[c3], s3._sMax = r5[c3];
                  }
                }(e4, p2, v2, t4);
              }(o2, t3);
            }
          }
          function f(e3, t3, r3, n2) {
            for (var a2 = 0; a2 < r3.length; a2++) {
              var i2 = r3[a2], o2 = new c([i2], { posAxis: e3, sepNegVal: false, overlapNoMerge: !n2.norm });
              d(e3, o2, n2), n2.norm ? (m(o2), y(t3, o2, n2)) : g(t3, o2);
            }
          }
          function d(e3, t3, r3) {
            for (var n2 = t3.minDiff, a2 = t3.traces, i2 = n2 * (1 - r3.gap), o2 = i2 * (1 - (r3.groupgap || 0)), l2 = -o2 / 2, s2 = 0; s2 < a2.length; s2++) {
              var c2 = a2[s2][0].t;
              c2.barwidth = o2, c2.poffset = l2, c2.bargroupwidth = i2, c2.bardelta = n2;
            }
            t3.binWidth = a2[0][0].t.barwidth / 100, h(t3), p(e3, t3), v(e3, t3);
          }
          function h(e3) {
            var t3, r3, i2 = e3.traces;
            for (t3 = 0; t3 < i2.length; t3++) {
              var o2, l2 = i2[t3], s2 = l2[0], c2 = s2.trace, u2 = s2.t, f2 = c2._offset || c2.offset, d2 = u2.poffset;
              if (a(f2)) {
                for (o2 = Array.prototype.slice.call(f2, 0, l2.length), r3 = 0; r3 < o2.length; r3++) n(o2[r3]) || (o2[r3] = d2);
                for (r3 = o2.length; r3 < l2.length; r3++) o2.push(d2);
                u2.poffset = o2;
              } else void 0 !== f2 && (u2.poffset = f2);
              var h2 = c2._width || c2.width, p2 = u2.barwidth;
              if (a(h2)) {
                var v2 = Array.prototype.slice.call(h2, 0, l2.length);
                for (r3 = 0; r3 < v2.length; r3++) n(v2[r3]) || (v2[r3] = p2);
                for (r3 = v2.length; r3 < l2.length; r3++) v2.push(p2);
                if (u2.barwidth = v2, void 0 === f2) {
                  for (o2 = [], r3 = 0; r3 < l2.length; r3++) o2.push(d2 + (p2 - v2[r3]) / 2);
                  u2.poffset = o2;
                }
              } else void 0 !== h2 && (u2.barwidth = h2, void 0 === f2 && (u2.poffset = d2 + (p2 - h2) / 2));
            }
          }
          function p(e3, t3) {
            for (var r3 = t3.traces, n2 = x(e3), i2 = 0; i2 < r3.length; i2++) for (var o2 = r3[i2], l2 = o2[0].t, s2 = l2.poffset, c2 = a(s2), u2 = l2.barwidth, f2 = a(u2), d2 = 0; d2 < o2.length; d2++) {
              var h2 = o2[d2], p2 = h2.w = f2 ? u2[d2] : u2;
              void 0 === h2.p && (h2.p = h2[n2], h2["orig_" + n2] = h2[n2]);
              var v2 = (c2 ? s2[d2] : s2) + p2 / 2;
              h2[n2] = h2.p + v2;
            }
          }
          function v(e3, t3, r3) {
            var n2 = t3.traces, i2 = t3.minDiff / 2;
            l.minDtick(e3, t3.minDiff, t3.distinctPositions[0], r3);
            for (var o2 = 0; o2 < n2.length; o2++) {
              var s2, c2, u2, f2, d2 = n2[o2], h2 = d2[0], p2 = h2.trace, v2 = [];
              for (f2 = 0; f2 < d2.length; f2++) c2 = (s2 = d2[f2]).p - i2, u2 = s2.p + i2, v2.push(c2, u2);
              if (p2.width || p2.offset) {
                var g2 = h2.t, m2 = g2.poffset, y2 = g2.barwidth, x2 = a(m2), b = a(y2);
                for (f2 = 0; f2 < d2.length; f2++) {
                  s2 = d2[f2];
                  var _ = x2 ? m2[f2] : m2, w = b ? y2[f2] : y2;
                  u2 = (c2 = s2.p + _) + w, v2.push(c2, u2);
                }
              }
              p2._extremes[e3._id] = l.findExtremes(e3, v2, { padded: false });
            }
          }
          function g(e3, t3) {
            for (var r3 = t3.traces, n2 = x(e3), a2 = 0; a2 < r3.length; a2++) {
              for (var i2 = r3[a2], o2 = i2[0].trace, s2 = "scatter" === o2.type, c2 = "v" === o2.orientation, u2 = [], f2 = false, d2 = 0; d2 < i2.length; d2++) {
                var h2 = i2[d2], p2 = s2 ? 0 : h2.b, v2 = s2 ? c2 ? h2.y : h2.x : p2 + h2.s;
                h2[n2] = v2, u2.push(v2), h2.hasB && u2.push(p2), h2.hasB && h2.b || (f2 = true);
              }
              o2._extremes[e3._id] = l.findExtremes(e3, u2, { tozero: f2, padded: true });
            }
          }
          function m(e3) {
            for (var t3 = e3.traces, r3 = 0; r3 < t3.length; r3++) for (var n2 = t3[r3], a2 = 0; a2 < n2.length; a2++) {
              var o2 = n2[a2];
              o2.s !== i && e3.put(o2.p, o2.b + o2.s);
            }
          }
          function y(e3, t3, r3) {
            var a2 = t3.traces, o2 = x(e3), s2 = "fraction" === r3.norm ? 1 : 100, c2 = s2 / 1e9, u2 = e3.l2c(e3.c2l(0)), f2 = "stack" === r3.mode ? s2 : u2;
            function d2(t4) {
              return n(e3.c2l(t4)) && (t4 < u2 - c2 || t4 > f2 + c2 || !n(u2));
            }
            for (var h2 = 0; h2 < a2.length; h2++) {
              for (var p2 = a2[h2], v2 = p2[0].trace, g2 = [], m2 = false, y2 = false, b = 0; b < p2.length; b++) {
                var _ = p2[b];
                if (_.s !== i) {
                  var w = Math.abs(s2 / t3.get(_.p, _.s));
                  _.b *= w, _.s *= w;
                  var T = _.b, M = T + _.s;
                  _[o2] = M, g2.push(M), y2 = y2 || d2(M), _.hasB && (g2.push(T), y2 = y2 || d2(T)), _.hasB && _.b || (m2 = true);
                }
              }
              v2._extremes[e3._id] = l.findExtremes(e3, g2, { tozero: m2, padded: y2 });
            }
          }
          function x(e3) {
            return e3._id.charAt(0);
          }
          e2.exports = { crossTraceCalc: function(e3, t3) {
            for (var r3 = t3.xaxis, n2 = t3.yaxis, a2 = e3._fullLayout, i2 = e3._fullData, l2 = e3.calcdata, s2 = [], c2 = [], f2 = 0; f2 < i2.length; f2++) {
              var d2 = i2[f2];
              if (true === d2.visible && o.traceIs(d2, "bar") && d2.xaxis === r3._id && d2.yaxis === n2._id && ("h" === d2.orientation ? s2.push(l2[f2]) : c2.push(l2[f2]), d2._computePh)) for (var h2 = e3.calcdata[f2], p2 = 0; p2 < h2.length; p2++) "function" == typeof h2[p2].ph0 && (h2[p2].ph0 = h2[p2].ph0()), "function" == typeof h2[p2].ph1 && (h2[p2].ph1 = h2[p2].ph1());
            }
            var v2 = { xCat: "category" === r3.type || "multicategory" === r3.type, yCat: "category" === n2.type || "multicategory" === n2.type, mode: a2.barmode, norm: a2.barnorm, gap: a2.bargap, groupgap: a2.bargroupgap };
            u(e3, r3, n2, c2, v2), u(e3, n2, r3, s2, v2);
          }, setGroupPositions: u };
        }, 7550: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(8766), o = r2(3626), l = r2(9867), s = r2(9669), c = r2(9760), u = r2(6301), f = r2(1481), d = a.coerceFont;
          function h(e3) {
            if (n(e3)) {
              if ((e3 = +e3) >= 0) return e3;
            } else if ("string" == typeof e3 && "%" === (e3 = e3.trim()).slice(-1) && n(e3.slice(0, -1)) && (e3 = +e3.slice(0, -1)) >= 0) return e3 + "%";
          }
          function p(e3, t3, r3, n2, i2, o2) {
            var l2 = !(false === (o2 = o2 || {}).moduleHasSelected), s2 = !(false === o2.moduleHasUnselected), c2 = !(false === o2.moduleHasConstrain), u2 = !(false === o2.moduleHasCliponaxis), f2 = !(false === o2.moduleHasTextangle), h2 = !(false === o2.moduleHasInsideanchor), p2 = !!o2.hasPathbar, v = Array.isArray(i2) || "auto" === i2, g = v || "inside" === i2, m = v || "outside" === i2;
            if (g || m) {
              var y = d(n2, "textfont", r3.font), x = a.extendFlat({}, y), b = !(e3.textfont && e3.textfont.color);
              if (b && delete x.color, d(n2, "insidetextfont", x), p2) {
                var _ = a.extendFlat({}, y);
                b && delete _.color, d(n2, "pathbar.textfont", _);
              }
              m && d(n2, "outsidetextfont", y), l2 && n2("selected.textfont.color"), s2 && n2("unselected.textfont.color"), c2 && n2("constraintext"), u2 && n2("cliponaxis"), f2 && n2("textangle"), n2("texttemplate");
            }
            g && h2 && n2("insidetextanchor");
          }
          e2.exports = { supplyDefaults: function(e3, t3, r3, n2) {
            function u2(r4, n3) {
              return a.coerce(e3, t3, f, r4, n3);
            }
            if (l(e3, t3, n2, u2)) {
              s(e3, t3, n2, u2), u2("xhoverformat"), u2("yhoverformat"), u2("zorder"), u2("orientation", t3.x && !t3.y ? "h" : "v"), u2("base"), u2("offset"), u2("width"), u2("text"), u2("hovertext"), u2("hovertemplate");
              var d2 = u2("textposition");
              p(e3, 0, n2, u2, d2, { moduleHasSelected: true, moduleHasUnselected: true, moduleHasConstrain: true, moduleHasCliponaxis: true, moduleHasTextangle: true, moduleHasInsideanchor: true }), c(e3, t3, u2, r3, n2);
              var h2 = (t3.marker.line || {}).color, v = o.getComponentMethod("errorbars", "supplyDefaults");
              v(e3, t3, h2 || i.defaultLine, { axis: "y" }), v(e3, t3, h2 || i.defaultLine, { axis: "x", inherit: "y" }), a.coerceSelectionMarkerOpacity(t3, u2);
            } else t3.visible = false;
          }, crossTraceDefaults: function(e3, t3) {
            var r3, n2;
            function i2(e4, t4) {
              return a.coerce(n2._input, n2, f, e4, t4);
            }
            for (var o2 = 0; o2 < e3.length; o2++) if ("bar" === (n2 = e3[o2]).type) {
              r3 = n2._input;
              var l2 = i2("marker.cornerradius", t3.barcornerradius);
              n2.marker && (n2.marker.cornerradius = h(l2)), "group" === t3.barmode && u(r3, n2, t3, i2);
            }
          }, handleText: p, validateCornerradius: h };
        }, 9541: function(e2) {
          e2.exports = function(e3, t2, r2) {
            return e3.x = "xVal" in t2 ? t2.xVal : t2.x, e3.y = "yVal" in t2 ? t2.yVal : t2.y, t2.xa && (e3.xaxis = t2.xa), t2.ya && (e3.yaxis = t2.ya), "h" === r2.orientation ? (e3.label = e3.y, e3.value = e3.x) : (e3.label = e3.x, e3.value = e3.y), e3;
          };
        }, 2843: function(e2, t2, r2) {
          var n = r2(721), a = r2(5657), i = r2(4809).isArrayOrTypedArray;
          t2.coerceString = function(e3, t3, r3) {
            if ("string" == typeof t3) {
              if (t3 || !e3.noBlank) return t3;
            } else if (("number" == typeof t3 || true === t3) && !e3.strict) return String(t3);
            return void 0 !== r3 ? r3 : e3.dflt;
          }, t2.coerceNumber = function(e3, t3, r3) {
            if (n(t3)) {
              t3 = +t3;
              var a2 = e3.min, i2 = e3.max;
              if (!(void 0 !== a2 && t3 < a2 || void 0 !== i2 && t3 > i2)) return t3;
            }
            return void 0 !== r3 ? r3 : e3.dflt;
          }, t2.coerceColor = function(e3, t3, r3) {
            return a(t3).isValid() ? t3 : void 0 !== r3 ? r3 : e3.dflt;
          }, t2.coerceEnumerated = function(e3, t3, r3) {
            return e3.coerceNumber && (t3 = +t3), -1 !== e3.values.indexOf(t3) ? t3 : void 0 !== r3 ? r3 : e3.dflt;
          }, t2.getValue = function(e3, t3) {
            var r3;
            return i(e3) ? t3 < e3.length && (r3 = e3[t3]) : r3 = e3, r3;
          }, t2.getLineWidth = function(e3, t3) {
            return 0 < t3.mlw ? t3.mlw : i(e3.marker.line.width) ? 0 : e3.marker.line.width;
          };
        }, 1664: function(e2, t2, r2) {
          var n = r2(2141), a = r2(3626), i = r2(8766), o = r2(4809).fillText, l = r2(2843).getLineWidth, s = r2(9714).hoverLabelText, c = r2(3821).BADNUM;
          function u(e3, t3, r3, a2, i2) {
            var l2, u2, f2, d, h, p, v, g = e3.cd, m = g[0].trace, y = g[0].t, x = "closest" === a2, b = "waterfall" === m.type, _ = e3.maxHoverDistance, w = e3.maxSpikeDistance;
            "h" === m.orientation ? (l2 = r3, u2 = t3, f2 = "y", d = "x", h = I, p = P) : (l2 = t3, u2 = r3, f2 = "x", d = "y", p = I, h = P);
            var T = m[f2 + "period"], M = x || T;
            function k(e4) {
              return L(e4, -1);
            }
            function A(e4) {
              return L(e4, 1);
            }
            function L(e4, t4) {
              var r4 = e4.w;
              return e4[f2] + t4 * r4 / 2;
            }
            function S(e4) {
              return e4[f2 + "End"] - e4[f2 + "Start"];
            }
            var C = x ? k : T ? function(e4) {
              return e4.p - S(e4) / 2;
            } : function(e4) {
              return Math.min(k(e4), e4.p - y.bardelta / 2);
            }, O = x ? A : T ? function(e4) {
              return e4.p + S(e4) / 2;
            } : function(e4) {
              return Math.max(A(e4), e4.p + y.bardelta / 2);
            };
            function D(e4, t4, r4) {
              return i2.finiteRange && (r4 = 0), n.inbox(e4 - l2, t4 - l2, r4 + Math.min(1, Math.abs(t4 - e4) / v) - 1);
            }
            function P(e4) {
              return D(C(e4), O(e4), _);
            }
            function z(e4) {
              var t4 = e4[d];
              if (b) {
                var r4 = Math.abs(e4.rawS) || 0;
                u2 > 0 ? t4 += r4 : u2 < 0 && (t4 -= r4);
              }
              return t4;
            }
            function I(e4) {
              var t4 = u2, r4 = e4.b, a3 = z(e4);
              return n.inbox(r4 - t4, a3 - t4, _ + (a3 - t4) / (a3 - r4) - 1);
            }
            var E = e3[f2 + "a"], R = e3[d + "a"];
            v = Math.abs(E.r2c(E.range[1]) - E.r2c(E.range[0]));
            var N = n.getDistanceFunction(a2, h, p, function(e4) {
              return (h(e4) + p(e4)) / 2;
            });
            if (n.getClosest(g, N, e3), false !== e3.index && g[e3.index].p !== c) {
              M || (C = function(e4) {
                return Math.min(k(e4), e4.p - y.bargroupwidth / 2);
              }, O = function(e4) {
                return Math.max(A(e4), e4.p + y.bargroupwidth / 2);
              });
              var F = g[e3.index], H = m.base ? F.b + F.s : F.s;
              e3[d + "0"] = e3[d + "1"] = R.c2p(F[d], true), e3[d + "LabelVal"] = H;
              var B = y.extents[y.extents.round(F.p)];
              e3[f2 + "0"] = E.c2p(x ? C(F) : B[0], true), e3[f2 + "1"] = E.c2p(x ? O(F) : B[1], true);
              var j = void 0 !== F.orig_p;
              return e3[f2 + "LabelVal"] = j ? F.orig_p : F.p, e3.labelLabel = s(E, e3[f2 + "LabelVal"], m[f2 + "hoverformat"]), e3.valueLabel = s(R, e3[d + "LabelVal"], m[d + "hoverformat"]), e3.baseLabel = s(R, F.b, m[d + "hoverformat"]), e3.spikeDistance = (function(e4) {
                var t4 = u2, r4 = e4.b, a3 = z(e4);
                return n.inbox(r4 - t4, a3 - t4, w + (a3 - t4) / (a3 - r4) - 1);
              }(F) + function(e4) {
                return D(k(e4), A(e4), w);
              }(F)) / 2, e3[f2 + "Spike"] = E.c2p(F.p, true), o(F, m, e3), e3.hovertemplate = m.hovertemplate, e3;
            }
          }
          function f(e3, t3) {
            var r3 = t3.mcc || e3.marker.color, n2 = t3.mlcc || e3.marker.line.color, a2 = l(e3, t3);
            return i.opacity(r3) ? r3 : i.opacity(n2) && a2 ? n2 : void 0;
          }
          e2.exports = { hoverPoints: function(e3, t3, r3, n2, i2) {
            var o2 = u(e3, t3, r3, n2, i2);
            if (o2) {
              var l2 = o2.cd, s2 = l2[0].trace, c2 = l2[o2.index];
              return o2.color = f(s2, c2), a.getComponentMethod("errorbars", "hoverInfo")(c2, s2, o2), [o2];
            }
          }, hoverOnBars: u, getTraceColor: f };
        }, 8218: function(e2, t2, r2) {
          e2.exports = { attributes: r2(1481), layoutAttributes: r2(5412), supplyDefaults: r2(7550).supplyDefaults, crossTraceDefaults: r2(7550).crossTraceDefaults, supplyLayoutDefaults: r2(8931), calc: r2(7565), crossTraceCalc: r2(4782).crossTraceCalc, colorbar: r2(1146), arraysToCalcdata: r2(5374), plot: r2(2995).plot, style: r2(6851).style, styleOnSelect: r2(6851).styleOnSelect, hoverPoints: r2(1664).hoverPoints, eventData: r2(9541), selectPoints: r2(8384), moduleType: "trace", name: "bar", basePlotModule: r2(84), categories: ["bar-like", "cartesian", "svg", "bar", "oriented", "errorBarsOK", "showLegend", "zoomScale"], animatable: true, meta: {} };
        }, 5412: function(e2) {
          e2.exports = { barmode: { valType: "enumerated", values: ["stack", "group", "overlay", "relative"], dflt: "group", editType: "calc" }, barnorm: { valType: "enumerated", values: ["", "fraction", "percent"], dflt: "", editType: "calc" }, bargap: { valType: "number", min: 0, max: 1, editType: "calc" }, bargroupgap: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc" }, barcornerradius: { valType: "any", editType: "calc" } };
        }, 8931: function(e2, t2, r2) {
          var n = r2(3626), a = r2(9714), i = r2(4809), o = r2(5412), l = r2(7550).validateCornerradius;
          e2.exports = function(e3, t3, r3) {
            function s(r4, n2) {
              return i.coerce(e3, t3, o, r4, n2);
            }
            for (var c = false, u = false, f = false, d = {}, h = s("barmode"), p = 0; p < r3.length; p++) {
              var v = r3[p];
              if (n.traceIs(v, "bar") && v.visible) {
                if (c = true, "group" === h) {
                  var g = v.xaxis + v.yaxis;
                  d[g] && (f = true), d[g] = true;
                }
                v.visible && "histogram" === v.type && "category" !== a.getFromId({ _fullLayout: t3 }, v["v" === v.orientation ? "xaxis" : "yaxis"]).type && (u = true);
              }
            }
            if (c) {
              "overlay" !== h && s("barnorm"), s("bargap", u && !f ? 0 : 0.2), s("bargroupgap");
              var m = s("barcornerradius");
              t3.barcornerradius = l(m);
            } else delete t3.barmode;
          };
        }, 2995: function(e2, t2, r2) {
          var n = r2(5568), a = r2(721), i = r2(4809), o = r2(635), l = r2(8766), s = r2(2203), c = r2(3626), u = r2(9714).tickText, f = r2(4102), d = f.recordMinTextSize, h = f.clearMinTextSize, p = r2(6851), v = r2(2843), g = r2(6155), m = r2(1481), y = m.text, x = m.textposition, b = r2(6040).appendArrayPointValue, _ = g.TEXTPAD;
          function w(e3) {
            return e3.id;
          }
          function T(e3) {
            if (e3.ids) return w;
          }
          function M(e3) {
            return (e3 > 0) - (e3 < 0);
          }
          function k(e3, t3) {
            return e3 < t3 ? 1 : -1;
          }
          function A(e3, t3, r3, n2) {
            var a2;
            return !t3.uniformtext.mode && L(r3) ? (n2 && (a2 = n2()), e3.transition().duration(r3.duration).ease(r3.easing).each("end", function() {
              a2 && a2();
            }).each("interrupt", function() {
              a2 && a2();
            })) : e3;
          }
          function L(e3) {
            return e3 && e3.duration > 0;
          }
          function S(e3, t3, r3, n2, a2) {
            return !(e3 < 0 || t3 < 0) && (r3 <= e3 && n2 <= t3 || r3 <= t3 && n2 <= e3 || (a2 ? e3 >= r3 * (t3 / n2) : t3 >= n2 * (e3 / r3)));
          }
          function C(e3) {
            return "auto" === e3 ? 0 : e3;
          }
          function O(e3, t3) {
            var r3 = Math.PI / 180 * t3, n2 = Math.abs(Math.sin(r3)), a2 = Math.abs(Math.cos(r3));
            return { x: e3.width * a2 + e3.height * n2, y: e3.width * n2 + e3.height * a2 };
          }
          function D(e3, t3, r3, n2, a2, i2) {
            var o2 = !!i2.isHorizontal, l2 = !!i2.constrained, s2 = i2.angle || 0, c2 = i2.anchor, u2 = "end" === c2, f2 = "start" === c2, d2 = ((i2.leftToRight || 0) + 1) / 2, h2 = 1 - d2, p2 = i2.hasB, v2 = i2.r, g2 = i2.overhead, m2 = a2.width, y2 = a2.height, x2 = Math.abs(t3 - e3), b2 = Math.abs(n2 - r3), w2 = x2 > 2 * _ && b2 > 2 * _ ? _ : 0;
            x2 -= 2 * w2, b2 -= 2 * w2;
            var T2 = C(s2);
            "auto" !== s2 || m2 <= x2 && y2 <= b2 || !(m2 > x2 || y2 > b2) || (m2 > b2 || y2 > x2) && m2 < y2 == x2 < b2 || (T2 += 90);
            var M2, A2, L2 = O(a2, T2);
            if (v2 && v2 - g2 > _) {
              var S2 = function(e4, t4, r4, n3, a3, i3, o3, l3, s3) {
                var c3, u3, f3, d3, h3 = Math.max(0, Math.abs(t4 - e4) - 2 * _), p3 = Math.max(0, Math.abs(n3 - r4) - 2 * _), v3 = i3 - _, g3 = o3 ? v3 - Math.sqrt(v3 * v3 - (v3 - o3) * (v3 - o3)) : v3, m3 = s3 ? 2 * v3 : l3 ? v3 - o3 : 2 * g3, y3 = s3 ? 2 * v3 : l3 ? 2 * g3 : v3 - o3;
                return a3.y / a3.x >= p3 / (h3 - m3) ? d3 = p3 / a3.y : a3.y / a3.x <= (p3 - y3) / h3 ? d3 = h3 / a3.x : !s3 && l3 ? (c3 = a3.x * a3.x + a3.y * a3.y / 4, f3 = (h3 - v3) * (h3 - v3) + (p3 / 2 - v3) * (p3 / 2 - v3) - v3 * v3, d3 = (-(u3 = -2 * a3.x * (h3 - v3) - a3.y * (p3 / 2 - v3)) + Math.sqrt(u3 * u3 - 4 * c3 * f3)) / (2 * c3)) : s3 ? (c3 = (a3.x * a3.x + a3.y * a3.y) / 4, f3 = (h3 / 2 - v3) * (h3 / 2 - v3) + (p3 / 2 - v3) * (p3 / 2 - v3) - v3 * v3, d3 = (-(u3 = -a3.x * (h3 / 2 - v3) - a3.y * (p3 / 2 - v3)) + Math.sqrt(u3 * u3 - 4 * c3 * f3)) / (2 * c3)) : (c3 = a3.x * a3.x / 4 + a3.y * a3.y, f3 = (h3 / 2 - v3) * (h3 / 2 - v3) + (p3 - v3) * (p3 - v3) - v3 * v3, d3 = (-(u3 = -a3.x * (h3 / 2 - v3) - 2 * a3.y * (p3 - v3)) + Math.sqrt(u3 * u3 - 4 * c3 * f3)) / (2 * c3)), { scale: d3 = Math.min(1, d3), pad: l3 ? Math.max(0, v3 - Math.sqrt(Math.max(0, v3 * v3 - (v3 - (p3 - a3.y * d3) / 2) * (v3 - (p3 - a3.y * d3) / 2))) - o3) : Math.max(0, v3 - Math.sqrt(Math.max(0, v3 * v3 - (v3 - (h3 - a3.x * d3) / 2) * (v3 - (h3 - a3.x * d3) / 2))) - o3) };
              }(e3, t3, r3, n2, L2, v2, g2, o2, p2);
              M2 = S2.scale, A2 = S2.pad;
            } else M2 = 1, l2 && (M2 = Math.min(1, x2 / L2.x, b2 / L2.y)), A2 = 0;
            var D2 = a2.left * h2 + a2.right * d2, P = (a2.top + a2.bottom) / 2, z = (e3 + _) * h2 + (t3 - _) * d2, I = (r3 + n2) / 2, E = 0, R = 0;
            if (f2 || u2) {
              var N = (o2 ? L2.x : L2.y) / 2;
              v2 && (u2 || p2) && (w2 += A2);
              var F = o2 ? k(e3, t3) : k(r3, n2);
              o2 ? f2 ? (z = e3 + F * w2, E = -F * N) : (z = t3 - F * w2, E = F * N) : f2 ? (I = r3 + F * w2, R = -F * N) : (I = n2 - F * w2, R = F * N);
            }
            return { textX: D2, textY: P, targetX: z, targetY: I, anchorX: E, anchorY: R, scale: M2, rotate: T2 };
          }
          e2.exports = { plot: function(e3, t3, r3, f2, g2, m2) {
            var w2 = t3.xaxis, P = t3.yaxis, z = e3._fullLayout, I = e3._context.staticPlot;
            g2 || (g2 = { mode: z.barmode, norm: z.barmode, gap: z.bargap, groupgap: z.bargroupgap }, h("bar", z));
            var E = i.makeTraceGroups(f2, r3, "trace bars").each(function(r4) {
              var c2 = n.select(this), f3 = r4[0].trace, h2 = r4[0].t, E2 = "waterfall" === f3.type, R = "funnel" === f3.type, N = "histogram" === f3.type, F = "bar" === f3.type, H = F || R, B = 0;
              E2 && f3.connector.visible && "between" === f3.connector.mode && (B = f3.connector.line.width / 2);
              var j = "h" === f3.orientation, Y = L(g2), V = i.ensureSingle(c2, "g", "points"), U = T(f3), q = V.selectAll("g.point").data(i.identity, U);
              q.enter().append("g").classed("point", true), q.exit().remove(), q.each(function(c3, T2) {
                var L2, E3, R2 = n.select(this), V2 = function(e4, t4, r5, n2) {
                  var a2 = [], i2 = [], o2 = n2 ? t4 : r5, l2 = n2 ? r5 : t4;
                  return a2[0] = o2.c2p(e4.s0, true), i2[0] = l2.c2p(e4.p0, true), a2[1] = o2.c2p(e4.s1, true), i2[1] = l2.c2p(e4.p1, true), n2 ? [a2, i2] : [i2, a2];
                }(c3, w2, P, j), U2 = V2[0][0], q2 = V2[0][1], G2 = V2[1][0], Z = V2[1][1], W = 0 == (j ? q2 - U2 : Z - G2);
                if (W && H && v.getLineWidth(f3, c3) && (W = false), W || (W = !(a(U2) && a(q2) && a(G2) && a(Z))), c3.isBlank = W, W && (j ? q2 = U2 : Z = G2), B && !W && (j ? (U2 -= k(U2, q2) * B, q2 += k(U2, q2) * B) : (G2 -= k(G2, Z) * B, Z += k(G2, Z) * B)), "waterfall" === f3.type) {
                  if (!W) {
                    var J = f3[c3.dir].marker;
                    L2 = J.line.width, E3 = J.color;
                  }
                } else L2 = v.getLineWidth(f3, c3), E3 = c3.mc || f3.marker.color;
                function X(e4) {
                  var t4 = n.round(L2 / 2 % 1, 2);
                  return 0 === g2.gap && 0 === g2.groupgap ? n.round(Math.round(e4) - t4, 2) : e4;
                }
                var K = l.opacity(E3) < 1 || L2 > 0.01 ? X : function(e4, t4, r5) {
                  return r5 && e4 === t4 ? e4 : Math.abs(e4 - t4) >= 2 ? X(e4) : e4 > t4 ? Math.ceil(e4) : Math.floor(e4);
                };
                e3._context.staticPlot || (U2 = K(U2, q2, j), q2 = K(q2, U2, j), G2 = K(G2, Z, !j), Z = K(Z, G2, !j));
                var Q, $ = j ? w2.c2p : P.c2p;
                Q = c3.s0 > 0 ? c3._sMax : c3.s0 < 0 ? c3._sMin : c3.s1 > 0 ? c3._sMax : c3._sMin;
                var ee, te, re = F || N ? function(e4, t4) {
                  if (!e4) return 0;
                  var r5, n2 = j ? Math.abs(Z - G2) : Math.abs(q2 - U2), a2 = j ? Math.abs(q2 - U2) : Math.abs(Z - G2), i2 = K(Math.abs($(Q, true) - $(0, true))), o2 = c3.hasB ? Math.min(n2 / 2, a2 / 2) : Math.min(n2 / 2, i2);
                  return r5 = "%" === t4 ? n2 * (Math.min(50, e4) / 100) : e4, K(Math.max(Math.min(r5, o2), 0));
                }(h2.cornerradiusvalue, h2.cornerradiusform) : 0, ne = "M" + U2 + "," + G2 + "V" + Z + "H" + q2 + "V" + G2 + "Z", ae = 0;
                if (re && c3.s) {
                  var ie = 0 === M(c3.s0) || M(c3.s) === M(c3.s0) ? c3.s1 : c3.s0;
                  if ((ae = K(c3.hasB ? 0 : Math.abs($(Q, true) - $(ie, true)))) < re) {
                    var oe = k(U2, q2), le = k(G2, Z), se = oe === -le ? 1 : 0;
                    if (j) if (c3.hasB) ee = "M" + (U2 + re * oe) + "," + G2 + "A " + re + "," + re + " 0 0 " + se + " " + U2 + "," + (G2 + re * le) + "V" + (Z - re * le) + "A " + re + "," + re + " 0 0 " + se + " " + (U2 + re * oe) + "," + Z + "H" + (q2 - re * oe) + "A " + re + "," + re + " 0 0 " + se + " " + q2 + "," + (Z - re * le) + "V" + (G2 + re * le) + "A " + re + "," + re + " 0 0 " + se + " " + (q2 - re * oe) + "," + G2 + "Z";
                    else {
                      var ce = (te = Math.abs(q2 - U2) + ae) < re ? re - Math.sqrt(te * (2 * re - te)) : 0, ue = ae > 0 ? Math.sqrt(ae * (2 * re - ae)) : 0, fe = oe > 0 ? Math.max : Math.min;
                      ee = "M" + U2 + "," + G2 + "V" + (Z - ce * le) + "H" + fe(q2 - (re - ae) * oe, U2) + "A " + re + "," + re + " 0 0 " + se + " " + q2 + "," + (Z - re * le - ue) + "V" + (G2 + re * le + ue) + "A " + re + "," + re + " 0 0 " + se + " " + fe(q2 - (re - ae) * oe, U2) + "," + (G2 + ce * le) + "Z";
                    }
                    else if (c3.hasB) ee = "M" + (U2 + re * oe) + "," + G2 + "A " + re + "," + re + " 0 0 " + se + " " + U2 + "," + (G2 + re * le) + "V" + (Z - re * le) + "A " + re + "," + re + " 0 0 " + se + " " + (U2 + re * oe) + "," + Z + "H" + (q2 - re * oe) + "A " + re + "," + re + " 0 0 " + se + " " + q2 + "," + (Z - re * le) + "V" + (G2 + re * le) + "A " + re + "," + re + " 0 0 " + se + " " + (q2 - re * oe) + "," + G2 + "Z";
                    else {
                      var de = (te = Math.abs(Z - G2) + ae) < re ? re - Math.sqrt(te * (2 * re - te)) : 0, he = ae > 0 ? Math.sqrt(ae * (2 * re - ae)) : 0, pe = le > 0 ? Math.max : Math.min;
                      ee = "M" + (U2 + de * oe) + "," + G2 + "V" + pe(Z - (re - ae) * le, G2) + "A " + re + "," + re + " 0 0 " + se + " " + (U2 + re * oe - he) + "," + Z + "H" + (q2 - re * oe + he) + "A " + re + "," + re + " 0 0 " + se + " " + (q2 - de * oe) + "," + pe(Z - (re - ae) * le, G2) + "V" + G2 + "Z";
                    }
                  } else ee = ne;
                } else ee = ne;
                var ve = A(i.ensureSingle(R2, "path"), z, g2, m2);
                if (ve.style("vector-effect", I ? "none" : "non-scaling-stroke").attr("d", isNaN((q2 - U2) * (Z - G2)) || W && e3._context.staticPlot ? "M0,0Z" : ee).call(s.setClipUrl, t3.layerClipId, e3), !z.uniformtext.mode && Y) {
                  var ge = s.makePointStyleFns(f3);
                  s.singlePointStyle(c3, ve, f3, ge, e3);
                }
                !function(e4, t4, r5, n2, a2, l2, c4, f4, h3, g3, m3, w3, T3) {
                  var M2, L3 = t4.xaxis, P2 = t4.yaxis, z2 = e4._fullLayout;
                  function I2(t5, r6, n3) {
                    return i.ensureSingle(t5, "text").text(r6).attr({ class: "bartext bartext-" + M2, "text-anchor": "middle", "data-notex": 1 }).call(s.font, n3).call(o.convertToTspans, e4);
                  }
                  var E4 = n2[0].trace, R3 = "h" === E4.orientation, N2 = function(e5, t5, r6, n3, a3) {
                    var o2, l3 = t5[0].trace;
                    return o2 = l3.texttemplate ? function(e6, t6, r7, n4, a4) {
                      var o3 = t6[0].trace, l4 = i.castOption(o3, r7, "texttemplate");
                      if (!l4) return "";
                      var s2, c5, f5, d2, h4 = "histogram" === o3.type, p2 = "waterfall" === o3.type, v2 = "funnel" === o3.type, g4 = "h" === o3.orientation;
                      function m4(e7) {
                        return u(d2, d2.c2l(e7), true).text;
                      }
                      g4 ? (s2 = "y", c5 = a4, f5 = "x", d2 = n4) : (s2 = "x", c5 = n4, f5 = "y", d2 = a4);
                      var y2, x2 = t6[r7], _2 = {};
                      _2.label = x2.p, _2.labelLabel = _2[s2 + "Label"] = (y2 = x2.p, u(c5, c5.c2l(y2), true).text);
                      var w4 = i.castOption(o3, x2.i, "text");
                      (0 === w4 || w4) && (_2.text = w4), _2.value = x2.s, _2.valueLabel = _2[f5 + "Label"] = m4(x2.s);
                      var T4 = {};
                      b(T4, o3, x2.i), (h4 || void 0 === T4.x) && (T4.x = g4 ? _2.value : _2.label), (h4 || void 0 === T4.y) && (T4.y = g4 ? _2.label : _2.value), (h4 || void 0 === T4.xLabel) && (T4.xLabel = g4 ? _2.valueLabel : _2.labelLabel), (h4 || void 0 === T4.yLabel) && (T4.yLabel = g4 ? _2.labelLabel : _2.valueLabel), p2 && (_2.delta = +x2.rawS || x2.s, _2.deltaLabel = m4(_2.delta), _2.final = x2.v, _2.finalLabel = m4(_2.final), _2.initial = _2.final - _2.delta, _2.initialLabel = m4(_2.initial)), v2 && (_2.value = x2.s, _2.valueLabel = m4(_2.value), _2.percentInitial = x2.begR, _2.percentInitialLabel = i.formatPercent(x2.begR), _2.percentPrevious = x2.difR, _2.percentPreviousLabel = i.formatPercent(x2.difR), _2.percentTotal = x2.sumR, _2.percenTotalLabel = i.formatPercent(x2.sumR));
                      var M3 = i.castOption(o3, x2.i, "customdata");
                      return M3 && (_2.customdata = M3), i.texttemplateString(l4, _2, e6._d3locale, T4, _2, o3._meta || {});
                    }(e5, t5, r6, n3, a3) : l3.textinfo ? function(e6, t6, r7, n4) {
                      var a4 = e6[0].trace, o3 = "h" === a4.orientation, l4 = "waterfall" === a4.type, s2 = "funnel" === a4.type;
                      function c5(e7) {
                        return u(o3 ? r7 : n4, +e7, true).text;
                      }
                      var f5, d2, h4 = a4.textinfo, p2 = e6[t6], v2 = h4.split("+"), g4 = [], m4 = function(e7) {
                        return -1 !== v2.indexOf(e7);
                      };
                      if (m4("label") && g4.push((d2 = e6[t6].p, u(o3 ? n4 : r7, d2, true).text)), m4("text") && (0 === (f5 = i.castOption(a4, p2.i, "text")) || f5) && g4.push(f5), l4) {
                        var y2 = +p2.rawS || p2.s, x2 = p2.v, b2 = x2 - y2;
                        m4("initial") && g4.push(c5(b2)), m4("delta") && g4.push(c5(y2)), m4("final") && g4.push(c5(x2));
                      }
                      if (s2) {
                        m4("value") && g4.push(c5(p2.s));
                        var _2 = 0;
                        m4("percent initial") && _2++, m4("percent previous") && _2++, m4("percent total") && _2++;
                        var w4 = _2 > 1;
                        m4("percent initial") && (f5 = i.formatPercent(p2.begR), w4 && (f5 += " of initial"), g4.push(f5)), m4("percent previous") && (f5 = i.formatPercent(p2.difR), w4 && (f5 += " of previous"), g4.push(f5)), m4("percent total") && (f5 = i.formatPercent(p2.sumR), w4 && (f5 += " of total"), g4.push(f5));
                      }
                      return g4.join("<br>");
                    }(t5, r6, n3, a3) : v.getValue(l3.text, r6), v.coerceString(y, o2);
                  }(z2, n2, a2, L3, P2);
                  M2 = function(e5, t5) {
                    var r6 = v.getValue(e5.textposition, t5);
                    return v.coerceEnumerated(x, r6);
                  }(E4, a2);
                  var F2 = "stack" === w3.mode || "relative" === w3.mode, H2 = n2[a2], B2 = !F2 || H2._outmost, j2 = H2.hasB, Y2 = g3 && g3 - m3 > _;
                  if (N2 && "none" !== M2 && (!H2.isBlank && l2 !== c4 && f4 !== h3 || "auto" !== M2 && "inside" !== M2)) {
                    var V3 = z2.font, U3 = p.getBarColor(n2[a2], E4), q3 = p.getInsideTextFont(E4, a2, V3, U3), G3 = p.getOutsideTextFont(E4, a2, V3), Z2 = E4.insidetextanchor || "end", W2 = r5.datum();
                    R3 ? "log" === L3.type && W2.s0 <= 0 && (l2 = L3.range[0] < L3.range[1] ? 0 : L3._length) : "log" === P2.type && W2.s0 <= 0 && (f4 = P2.range[0] < P2.range[1] ? P2._length : 0);
                    var J2, X2, K2, Q2, $2, ee2 = Math.abs(c4 - l2), te2 = Math.abs(h3 - f4), re2 = ee2 - 2 * _, ne2 = te2 - 2 * _;
                    if ("outside" === M2 && (B2 || H2.hasB || (M2 = "inside")), "auto" === M2) if (B2) {
                      M2 = "inside", J2 = I2(r5, N2, $2 = i.ensureUniformFontSize(e4, q3)), K2 = (X2 = s.bBox(J2.node())).width, Q2 = X2.height;
                      var ae2, ie2 = K2 > 0 && Q2 > 0;
                      ae2 = Y2 ? j2 ? S(re2 - 2 * g3, ne2, K2, Q2, R3) || S(re2, ne2 - 2 * g3, K2, Q2, R3) : R3 ? S(re2 - (g3 - m3), ne2, K2, Q2, R3) || S(re2, ne2 - 2 * (g3 - m3), K2, Q2, R3) : S(re2, ne2 - (g3 - m3), K2, Q2, R3) || S(re2 - 2 * (g3 - m3), ne2, K2, Q2, R3) : S(re2, ne2, K2, Q2, R3), ie2 && ae2 ? M2 = "inside" : (M2 = "outside", J2.remove(), J2 = null);
                    } else M2 = "inside";
                    if (!J2) {
                      var oe2 = (J2 = I2(r5, N2, $2 = i.ensureUniformFontSize(e4, "outside" === M2 ? G3 : q3))).attr("transform");
                      if (J2.attr("transform", ""), K2 = (X2 = s.bBox(J2.node())).width, Q2 = X2.height, J2.attr("transform", oe2), K2 <= 0 || Q2 <= 0) return void J2.remove();
                    }
                    var le2, se2 = E4.textangle;
                    le2 = "outside" === M2 ? function(e5, t5, r6, n3, a3, i2) {
                      var o2, l3 = !!i2.isHorizontal, s2 = !!i2.constrained, c5 = i2.angle || 0, u2 = a3.width, f5 = a3.height, d2 = Math.abs(t5 - e5), h4 = Math.abs(n3 - r6);
                      o2 = l3 ? h4 > 2 * _ ? _ : 0 : d2 > 2 * _ ? _ : 0;
                      var p2 = 1;
                      s2 && (p2 = l3 ? Math.min(1, h4 / f5) : Math.min(1, d2 / u2));
                      var v2 = C(c5), g4 = O(a3, v2), m4 = (l3 ? g4.x : g4.y) / 2, y2 = (a3.left + a3.right) / 2, x2 = (a3.top + a3.bottom) / 2, b2 = (e5 + t5) / 2, w4 = (r6 + n3) / 2, T4 = 0, M3 = 0, A2 = l3 ? k(t5, e5) : k(r6, n3);
                      return l3 ? (b2 = t5 - A2 * o2, T4 = A2 * m4) : (w4 = n3 + A2 * o2, M3 = -A2 * m4), { textX: y2, textY: x2, targetX: b2, targetY: w4, anchorX: T4, anchorY: M3, scale: p2, rotate: v2 };
                    }(l2, c4, f4, h3, X2, { isHorizontal: R3, constrained: "both" === E4.constraintext || "outside" === E4.constraintext, angle: se2 }) : D(l2, c4, f4, h3, X2, { isHorizontal: R3, constrained: "both" === E4.constraintext || "inside" === E4.constraintext, angle: se2, anchor: Z2, hasB: j2, r: g3, overhead: m3 }), le2.fontSize = $2.size, d("histogram" === E4.type ? "bar" : E4.type, le2, z2), H2.transform = le2;
                    var ce2 = A(J2, z2, w3, T3);
                    i.setTransormAndDisplay(ce2, le2);
                  } else r5.select("text").remove();
                }(e3, t3, R2, r4, T2, U2, q2, G2, Z, re, ae, g2, m2), t3.layerClipId && s.hideOutsideRangePoint(c3, R2.select("text"), w2, P, f3.xcalendar, f3.ycalendar);
              });
              var G = false === f3.cliponaxis;
              s.setClipUrl(c2, G ? null : t3.layerClipId, e3);
            });
            c.getComponentMethod("errorbars", "plot")(e3, E, t3, g2);
          }, toMoveInsideBar: D };
        }, 8384: function(e2) {
          function t2(e3, t3, r2, n, a) {
            var i = t3.c2p(n ? e3.s0 : e3.p0, true), o = t3.c2p(n ? e3.s1 : e3.p1, true), l = r2.c2p(n ? e3.p0 : e3.s0, true), s = r2.c2p(n ? e3.p1 : e3.s1, true);
            return a ? [(i + o) / 2, (l + s) / 2] : n ? [o, (l + s) / 2] : [(i + o) / 2, s];
          }
          e2.exports = function(e3, r2) {
            var n, a = e3.cd, i = e3.xaxis, o = e3.yaxis, l = a[0].trace, s = "funnel" === l.type, c = "h" === l.orientation, u = [];
            if (false === r2) for (n = 0; n < a.length; n++) a[n].selected = 0;
            else for (n = 0; n < a.length; n++) {
              var f = a[n], d = "ct" in f ? f.ct : t2(f, i, o, c, s);
              r2.contains(d, false, n, e3) ? (u.push({ pointNumber: n, x: i.c2d(f.x), y: o.c2d(f.y) }), f.selected = 1) : f.selected = 0;
            }
            return u;
          };
        }, 2880: function(e2, t2, r2) {
          e2.exports = a;
          var n = r2(4809).distinctVals;
          function a(e3, t3) {
            this.traces = e3, this.sepNegVal = t3.sepNegVal, this.overlapNoMerge = t3.overlapNoMerge;
            for (var r3 = 1 / 0, a2 = t3.posAxis._id.charAt(0), i = [], o = 0; o < e3.length; o++) {
              for (var l = e3[o], s = 0; s < l.length; s++) {
                var c = l[s], u = c.p;
                void 0 === u && (u = c[a2]), void 0 !== u && i.push(u);
              }
              l[0] && l[0].width1 && (r3 = Math.min(l[0].width1, r3));
            }
            this.positions = i;
            var f = n(i);
            this.distinctPositions = f.vals, 1 === f.vals.length && r3 !== 1 / 0 ? this.minDiff = r3 : this.minDiff = Math.min(f.minDiff, r3);
            var d = (t3.posAxis || {}).type;
            "category" !== d && "multicategory" !== d || (this.minDiff = 1), this.binWidth = this.minDiff, this.bins = {};
          }
          a.prototype.put = function(e3, t3) {
            var r3 = this.getLabel(e3, t3), n2 = this.bins[r3] || 0;
            return this.bins[r3] = n2 + t3, n2;
          }, a.prototype.get = function(e3, t3) {
            var r3 = this.getLabel(e3, t3);
            return this.bins[r3] || 0;
          }, a.prototype.getLabel = function(e3, t3) {
            return (t3 < 0 && this.sepNegVal ? "v" : "^") + (this.overlapNoMerge ? e3 : Math.round(e3 / this.binWidth));
          };
        }, 6851: function(e2, t2, r2) {
          var n = r2(5568), a = r2(8766), i = r2(2203), o = r2(4809), l = r2(3626), s = r2(4102).resizeText, c = r2(1481), u = c.textfont, f = c.insidetextfont, d = c.outsidetextfont, h = r2(2843);
          function p(e3, t3, r3) {
            i.pointStyle(e3.selectAll("path"), t3, r3), v(e3, t3, r3);
          }
          function v(e3, t3, r3) {
            e3.selectAll("text").each(function(e4) {
              var a2 = n.select(this), l2 = o.ensureUniformFontSize(r3, g(a2, e4, t3, r3));
              i.font(a2, l2);
            });
          }
          function g(e3, t3, r3, n2) {
            var a2 = n2._fullLayout.font, i2 = r3.textfont;
            if (e3.classed("bartext-inside")) {
              var o2 = _(t3, r3);
              i2 = y(r3, t3.i, a2, o2);
            } else e3.classed("bartext-outside") && (i2 = x(r3, t3.i, a2));
            return i2;
          }
          function m(e3, t3, r3) {
            return b(u, e3.textfont, t3, r3);
          }
          function y(e3, t3, r3, n2) {
            var i2 = m(e3, t3, r3);
            return (void 0 === e3._input.textfont || void 0 === e3._input.textfont.color || Array.isArray(e3.textfont.color) && void 0 === e3.textfont.color[t3]) && (i2 = { color: a.contrast(n2), family: i2.family, size: i2.size, weight: i2.weight, style: i2.style, variant: i2.variant, textcase: i2.textcase, lineposition: i2.lineposition, shadow: i2.shadow }), b(f, e3.insidetextfont, t3, i2);
          }
          function x(e3, t3, r3) {
            var n2 = m(e3, t3, r3);
            return b(d, e3.outsidetextfont, t3, n2);
          }
          function b(e3, t3, r3, n2) {
            t3 = t3 || {};
            var a2 = h.getValue(t3.family, r3), i2 = h.getValue(t3.size, r3), o2 = h.getValue(t3.color, r3), l2 = h.getValue(t3.weight, r3), s2 = h.getValue(t3.style, r3), c2 = h.getValue(t3.variant, r3), u2 = h.getValue(t3.textcase, r3), f2 = h.getValue(t3.lineposition, r3), d2 = h.getValue(t3.shadow, r3);
            return { family: h.coerceString(e3.family, a2, n2.family), size: h.coerceNumber(e3.size, i2, n2.size), color: h.coerceColor(e3.color, o2, n2.color), weight: h.coerceString(e3.weight, l2, n2.weight), style: h.coerceString(e3.style, s2, n2.style), variant: h.coerceString(e3.variant, c2, n2.variant), textcase: h.coerceString(e3.variant, u2, n2.textcase), lineposition: h.coerceString(e3.variant, f2, n2.lineposition), shadow: h.coerceString(e3.variant, d2, n2.shadow) };
          }
          function _(e3, t3) {
            return "waterfall" === t3.type ? t3[e3.dir].marker.color : e3.mcc || e3.mc || t3.marker.color;
          }
          e2.exports = { style: function(e3) {
            var t3 = n.select(e3).selectAll('g[class^="barlayer"]').selectAll("g.trace");
            s(e3, t3, "bar");
            var r3 = t3.size(), a2 = e3._fullLayout;
            t3.style("opacity", function(e4) {
              return e4[0].trace.opacity;
            }).each(function(e4) {
              ("stack" === a2.barmode && r3 > 1 || 0 === a2.bargap && 0 === a2.bargroupgap && !e4[0].trace.marker.line.width) && n.select(this).attr("shape-rendering", "crispEdges");
            }), t3.selectAll("g.points").each(function(t4) {
              p(n.select(this), t4[0].trace, e3);
            }), l.getComponentMethod("errorbars", "style")(t3);
          }, styleTextPoints: v, styleOnSelect: function(e3, t3, r3) {
            var a2 = t3[0].trace;
            a2.selectedpoints ? function(e4, t4, r4) {
              i.selectedPointStyle(e4.selectAll("path"), t4), function(e5, t5, r5) {
                e5.each(function(e6) {
                  var a3, l2 = n.select(this);
                  if (e6.selected) {
                    a3 = o.ensureUniformFontSize(r5, g(l2, e6, t5, r5));
                    var s2 = t5.selected.textfont && t5.selected.textfont.color;
                    s2 && (a3.color = s2), i.font(l2, a3);
                  } else i.selectedTextStyle(l2, t5);
                });
              }(e4.selectAll("text"), t4, r4);
            }(r3, a2, e3) : (p(r3, a2, e3), l.getComponentMethod("errorbars", "style")(r3));
          }, getInsideTextFont: y, getOutsideTextFont: x, getBarColor: _, resizeText: s };
        }, 9760: function(e2, t2, r2) {
          var n = r2(8766), a = r2(5477).hasColorscale, i = r2(9356), o = r2(4809).coercePattern;
          e2.exports = function(e3, t3, r3, l, s) {
            var c = r3("marker.color", l), u = a(e3, "marker");
            u && i(e3, t3, s, r3, { prefix: "marker.", cLetter: "c" }), r3("marker.line.color", n.defaultLine), a(e3, "marker.line") && i(e3, t3, s, r3, { prefix: "marker.line.", cLetter: "c" }), r3("marker.line.width"), r3("marker.opacity"), o(r3, "marker.pattern", c, u), r3("selected.marker.color"), r3("unselected.marker.color");
          };
        }, 4102: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4809);
          function i(e3) {
            return "_" + e3 + "Text_minsize";
          }
          e2.exports = { recordMinTextSize: function(e3, t3, r3) {
            if (r3.uniformtext.mode) {
              var n2 = i(e3), a2 = r3.uniformtext.minsize, o = t3.scale * t3.fontSize;
              t3.hide = o < a2, r3[n2] = r3[n2] || 1 / 0, t3.hide || (r3[n2] = Math.min(r3[n2], Math.max(o, a2)));
            }
          }, clearMinTextSize: function(e3, t3) {
            t3[i(e3)] = void 0;
          }, resizeText: function(e3, t3, r3) {
            var i2 = e3._fullLayout, o = i2["_" + r3 + "Text_minsize"];
            if (o) {
              var l, s = "hide" === i2.uniformtext.mode;
              switch (r3) {
                case "funnelarea":
                case "pie":
                case "sunburst":
                  l = "g.slice";
                  break;
                case "treemap":
                case "icicle":
                  l = "g.slice, g.pathbar";
                  break;
                default:
                  l = "g.points > g.point";
              }
              t3.selectAll(l).each(function(e4) {
                var t4 = e4.transform;
                if (t4) {
                  t4.scale = s && t4.hide ? 0 : o / t4.fontSize;
                  var r4 = n.select(this).select("text");
                  a.setTransormAndDisplay(r4, t4);
                }
              });
            }
          } };
        }, 3031: function(e2, t2, r2) {
          var n = r2(9829), a = r2(3792).u, i = r2(337), o = r2(229), l = r2(3208).rb, s = r2(3208).ay, c = r2(3049).extendFlat, u = r2(4850).k, f = i({ editType: "plot", arrayOk: true, colorEditType: "plot" });
          e2.exports = { labels: { valType: "data_array", editType: "calc" }, label0: { valType: "number", dflt: 0, editType: "calc" }, dlabel: { valType: "number", dflt: 1, editType: "calc" }, values: { valType: "data_array", editType: "calc" }, marker: { colors: { valType: "data_array", editType: "calc" }, line: { color: { valType: "color", dflt: o.defaultLine, arrayOk: true, editType: "style" }, width: { valType: "number", min: 0, dflt: 0, arrayOk: true, editType: "style" }, editType: "calc" }, pattern: u, editType: "calc" }, text: { valType: "data_array", editType: "plot" }, hovertext: { valType: "string", dflt: "", arrayOk: true, editType: "style" }, scalegroup: { valType: "string", dflt: "", editType: "calc" }, textinfo: { valType: "flaglist", flags: ["label", "text", "value", "percent"], extras: ["none"], editType: "calc" }, hoverinfo: c({}, n.hoverinfo, { flags: ["label", "text", "value", "percent", "name"] }), hovertemplate: l({}, { keys: ["label", "color", "value", "percent", "text"] }), texttemplate: s({ editType: "plot" }, { keys: ["label", "color", "value", "percent", "text"] }), textposition: { valType: "enumerated", values: ["inside", "outside", "auto", "none"], dflt: "auto", arrayOk: true, editType: "plot" }, textfont: c({}, f, {}), insidetextorientation: { valType: "enumerated", values: ["horizontal", "radial", "tangential", "auto"], dflt: "auto", editType: "plot" }, insidetextfont: c({}, f, {}), outsidetextfont: c({}, f, {}), automargin: { valType: "boolean", dflt: false, editType: "plot" }, title: { text: { valType: "string", dflt: "", editType: "plot" }, font: c({}, f, {}), position: { valType: "enumerated", values: ["top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right"], editType: "plot" }, editType: "plot" }, domain: a({ name: "pie", trace: true, editType: "calc" }), hole: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc" }, sort: { valType: "boolean", dflt: true, editType: "calc" }, direction: { valType: "enumerated", values: ["clockwise", "counterclockwise"], dflt: "counterclockwise", editType: "calc" }, rotation: { valType: "angle", dflt: 0, editType: "calc" }, pull: { valType: "number", min: 0, max: 1, dflt: 0, arrayOk: true, editType: "calc" }, _deprecated: { title: { valType: "string", dflt: "", editType: "calc" }, titlefont: c({}, f, {}), titleposition: { valType: "enumerated", values: ["top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right"], editType: "calc" } } };
        }, 6052: function(e2, t2, r2) {
          var n = r2(4122);
          t2.name = "pie", t2.plot = function(e3, r3, a, i) {
            n.plotBasePlot(t2.name, e3, r3, a, i);
          }, t2.clean = function(e3, r3, a, i) {
            n.cleanBasePlot(t2.name, e3, r3, a, i);
          };
        }, 4148: function(e2, t2, r2) {
          var n = r2(721), a = r2(5657), i = r2(8766), o = {};
          function l(e3) {
            return function(t3, r3) {
              return !!t3 && !!(t3 = a(t3)).isValid() && (t3 = i.addOpacity(t3, t3.getAlpha()), e3[r3] || (e3[r3] = t3), t3);
            };
          }
          function s(e3, t3) {
            var r3, n2 = JSON.stringify(e3), i2 = t3[n2];
            if (!i2) {
              for (i2 = e3.slice(), r3 = 0; r3 < e3.length; r3++) i2.push(a(e3[r3]).lighten(20).toHexString());
              for (r3 = 0; r3 < e3.length; r3++) i2.push(a(e3[r3]).darken(20).toHexString());
              t3[n2] = i2;
            }
            return i2;
          }
          e2.exports = { calc: function(e3, t3) {
            var r3, a2, i2 = [], o2 = e3._fullLayout, s2 = o2.hiddenlabels || [], c = t3.labels, u = t3.marker.colors || [], f = t3.values, d = t3._length, h = t3._hasValues && d;
            if (t3.dlabel) for (c = new Array(d), r3 = 0; r3 < d; r3++) c[r3] = String(t3.label0 + r3 * t3.dlabel);
            var p = {}, v = l(o2["_" + t3.type + "colormap"]), g = 0, m = false;
            for (r3 = 0; r3 < d; r3++) {
              var y, x, b;
              if (h) {
                if (y = f[r3], !n(y)) continue;
                y = +y;
              } else y = 1;
              void 0 !== (x = c[r3]) && "" !== x || (x = r3);
              var _ = p[x = String(x)];
              void 0 === _ ? (p[x] = i2.length, (b = -1 !== s2.indexOf(x)) || (g += y), i2.push({ v: y, label: x, color: v(u[r3], x), i: r3, pts: [r3], hidden: b })) : (m = true, (a2 = i2[_]).v += y, a2.pts.push(r3), a2.hidden || (g += y), false === a2.color && u[r3] && (a2.color = v(u[r3], x)));
            }
            return i2 = i2.filter(function(e4) {
              return e4.v >= 0;
            }), ("funnelarea" === t3.type ? m : t3.sort) && i2.sort(function(e4, t4) {
              return t4.v - e4.v;
            }), i2[0] && (i2[0].vTotal = g), i2;
          }, crossTraceCalc: function(e3, t3) {
            var r3 = (t3 || {}).type;
            r3 || (r3 = "pie");
            var n2 = e3._fullLayout, a2 = e3.calcdata, i2 = n2[r3 + "colorway"], l2 = n2["_" + r3 + "colormap"];
            n2["extend" + r3 + "colors"] && (i2 = s(i2, o));
            for (var c = 0, u = 0; u < a2.length; u++) {
              var f = a2[u];
              if (f[0].trace.type === r3) for (var d = 0; d < f.length; d++) {
                var h = f[d];
                false === h.color && (l2[h.label] ? h.color = l2[h.label] : (l2[h.label] = h.color = i2[c % i2.length], c++));
              }
            }
          }, makePullColorFn: l, generateExtendedColors: s };
        }, 6979: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(3031), o = r2(3792).N, l = r2(7550).handleText, s = r2(4809).coercePattern;
          function c(e3, t3) {
            var r3 = a.isArrayOrTypedArray(e3), i2 = a.isArrayOrTypedArray(t3), o2 = Math.min(r3 ? e3.length : 1 / 0, i2 ? t3.length : 1 / 0);
            if (isFinite(o2) || (o2 = 0), o2 && i2) {
              for (var l2, s2 = 0; s2 < o2; s2++) {
                var c2 = t3[s2];
                if (n(c2) && c2 > 0) {
                  l2 = true;
                  break;
                }
              }
              l2 || (o2 = 0);
            }
            return { hasLabels: r3, hasValues: i2, len: o2 };
          }
          function u(e3, t3, r3, n2, a2) {
            n2("marker.line.width") && n2("marker.line.color", a2 ? void 0 : r3.paper_bgcolor);
            var i2 = n2("marker.colors");
            s(n2, "marker.pattern", i2), e3.marker && !t3.marker.pattern.fgcolor && (t3.marker.pattern.fgcolor = e3.marker.colors), t3.marker.pattern.bgcolor || (t3.marker.pattern.bgcolor = r3.paper_bgcolor);
          }
          e2.exports = { handleLabelsAndValues: c, handleMarkerDefaults: u, supplyDefaults: function(e3, t3, r3, n2) {
            function s2(r4, n3) {
              return a.coerce(e3, t3, i, r4, n3);
            }
            var f = c(s2("labels"), s2("values")), d = f.len;
            if (t3._hasLabels = f.hasLabels, t3._hasValues = f.hasValues, !t3._hasLabels && t3._hasValues && (s2("label0"), s2("dlabel")), d) {
              t3._length = d, u(e3, t3, n2, s2, true), s2("scalegroup");
              var h, p = s2("text"), v = s2("texttemplate");
              if (v || (h = s2("textinfo", a.isArrayOrTypedArray(p) ? "text+percent" : "percent")), s2("hovertext"), s2("hovertemplate"), v || h && "none" !== h) {
                var g = s2("textposition");
                l(e3, t3, n2, s2, g, { moduleHasSelected: false, moduleHasUnselected: false, moduleHasConstrain: false, moduleHasCliponaxis: false, moduleHasTextangle: false, moduleHasInsideanchor: false }), (Array.isArray(g) || "auto" === g || "outside" === g) && s2("automargin"), ("inside" === g || "auto" === g || Array.isArray(g)) && s2("insidetextorientation");
              } else "none" === h && s2("textposition", "none");
              o(t3, n2, s2);
              var m = s2("hole");
              if (s2("title.text")) {
                var y = s2("title.position", m ? "middle center" : "top center");
                m || "middle center" !== y || (t3.title.position = "top center"), a.coerceFont(s2, "title.font", n2.font);
              }
              s2("sort"), s2("direction"), s2("rotation"), s2("pull");
            } else t3.visible = false;
          } };
        }, 568: function(e2, t2, r2) {
          var n = r2(6040).appendArrayMultiPointValues;
          e2.exports = function(e3, t3) {
            var r3 = { curveNumber: t3.index, pointNumbers: e3.pts, data: t3._input, fullData: t3, label: e3.label, color: e3.color, value: e3.v, percent: e3.percent, text: e3.text, bbox: e3.bbox, v: e3.v };
            return 1 === e3.pts.length && (r3.pointNumber = r3.i = e3.pts[0]), n(r3, t3, e3.pts), "funnelarea" === t3.type && (delete r3.v, delete r3.i), r3;
          };
        }, 5067: function(e2, t2, r2) {
          var n = r2(2203), a = r2(8766);
          e2.exports = function(e3, t3, r3, i) {
            var o = r3.marker.pattern;
            o && o.shape ? n.pointStyle(e3, r3, i, t3) : a.fill(e3, t3.color);
          };
        }, 7252: function(e2, t2, r2) {
          var n = r2(4809);
          function a(e3) {
            return -1 !== e3.indexOf("e") ? e3.replace(/[.]?0+e/, "e") : -1 !== e3.indexOf(".") ? e3.replace(/[.]?0+$/, "") : e3;
          }
          t2.formatPiePercent = function(e3, t3) {
            var r3 = a((100 * e3).toPrecision(3));
            return n.numSeparate(r3, t3) + "%";
          }, t2.formatPieValue = function(e3, t3) {
            var r3 = a(e3.toPrecision(10));
            return n.numSeparate(r3, t3);
          }, t2.getFirstFilled = function(e3, t3) {
            if (n.isArrayOrTypedArray(e3)) for (var r3 = 0; r3 < t3.length; r3++) {
              var a2 = e3[t3[r3]];
              if (a2 || 0 === a2 || "" === a2) return a2;
            }
          }, t2.castOption = function(e3, r3) {
            return n.isArrayOrTypedArray(e3) ? t2.getFirstFilled(e3, r3) : e3 || void 0;
          }, t2.getRotationAngle = function(e3) {
            return ("auto" === e3 ? 0 : e3) * Math.PI / 180;
          };
        }, 9913: function(e2, t2, r2) {
          e2.exports = { attributes: r2(3031), supplyDefaults: r2(6979).supplyDefaults, supplyLayoutDefaults: r2(3464), layoutAttributes: r2(4031), calc: r2(4148).calc, crossTraceCalc: r2(4148).crossTraceCalc, plot: r2(5734).plot, style: r2(140), styleOne: r2(2891), moduleType: "trace", name: "pie", basePlotModule: r2(6052), categories: ["pie-like", "pie", "showLegend"], meta: {} };
        }, 4031: function(e2) {
          e2.exports = { hiddenlabels: { valType: "data_array", editType: "calc" }, piecolorway: { valType: "colorlist", editType: "calc" }, extendpiecolors: { valType: "boolean", dflt: true, editType: "calc" } };
        }, 3464: function(e2, t2, r2) {
          var n = r2(4809), a = r2(4031);
          e2.exports = function(e3, t3) {
            function r3(r4, i) {
              return n.coerce(e3, t3, a, r4, i);
            }
            r3("hiddenlabels"), r3("piecolorway", t3.colorway), r3("extendpiecolors");
          };
        }, 5734: function(e2, t2, r2) {
          var n = r2(5568), a = r2(4122), i = r2(2141), o = r2(8766), l = r2(2203), s = r2(4809), c = s.strScale, u = s.strTranslate, f = r2(635), d = r2(4102), h = d.recordMinTextSize, p = d.clearMinTextSize, v = r2(6155).TEXTPAD, g = r2(7252), m = r2(568), y = r2(4809).isValidTextValue;
          function x(e3, t3, r3) {
            var a2 = r3[0], o2 = a2.cx, l2 = a2.cy, c2 = a2.trace, u2 = "funnelarea" === c2.type;
            "_hasHoverLabel" in c2 || (c2._hasHoverLabel = false), "_hasHoverEvent" in c2 || (c2._hasHoverEvent = false), e3.on("mouseover", function(e4) {
              var r4 = t3._fullLayout, f2 = t3._fullData[c2.index];
              if (!t3._dragging && false !== r4.hovermode) {
                var d2 = f2.hoverinfo;
                if (Array.isArray(d2) && (d2 = i.castHoverinfo({ hoverinfo: [g.castOption(d2, e4.pts)], _module: c2._module }, r4, 0)), "all" === d2 && (d2 = "label+text+value+percent+name"), f2.hovertemplate || "none" !== d2 && "skip" !== d2 && d2) {
                  var h2 = e4.rInscribed || 0, p2 = o2 + e4.pxmid[0] * (1 - h2), v2 = l2 + e4.pxmid[1] * (1 - h2), y2 = r4.separators, x2 = [];
                  if (d2 && -1 !== d2.indexOf("label") && x2.push(e4.label), e4.text = g.castOption(f2.hovertext || f2.text, e4.pts), d2 && -1 !== d2.indexOf("text")) {
                    var b2 = e4.text;
                    s.isValidTextValue(b2) && x2.push(b2);
                  }
                  e4.value = e4.v, e4.valueLabel = g.formatPieValue(e4.v, y2), d2 && -1 !== d2.indexOf("value") && x2.push(e4.valueLabel), e4.percent = e4.v / a2.vTotal, e4.percentLabel = g.formatPiePercent(e4.percent, y2), d2 && -1 !== d2.indexOf("percent") && x2.push(e4.percentLabel);
                  var _2 = f2.hoverlabel, w2 = _2.font, T2 = [];
                  i.loneHover({ trace: c2, x0: p2 - h2 * a2.r, x1: p2 + h2 * a2.r, y: v2, _x0: u2 ? o2 + e4.TL[0] : p2 - h2 * a2.r, _x1: u2 ? o2 + e4.TR[0] : p2 + h2 * a2.r, _y0: u2 ? l2 + e4.TL[1] : v2 - h2 * a2.r, _y1: u2 ? l2 + e4.BL[1] : v2 + h2 * a2.r, text: x2.join("<br>"), name: f2.hovertemplate || -1 !== d2.indexOf("name") ? f2.name : void 0, idealAlign: e4.pxmid[0] < 0 ? "left" : "right", color: g.castOption(_2.bgcolor, e4.pts) || e4.color, borderColor: g.castOption(_2.bordercolor, e4.pts), fontFamily: g.castOption(w2.family, e4.pts), fontSize: g.castOption(w2.size, e4.pts), fontColor: g.castOption(w2.color, e4.pts), nameLength: g.castOption(_2.namelength, e4.pts), textAlign: g.castOption(_2.align, e4.pts), hovertemplate: g.castOption(f2.hovertemplate, e4.pts), hovertemplateLabels: e4, eventData: [m(e4, f2)] }, { container: r4._hoverlayer.node(), outerContainer: r4._paper.node(), gd: t3, inOut_bbox: T2 }), e4.bbox = T2[0], c2._hasHoverLabel = true;
                }
                c2._hasHoverEvent = true, t3.emit("plotly_hover", { points: [m(e4, f2)], event: n.event });
              }
            }), e3.on("mouseout", function(e4) {
              var r4 = t3._fullLayout, a3 = t3._fullData[c2.index], o3 = n.select(this).datum();
              c2._hasHoverEvent && (e4.originalEvent = n.event, t3.emit("plotly_unhover", { points: [m(o3, a3)], event: n.event }), c2._hasHoverEvent = false), c2._hasHoverLabel && (i.loneUnhover(r4._hoverlayer.node()), c2._hasHoverLabel = false);
            }), e3.on("click", function(e4) {
              var r4 = t3._fullLayout, a3 = t3._fullData[c2.index];
              t3._dragging || false === r4.hovermode || (t3._hoverdata = [m(e4, a3)], i.click(t3, n.event));
            });
          }
          function b(e3, t3, r3) {
            var n2 = g.castOption(e3.insidetextfont.color, t3.pts);
            !n2 && e3._input.textfont && (n2 = g.castOption(e3._input.textfont.color, t3.pts));
            var a2 = g.castOption(e3.insidetextfont.family, t3.pts) || g.castOption(e3.textfont.family, t3.pts) || r3.family, i2 = g.castOption(e3.insidetextfont.size, t3.pts) || g.castOption(e3.textfont.size, t3.pts) || r3.size, l2 = g.castOption(e3.insidetextfont.weight, t3.pts) || g.castOption(e3.textfont.weight, t3.pts) || r3.weight, s2 = g.castOption(e3.insidetextfont.style, t3.pts) || g.castOption(e3.textfont.style, t3.pts) || r3.style, c2 = g.castOption(e3.insidetextfont.variant, t3.pts) || g.castOption(e3.textfont.variant, t3.pts) || r3.variant, u2 = g.castOption(e3.insidetextfont.textcase, t3.pts) || g.castOption(e3.textfont.textcase, t3.pts) || r3.textcase, f2 = g.castOption(e3.insidetextfont.lineposition, t3.pts) || g.castOption(e3.textfont.lineposition, t3.pts) || r3.lineposition, d2 = g.castOption(e3.insidetextfont.shadow, t3.pts) || g.castOption(e3.textfont.shadow, t3.pts) || r3.shadow;
            return { color: n2 || o.contrast(t3.color), family: a2, size: i2, weight: l2, style: s2, variant: c2, textcase: u2, lineposition: f2, shadow: d2 };
          }
          function _(e3, t3) {
            for (var r3, n2, a2 = 0; a2 < e3.length; a2++) if ((n2 = (r3 = e3[a2][0]).trace).title.text) {
              var i2 = n2.title.text;
              n2._meta && (i2 = s.templateString(i2, n2._meta));
              var o2 = l.tester.append("text").attr("data-notex", 1).text(i2).call(l.font, n2.title.font).call(f.convertToTspans, t3), c2 = l.bBox(o2.node(), true);
              r3.titleBox = { width: c2.width, height: c2.height }, o2.remove();
            }
          }
          function w(e3, t3, r3) {
            var n2 = r3.r || t3.rpx1, a2 = t3.rInscribed;
            if (t3.startangle === t3.stopangle) return { rCenter: 1 - a2, scale: 0, rotate: 0, textPosAngle: 0 };
            var i2, o2 = t3.ring, l2 = 1 === o2 && Math.abs(t3.startangle - t3.stopangle) === 2 * Math.PI, s2 = t3.halfangle, c2 = t3.midangle, u2 = r3.trace.insidetextorientation, f2 = "horizontal" === u2, d2 = "tangential" === u2, h2 = "radial" === u2, p2 = "auto" === u2, v2 = [];
            if (!p2) {
              var g2, m2 = function(r4, a3) {
                if (function(e4, t4) {
                  var r5 = e4.startangle, n3 = e4.stopangle;
                  return r5 > t4 && t4 > n3 || r5 < t4 && t4 < n3;
                }(t3, r4)) {
                  var l3 = Math.abs(r4 - t3.startangle), s3 = Math.abs(r4 - t3.stopangle), c3 = l3 < s3 ? l3 : s3;
                  (i2 = "tan" === a3 ? M(e3, n2, o2, c3, 0) : T(e3, n2, o2, c3, Math.PI / 2)).textPosAngle = r4, v2.push(i2);
                }
              };
              if (f2 || d2) {
                for (g2 = 4; g2 >= -4; g2 -= 2) m2(Math.PI * g2, "tan");
                for (g2 = 4; g2 >= -4; g2 -= 2) m2(Math.PI * (g2 + 1), "tan");
              }
              if (f2 || h2) {
                for (g2 = 4; g2 >= -4; g2 -= 2) m2(Math.PI * (g2 + 1.5), "rad");
                for (g2 = 4; g2 >= -4; g2 -= 2) m2(Math.PI * (g2 + 0.5), "rad");
              }
            }
            if (l2 || p2 || f2) {
              var y2 = Math.sqrt(e3.width * e3.width + e3.height * e3.height);
              if ((i2 = { scale: a2 * n2 * 2 / y2, rCenter: 1 - a2, rotate: 0 }).textPosAngle = (t3.startangle + t3.stopangle) / 2, i2.scale >= 1) return i2;
              v2.push(i2);
            }
            (p2 || h2) && ((i2 = T(e3, n2, o2, s2, c2)).textPosAngle = (t3.startangle + t3.stopangle) / 2, v2.push(i2)), (p2 || d2) && ((i2 = M(e3, n2, o2, s2, c2)).textPosAngle = (t3.startangle + t3.stopangle) / 2, v2.push(i2));
            for (var x2 = 0, b2 = 0, _2 = 0; _2 < v2.length; _2++) {
              var w2 = v2[_2].scale;
              if (b2 < w2 && (b2 = w2, x2 = _2), !p2 && b2 >= 1) break;
            }
            return v2[x2];
          }
          function T(e3, t3, r3, n2, a2) {
            t3 = Math.max(0, t3 - 2 * v);
            var i2 = e3.width / e3.height, o2 = L(i2, n2, t3, r3);
            return { scale: 2 * o2 / e3.height, rCenter: k(i2, o2 / t3), rotate: A(a2) };
          }
          function M(e3, t3, r3, n2, a2) {
            t3 = Math.max(0, t3 - 2 * v);
            var i2 = e3.height / e3.width, o2 = L(i2, n2, t3, r3);
            return { scale: 2 * o2 / e3.width, rCenter: k(i2, o2 / t3), rotate: A(a2 + Math.PI / 2) };
          }
          function k(e3, t3) {
            return Math.cos(t3) - e3 * t3;
          }
          function A(e3) {
            return (180 / Math.PI * e3 + 720) % 180 - 90;
          }
          function L(e3, t3, r3, n2) {
            var a2 = e3 + 1 / (2 * Math.tan(t3));
            return r3 * Math.min(1 / (Math.sqrt(a2 * a2 + 0.5) + a2), n2 / (Math.sqrt(e3 * e3 + n2 / 2) + e3));
          }
          function S(e3, t3) {
            return e3.v !== t3.vTotal || t3.trace.hole ? Math.min(1 / (1 + 1 / Math.sin(e3.halfangle)), e3.ring / 2) : 1;
          }
          function C(e3, t3) {
            var r3 = t3.pxmid[0], n2 = t3.pxmid[1], a2 = e3.width / 2, i2 = e3.height / 2;
            return r3 < 0 && (a2 *= -1), n2 < 0 && (i2 *= -1), { scale: 1, rCenter: 1, rotate: 0, x: a2 + Math.abs(i2) * (a2 > 0 ? 1 : -1) / 2, y: i2 / (1 + r3 * r3 / (n2 * n2)), outside: true };
          }
          function O(e3, t3) {
            var r3, n2, a2, i2 = e3.trace, o2 = { x: e3.cx, y: e3.cy }, l2 = { tx: 0, ty: 0 };
            l2.ty += i2.title.font.size, a2 = P(i2), -1 !== i2.title.position.indexOf("top") ? (o2.y -= (1 + a2) * e3.r, l2.ty -= e3.titleBox.height) : -1 !== i2.title.position.indexOf("bottom") && (o2.y += (1 + a2) * e3.r);
            var s2, c2 = e3.r / (void 0 === (s2 = e3.trace.aspectratio) ? 1 : s2), u2 = t3.w * (i2.domain.x[1] - i2.domain.x[0]) / 2;
            return -1 !== i2.title.position.indexOf("left") ? (u2 += c2, o2.x -= (1 + a2) * c2, l2.tx += e3.titleBox.width / 2) : -1 !== i2.title.position.indexOf("center") ? u2 *= 2 : -1 !== i2.title.position.indexOf("right") && (u2 += c2, o2.x += (1 + a2) * c2, l2.tx -= e3.titleBox.width / 2), r3 = u2 / e3.titleBox.width, n2 = D(e3, t3) / e3.titleBox.height, { x: o2.x, y: o2.y, scale: Math.min(r3, n2), tx: l2.tx, ty: l2.ty };
          }
          function D(e3, t3) {
            var r3 = e3.trace, n2 = t3.h * (r3.domain.y[1] - r3.domain.y[0]);
            return Math.min(e3.titleBox.height, n2 / 2);
          }
          function P(e3) {
            var t3, r3 = e3.pull;
            if (!r3) return 0;
            if (s.isArrayOrTypedArray(r3)) for (r3 = 0, t3 = 0; t3 < e3.pull.length; t3++) e3.pull[t3] > r3 && (r3 = e3.pull[t3]);
            return r3;
          }
          function z(e3, t3) {
            for (var r3 = [], n2 = 0; n2 < e3.length; n2++) {
              var a2 = e3[n2][0], i2 = a2.trace, o2 = i2.domain, l2 = t3.w * (o2.x[1] - o2.x[0]), s2 = t3.h * (o2.y[1] - o2.y[0]);
              i2.title.text && "middle center" !== i2.title.position && (s2 -= D(a2, t3));
              var c2 = l2 / 2, u2 = s2 / 2;
              "funnelarea" !== i2.type || i2.scalegroup || (u2 /= i2.aspectratio), a2.r = Math.min(c2, u2) / (1 + P(i2)), a2.cx = t3.l + t3.w * (i2.domain.x[1] + i2.domain.x[0]) / 2, a2.cy = t3.t + t3.h * (1 - i2.domain.y[0]) - s2 / 2, i2.title.text && -1 !== i2.title.position.indexOf("bottom") && (a2.cy -= D(a2, t3)), i2.scalegroup && -1 === r3.indexOf(i2.scalegroup) && r3.push(i2.scalegroup);
            }
            !function(e4, t4) {
              for (var r4, n3, a3, i3 = 0; i3 < t4.length; i3++) {
                var o3 = 1 / 0, l3 = t4[i3];
                for (n3 = 0; n3 < e4.length; n3++) if ((a3 = (r4 = e4[n3][0]).trace).scalegroup === l3) {
                  var s3;
                  if ("pie" === a3.type) s3 = r4.r * r4.r;
                  else if ("funnelarea" === a3.type) {
                    var c3, u3;
                    a3.aspectratio > 1 ? u3 = (c3 = r4.r) / a3.aspectratio : c3 = (u3 = r4.r) * a3.aspectratio, s3 = (c3 *= (1 + a3.baseratio) / 2) * u3;
                  }
                  o3 = Math.min(o3, s3 / r4.vTotal);
                }
                for (n3 = 0; n3 < e4.length; n3++) if ((a3 = (r4 = e4[n3][0]).trace).scalegroup === l3) {
                  var f2 = o3 * r4.vTotal;
                  "funnelarea" === a3.type && (f2 /= (1 + a3.baseratio) / 2, f2 /= a3.aspectratio), r4.r = Math.sqrt(f2);
                }
              }
            }(e3, r3);
          }
          function I(e3, t3) {
            return [e3 * Math.sin(t3), -e3 * Math.cos(t3)];
          }
          function E(e3, t3, r3) {
            var n2 = e3._fullLayout, a2 = r3.trace, i2 = a2.texttemplate, o2 = a2.textinfo;
            if (!i2 && o2 && "none" !== o2) {
              var l2, c2 = o2.split("+"), u2 = function(e4) {
                return -1 !== c2.indexOf(e4);
              }, f2 = u2("label"), d2 = u2("text"), h2 = u2("value"), p2 = u2("percent"), v2 = n2.separators;
              if (l2 = f2 ? [t3.label] : [], d2) {
                var m2 = g.getFirstFilled(a2.text, t3.pts);
                y(m2) && l2.push(m2);
              }
              h2 && l2.push(g.formatPieValue(t3.v, v2)), p2 && l2.push(g.formatPiePercent(t3.v / r3.vTotal, v2)), t3.text = l2.join("<br>");
            }
            if (i2) {
              var x2 = s.castOption(a2, t3.i, "texttemplate");
              if (x2) {
                var b2 = function(e4) {
                  return { label: e4.label, value: e4.v, valueLabel: g.formatPieValue(e4.v, n2.separators), percent: e4.v / r3.vTotal, percentLabel: g.formatPiePercent(e4.v / r3.vTotal, n2.separators), color: e4.color, text: e4.text, customdata: s.castOption(a2, e4.i, "customdata") };
                }(t3), _2 = g.getFirstFilled(a2.text, t3.pts);
                (y(_2) || "" === _2) && (b2.text = _2), t3.text = s.texttemplateString(x2, b2, e3._fullLayout._d3locale, b2, a2._meta || {});
              } else t3.text = "";
            }
          }
          function R(e3, t3) {
            var r3 = e3.rotate * Math.PI / 180, n2 = Math.cos(r3), a2 = Math.sin(r3), i2 = (t3.left + t3.right) / 2, o2 = (t3.top + t3.bottom) / 2;
            e3.textX = i2 * n2 - o2 * a2, e3.textY = i2 * a2 + o2 * n2, e3.noCenter = true;
          }
          e2.exports = { plot: function(e3, t3) {
            var r3 = e3._context.staticPlot, i2 = e3._fullLayout, d2 = i2._size;
            p("pie", i2), _(t3, e3), z(t3, d2);
            var v2 = s.makeTraceGroups(i2._pielayer, t3, "trace").each(function(t4) {
              var p2 = n.select(this), v3 = t4[0], m2 = v3.trace;
              !function(e4) {
                var t5, r4, n2, a2 = e4[0], i3 = a2.r, o2 = a2.trace, l2 = g.getRotationAngle(o2.rotation), s2 = 2 * Math.PI / a2.vTotal, c2 = "px0", u2 = "px1";
                if ("counterclockwise" === o2.direction) {
                  for (t5 = 0; t5 < e4.length && e4[t5].hidden; t5++) ;
                  if (t5 === e4.length) return;
                  l2 += s2 * e4[t5].v, s2 *= -1, c2 = "px1", u2 = "px0";
                }
                for (n2 = I(i3, l2), t5 = 0; t5 < e4.length; t5++) (r4 = e4[t5]).hidden || (r4[c2] = n2, r4.startangle = l2, l2 += s2 * r4.v / 2, r4.pxmid = I(i3, l2), r4.midangle = l2, n2 = I(i3, l2 += s2 * r4.v / 2), r4.stopangle = l2, r4[u2] = n2, r4.largeArc = r4.v > a2.vTotal / 2 ? 1 : 0, r4.halfangle = Math.PI * Math.min(r4.v / a2.vTotal, 0.5), r4.ring = 1 - o2.hole, r4.rInscribed = S(r4, a2));
              }(t4), p2.attr("stroke-linejoin", "round"), p2.each(function() {
                var y2 = n.select(this).selectAll("g.slice").data(t4);
                y2.enter().append("g").classed("slice", true), y2.exit().remove();
                var _2 = [[[], []], [[], []]], T2 = false;
                y2.each(function(a2, o2) {
                  if (a2.hidden) n.select(this).selectAll("path,g").remove();
                  else {
                    a2.pointNumber = a2.i, a2.curveNumber = m2.index, _2[a2.pxmid[1] < 0 ? 0 : 1][a2.pxmid[0] < 0 ? 0 : 1].push(a2);
                    var c2 = v3.cx, u2 = v3.cy, d3 = n.select(this), p3 = d3.selectAll("path.surface").data([a2]);
                    if (p3.enter().append("path").classed("surface", true).style({ "pointer-events": r3 ? "none" : "all" }), d3.call(x, e3, t4), m2.pull) {
                      var y3 = +g.castOption(m2.pull, a2.pts) || 0;
                      y3 > 0 && (c2 += y3 * a2.pxmid[0], u2 += y3 * a2.pxmid[1]);
                    }
                    a2.cxFinal = c2, a2.cyFinal = u2;
                    var M3 = m2.hole;
                    if (a2.v === v3.vTotal) {
                      var k3 = "M" + (c2 + a2.px0[0]) + "," + (u2 + a2.px0[1]) + D3(a2.px0, a2.pxmid, true, 1) + D3(a2.pxmid, a2.px0, true, 1) + "Z";
                      M3 ? p3.attr("d", "M" + (c2 + M3 * a2.px0[0]) + "," + (u2 + M3 * a2.px0[1]) + D3(a2.px0, a2.pxmid, false, M3) + D3(a2.pxmid, a2.px0, false, M3) + "Z" + k3) : p3.attr("d", k3);
                    } else {
                      var A3 = D3(a2.px0, a2.px1, true, 1);
                      if (M3) {
                        var L3 = 1 - M3;
                        p3.attr("d", "M" + (c2 + M3 * a2.px1[0]) + "," + (u2 + M3 * a2.px1[1]) + D3(a2.px1, a2.px0, false, M3) + "l" + L3 * a2.px0[0] + "," + L3 * a2.px0[1] + A3 + "Z");
                      } else p3.attr("d", "M" + c2 + "," + u2 + "l" + a2.px0[0] + "," + a2.px0[1] + A3 + "Z");
                    }
                    E(e3, a2, v3);
                    var S3 = g.castOption(m2.textposition, a2.pts), O2 = d3.selectAll("g.slicetext").data(a2.text && "none" !== S3 ? [0] : []);
                    O2.enter().append("g").classed("slicetext", true), O2.exit().remove(), O2.each(function() {
                      var r4 = s.ensureSingle(n.select(this), "text", "", function(e4) {
                        e4.attr("data-notex", 1);
                      }), d4 = s.ensureUniformFontSize(e3, "outside" === S3 ? function(e4, t5, r5) {
                        return { color: g.castOption(e4.outsidetextfont.color, t5.pts) || g.castOption(e4.textfont.color, t5.pts) || r5.color, family: g.castOption(e4.outsidetextfont.family, t5.pts) || g.castOption(e4.textfont.family, t5.pts) || r5.family, size: g.castOption(e4.outsidetextfont.size, t5.pts) || g.castOption(e4.textfont.size, t5.pts) || r5.size, weight: g.castOption(e4.outsidetextfont.weight, t5.pts) || g.castOption(e4.textfont.weight, t5.pts) || r5.weight, style: g.castOption(e4.outsidetextfont.style, t5.pts) || g.castOption(e4.textfont.style, t5.pts) || r5.style, variant: g.castOption(e4.outsidetextfont.variant, t5.pts) || g.castOption(e4.textfont.variant, t5.pts) || r5.variant, textcase: g.castOption(e4.outsidetextfont.textcase, t5.pts) || g.castOption(e4.textfont.textcase, t5.pts) || r5.textcase, lineposition: g.castOption(e4.outsidetextfont.lineposition, t5.pts) || g.castOption(e4.textfont.lineposition, t5.pts) || r5.lineposition, shadow: g.castOption(e4.outsidetextfont.shadow, t5.pts) || g.castOption(e4.textfont.shadow, t5.pts) || r5.shadow };
                      }(m2, a2, i2.font) : b(m2, a2, i2.font));
                      r4.text(a2.text).attr({ class: "slicetext", transform: "", "text-anchor": "middle" }).call(l.font, d4).call(f.convertToTspans, e3);
                      var p4, y4 = l.bBox(r4.node());
                      if ("outside" === S3) p4 = C(y4, a2);
                      else if (p4 = w(y4, a2, v3), "auto" === S3 && p4.scale < 1) {
                        var x2 = s.ensureUniformFontSize(e3, m2.outsidetextfont);
                        r4.call(l.font, x2), p4 = C(y4 = l.bBox(r4.node()), a2);
                      }
                      var _3 = p4.textPosAngle, M4 = void 0 === _3 ? a2.pxmid : I(v3.r, _3);
                      if (p4.targetX = c2 + M4[0] * p4.rCenter + (p4.x || 0), p4.targetY = u2 + M4[1] * p4.rCenter + (p4.y || 0), R(p4, y4), p4.outside) {
                        var k4 = p4.targetY;
                        a2.yLabelMin = k4 - y4.height / 2, a2.yLabelMid = k4, a2.yLabelMax = k4 + y4.height / 2, a2.labelExtraX = 0, a2.labelExtraY = 0, T2 = true;
                      }
                      p4.fontSize = d4.size, h(m2.type, p4, i2), t4[o2].transform = p4, s.setTransormAndDisplay(r4, p4);
                    });
                  }
                  function D3(e4, t5, r4, n2) {
                    var i3 = n2 * (t5[0] - e4[0]), o3 = n2 * (t5[1] - e4[1]);
                    return "a" + n2 * v3.r + "," + n2 * v3.r + " 0 " + a2.largeArc + (r4 ? " 1 " : " 0 ") + i3 + "," + o3;
                  }
                });
                var M2 = n.select(this).selectAll("g.titletext").data(m2.title.text ? [0] : []);
                if (M2.enter().append("g").classed("titletext", true), M2.exit().remove(), M2.each(function() {
                  var t5, r4 = s.ensureSingle(n.select(this), "text", "", function(e4) {
                    e4.attr("data-notex", 1);
                  }), a2 = m2.title.text;
                  m2._meta && (a2 = s.templateString(a2, m2._meta)), r4.text(a2).attr({ class: "titletext", transform: "", "text-anchor": "middle" }).call(l.font, m2.title.font).call(f.convertToTspans, e3), t5 = "middle center" === m2.title.position ? function(e4) {
                    var t6 = Math.sqrt(e4.titleBox.width * e4.titleBox.width + e4.titleBox.height * e4.titleBox.height);
                    return { x: e4.cx, y: e4.cy, scale: e4.trace.hole * e4.r * 2 / t6, tx: 0, ty: -e4.titleBox.height / 2 + e4.trace.title.font.size };
                  }(v3) : O(v3, d2), r4.attr("transform", u(t5.x, t5.y) + c(Math.min(1, t5.scale)) + u(t5.tx, t5.ty));
                }), T2 && function(e4, t5) {
                  var r4, n2, a2, i3, o2, l2, c2, u2, f2, d3, h2, p3, v4;
                  function m3(e5, t6) {
                    return e5.pxmid[1] - t6.pxmid[1];
                  }
                  function y3(e5, t6) {
                    return t6.pxmid[1] - e5.pxmid[1];
                  }
                  function x2(e5, r5) {
                    r5 || (r5 = {});
                    var a3, u3, f3, h3, p4 = r5.labelExtraY + (n2 ? r5.yLabelMax : r5.yLabelMin), v5 = n2 ? e5.yLabelMin : e5.yLabelMax, m4 = n2 ? e5.yLabelMax : e5.yLabelMin, y4 = e5.cyFinal + o2(e5.px0[1], e5.px1[1]), x3 = p4 - v5;
                    if (x3 * c2 > 0 && (e5.labelExtraY = x3), s.isArrayOrTypedArray(t5.pull)) for (u3 = 0; u3 < d3.length; u3++) (f3 = d3[u3]) === e5 || (g.castOption(t5.pull, e5.pts) || 0) >= (g.castOption(t5.pull, f3.pts) || 0) || ((e5.pxmid[1] - f3.pxmid[1]) * c2 > 0 ? (x3 = f3.cyFinal + o2(f3.px0[1], f3.px1[1]) - v5 - e5.labelExtraY) * c2 > 0 && (e5.labelExtraY += x3) : (m4 + e5.labelExtraY - y4) * c2 > 0 && (a3 = 3 * l2 * Math.abs(u3 - d3.indexOf(e5)), (h3 = f3.cxFinal + i3(f3.px0[0], f3.px1[0]) + a3 - (e5.cxFinal + e5.pxmid[0]) - e5.labelExtraX) * l2 > 0 && (e5.labelExtraX += h3)));
                  }
                  for (n2 = 0; n2 < 2; n2++) for (a2 = n2 ? m3 : y3, o2 = n2 ? Math.max : Math.min, c2 = n2 ? 1 : -1, r4 = 0; r4 < 2; r4++) {
                    for (i3 = r4 ? Math.max : Math.min, l2 = r4 ? 1 : -1, (u2 = e4[n2][r4]).sort(a2), f2 = e4[1 - n2][r4], d3 = f2.concat(u2), p3 = [], h2 = 0; h2 < u2.length; h2++) void 0 !== u2[h2].yLabelMid && p3.push(u2[h2]);
                    for (v4 = false, h2 = 0; n2 && h2 < f2.length; h2++) if (void 0 !== f2[h2].yLabelMid) {
                      v4 = f2[h2];
                      break;
                    }
                    for (h2 = 0; h2 < p3.length; h2++) {
                      var b2 = h2 && p3[h2 - 1];
                      v4 && !h2 && (b2 = v4), x2(p3[h2], b2);
                    }
                  }
                }(_2, m2), function(e4, t5) {
                  e4.each(function(e5) {
                    var r4 = n.select(this);
                    if (e5.labelExtraX || e5.labelExtraY) {
                      var a2 = r4.select("g.slicetext text");
                      e5.transform.targetX += e5.labelExtraX, e5.transform.targetY += e5.labelExtraY, s.setTransormAndDisplay(a2, e5.transform);
                      var i3 = e5.cxFinal + e5.pxmid[0], l2 = "M" + i3 + "," + (e5.cyFinal + e5.pxmid[1]), c2 = (e5.yLabelMax - e5.yLabelMin) * (e5.pxmid[0] < 0 ? -1 : 1) / 4;
                      if (e5.labelExtraX) {
                        var u2 = e5.labelExtraX * e5.pxmid[1] / e5.pxmid[0], f2 = e5.yLabelMid + e5.labelExtraY - (e5.cyFinal + e5.pxmid[1]);
                        Math.abs(u2) > Math.abs(f2) ? l2 += "l" + f2 * e5.pxmid[0] / e5.pxmid[1] + "," + f2 + "H" + (i3 + e5.labelExtraX + c2) : l2 += "l" + e5.labelExtraX + "," + u2 + "v" + (f2 - u2) + "h" + c2;
                      } else l2 += "V" + (e5.yLabelMid + e5.labelExtraY) + "h" + c2;
                      s.ensureSingle(r4, "path", "textline").call(o.stroke, t5.outsidetextfont.color).attr({ "stroke-width": Math.min(2, t5.outsidetextfont.size / 8), d: l2, fill: "none" });
                    } else r4.select("path.textline").remove();
                  });
                }(y2, m2), T2 && m2.automargin) {
                  var k2 = l.bBox(p2.node()), A2 = m2.domain, L2 = d2.w * (A2.x[1] - A2.x[0]), S2 = d2.h * (A2.y[1] - A2.y[0]), D2 = (0.5 * L2 - v3.r) / d2.w, P2 = (0.5 * S2 - v3.r) / d2.h;
                  a.autoMargin(e3, "pie." + m2.uid + ".automargin", { xl: A2.x[0] - D2, xr: A2.x[1] + D2, yb: A2.y[0] - P2, yt: A2.y[1] + P2, l: Math.max(v3.cx - v3.r - k2.left, 0), r: Math.max(k2.right - (v3.cx + v3.r), 0), b: Math.max(k2.bottom - (v3.cy + v3.r), 0), t: Math.max(v3.cy - v3.r - k2.top, 0), pad: 5 });
                }
              });
            });
            setTimeout(function() {
              v2.selectAll("tspan").each(function() {
                var e4 = n.select(this);
                e4.attr("dy") && e4.attr("dy", e4.attr("dy"));
              });
            }, 0);
          }, formatSliceLabel: E, transformInsideText: w, determineInsideTextFont: b, positionTitleOutside: O, prerenderTitles: _, layoutAreas: z, attachFxHandlers: x, computeTransform: R };
        }, 140: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2891), i = r2(4102).resizeText;
          e2.exports = function(e3) {
            var t3 = e3._fullLayout._pielayer.selectAll(".trace");
            i(e3, t3, "pie"), t3.each(function(t4) {
              var r3 = t4[0].trace, i2 = n.select(this);
              i2.style({ opacity: r3.opacity }), i2.selectAll("path.surface").each(function(t5) {
                n.select(this).call(a, t5, r3, e3);
              });
            });
          };
        }, 2891: function(e2, t2, r2) {
          var n = r2(8766), a = r2(7252).castOption, i = r2(5067);
          e2.exports = function(e3, t3, r3, o) {
            var l = r3.marker.line, s = a(l.color, t3.pts) || n.defaultLine, c = a(l.width, t3.pts) || 0;
            e3.call(i, t3, r3, o).style("stroke-width", c).call(n.stroke, s);
          };
        }, 9203: function(e2, t2, r2) {
          var n = r2(4809);
          e2.exports = function(e3, t3) {
            for (var r3 = 0; r3 < e3.length; r3++) e3[r3].i = r3;
            n.mergeArray(t3.text, e3, "tx"), n.mergeArray(t3.texttemplate, e3, "txt"), n.mergeArray(t3.hovertext, e3, "htx"), n.mergeArray(t3.customdata, e3, "data"), n.mergeArray(t3.textposition, e3, "tp"), t3.textfont && (n.mergeArrayCastPositive(t3.textfont.size, e3, "ts"), n.mergeArray(t3.textfont.color, e3, "tc"), n.mergeArray(t3.textfont.family, e3, "tf"), n.mergeArray(t3.textfont.weight, e3, "tw"), n.mergeArray(t3.textfont.style, e3, "ty"), n.mergeArray(t3.textfont.variant, e3, "tv"), n.mergeArray(t3.textfont.textcase, e3, "tC"), n.mergeArray(t3.textfont.lineposition, e3, "tE"), n.mergeArray(t3.textfont.shadow, e3, "tS"));
            var a = t3.marker;
            if (a) {
              n.mergeArrayCastPositive(a.size, e3, "ms"), n.mergeArrayCastPositive(a.opacity, e3, "mo"), n.mergeArray(a.symbol, e3, "mx"), n.mergeArray(a.angle, e3, "ma"), n.mergeArray(a.standoff, e3, "mf"), n.mergeArray(a.color, e3, "mc");
              var i = a.line;
              a.line && (n.mergeArray(i.color, e3, "mlc"), n.mergeArrayCastPositive(i.width, e3, "mlw"));
              var o = a.gradient;
              o && "none" !== o.type && (n.mergeArray(o.type, e3, "mgt"), n.mergeArray(o.color, e3, "mgc"));
            }
          };
        }, 6640: function(e2, t2, r2) {
          var n = r2(712).axisHoverFormat, a = r2(3208).ay, i = r2(3208).rb, o = r2(7163), l = r2(337), s = r2(4850).T, c = r2(4850).k, u = r2(2203), f = r2(2660), d = r2(3049).extendFlat, h = r2(9326);
          e2.exports = { x: { valType: "data_array", editType: "calc+clearAxisTypes", anim: true }, x0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", anim: true }, dx: { valType: "number", dflt: 1, editType: "calc", anim: true }, y: { valType: "data_array", editType: "calc+clearAxisTypes", anim: true }, y0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", anim: true }, dy: { valType: "number", dflt: 1, editType: "calc", anim: true }, xperiod: { valType: "any", dflt: 0, editType: "calc" }, yperiod: { valType: "any", dflt: 0, editType: "calc" }, xperiod0: { valType: "any", editType: "calc" }, yperiod0: { valType: "any", editType: "calc" }, xperiodalignment: { valType: "enumerated", values: ["start", "middle", "end"], dflt: "middle", editType: "calc" }, yperiodalignment: { valType: "enumerated", values: ["start", "middle", "end"], dflt: "middle", editType: "calc" }, xhoverformat: n("x"), yhoverformat: n("y"), offsetgroup: { valType: "string", dflt: "", editType: "calc" }, alignmentgroup: { valType: "string", dflt: "", editType: "calc" }, stackgroup: { valType: "string", dflt: "", editType: "calc" }, orientation: { valType: "enumerated", values: ["v", "h"], editType: "calc" }, groupnorm: { valType: "enumerated", values: ["", "fraction", "percent"], dflt: "", editType: "calc" }, stackgaps: { valType: "enumerated", values: ["infer zero", "interpolate"], dflt: "infer zero", editType: "calc" }, text: { valType: "string", dflt: "", arrayOk: true, editType: "calc" }, texttemplate: a({}, {}), hovertext: { valType: "string", dflt: "", arrayOk: true, editType: "style" }, mode: { valType: "flaglist", flags: ["lines", "markers", "text"], extras: ["none"], editType: "calc" }, hoveron: { valType: "flaglist", flags: ["points", "fills"], editType: "style" }, hovertemplate: i({}, { keys: f.eventDataKeys }), line: { color: { valType: "color", editType: "style", anim: true }, width: { valType: "number", min: 0, dflt: 2, editType: "style", anim: true }, shape: { valType: "enumerated", values: ["linear", "spline", "hv", "vh", "hvh", "vhv"], dflt: "linear", editType: "plot" }, smoothing: { valType: "number", min: 0, max: 1.3, dflt: 1, editType: "plot" }, dash: d({}, s, { editType: "style" }), backoff: { valType: "number", min: 0, dflt: "auto", arrayOk: true, editType: "plot" }, simplify: { valType: "boolean", dflt: true, editType: "plot" }, editType: "plot" }, connectgaps: { valType: "boolean", dflt: false, editType: "calc" }, cliponaxis: { valType: "boolean", dflt: true, editType: "plot" }, fill: { valType: "enumerated", values: ["none", "tozeroy", "tozerox", "tonexty", "tonextx", "toself", "tonext"], editType: "calc" }, fillcolor: h(true), fillgradient: d({ type: { valType: "enumerated", values: ["radial", "horizontal", "vertical", "none"], dflt: "none", editType: "calc" }, start: { valType: "number", editType: "calc" }, stop: { valType: "number", editType: "calc" }, colorscale: { valType: "colorscale", editType: "style" }, editType: "calc" }), fillpattern: c, marker: d({ symbol: { valType: "enumerated", values: u.symbolList, dflt: "circle", arrayOk: true, editType: "style" }, opacity: { valType: "number", min: 0, max: 1, arrayOk: true, editType: "style", anim: true }, angle: { valType: "angle", dflt: 0, arrayOk: true, editType: "plot", anim: false }, angleref: { valType: "enumerated", values: ["previous", "up"], dflt: "up", editType: "plot", anim: false }, standoff: { valType: "number", min: 0, dflt: 0, arrayOk: true, editType: "plot", anim: true }, size: { valType: "number", min: 0, dflt: 6, arrayOk: true, editType: "calc", anim: true }, maxdisplayed: { valType: "number", min: 0, dflt: 0, editType: "plot" }, sizeref: { valType: "number", dflt: 1, editType: "calc" }, sizemin: { valType: "number", min: 0, dflt: 0, editType: "calc" }, sizemode: { valType: "enumerated", values: ["diameter", "area"], dflt: "diameter", editType: "calc" }, line: d({ width: { valType: "number", min: 0, arrayOk: true, editType: "style", anim: true }, editType: "calc" }, o("marker.line", { anim: true })), gradient: { type: { valType: "enumerated", values: ["radial", "horizontal", "vertical", "none"], arrayOk: true, dflt: "none", editType: "calc" }, color: { valType: "color", arrayOk: true, editType: "calc" }, editType: "calc" }, editType: "calc" }, o("marker", { anim: true })), selected: { marker: { opacity: { valType: "number", min: 0, max: 1, editType: "style" }, color: { valType: "color", editType: "style" }, size: { valType: "number", min: 0, editType: "style" }, editType: "style" }, textfont: { color: { valType: "color", editType: "style" }, editType: "style" }, editType: "style" }, unselected: { marker: { opacity: { valType: "number", min: 0, max: 1, editType: "style" }, color: { valType: "color", editType: "style" }, size: { valType: "number", min: 0, editType: "style" }, editType: "style" }, textfont: { color: { valType: "color", editType: "style" }, editType: "style" }, editType: "style" }, textposition: { valType: "enumerated", values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right"], dflt: "middle center", arrayOk: true, editType: "calc" }, textfont: l({ editType: "calc", colorEditType: "style", arrayOk: true }), zorder: { valType: "integer", dflt: 0, editType: "plot" } };
        }, 6544: function(e2, t2, r2) {
          var n = r2(721), a = r2(4809), i = r2(9714), o = r2(528), l = r2(3821).BADNUM, s = r2(4726), c = r2(7272), u = r2(9203), f = r2(8861);
          function d(e3, t3, r3, n2, a2, o2, l2) {
            var c2 = t3._length, u2 = e3._fullLayout, f2 = r3._id, d2 = n2._id, h2 = u2._firstScatter[v(t3)] === t3.uid, p2 = (g(t3, u2, r3, n2) || {}).orientation, m = t3.fill;
            r3._minDtick = 0, n2._minDtick = 0;
            var y = { padded: true }, x = { padded: true };
            l2 && (y.ppad = x.ppad = l2);
            var b = c2 < 2 || a2[0] !== a2[c2 - 1] || o2[0] !== o2[c2 - 1];
            b && ("tozerox" === m || "tonextx" === m && (h2 || "h" === p2)) ? y.tozero = true : (t3.error_y || {}).visible || "tonexty" !== m && "tozeroy" !== m && (s.hasMarkers(t3) || s.hasText(t3)) || (y.padded = false, y.ppad = 0), b && ("tozeroy" === m || "tonexty" === m && (h2 || "v" === p2)) ? x.tozero = true : "tonextx" !== m && "tozerox" !== m || (x.padded = false), f2 && (t3._extremes[f2] = i.findExtremes(r3, a2, y)), d2 && (t3._extremes[d2] = i.findExtremes(n2, o2, x));
          }
          function h(e3, t3) {
            if (s.hasMarkers(e3)) {
              var r3, n2 = e3.marker, o2 = 1.6 * (e3.marker.sizeref || 1);
              if (r3 = "area" === e3.marker.sizemode ? function(e4) {
                return Math.max(Math.sqrt((e4 || 0) / o2), 3);
              } : function(e4) {
                return Math.max((e4 || 0) / o2, 3);
              }, a.isArrayOrTypedArray(n2.size)) {
                var l2 = { type: "linear" };
                i.setConvert(l2);
                for (var c2 = l2.makeCalcdata(e3.marker, "size"), u2 = new Array(t3), f2 = 0; f2 < t3; f2++) u2[f2] = r3(c2[f2]);
                return u2;
              }
              return r3(n2.size);
            }
          }
          function p(e3, t3) {
            var r3 = v(t3), n2 = e3._firstScatter;
            n2[r3] || (n2[r3] = t3.uid);
          }
          function v(e3) {
            var t3 = e3.stackgroup;
            return e3.xaxis + e3.yaxis + e3.type + (t3 ? "-" + t3 : "");
          }
          function g(e3, t3, r3, n2) {
            var a2 = e3.stackgroup;
            if (a2) {
              var i2 = t3._scatterStackOpts[r3._id + n2._id][a2], o2 = "v" === i2.orientation ? n2 : r3;
              return "linear" === o2.type || "log" === o2.type ? i2 : void 0;
            }
          }
          e2.exports = { calc: function(e3, t3) {
            var r3, s2, v2, m, y, x, b = e3._fullLayout, _ = t3._xA = i.getFromId(e3, t3.xaxis || "x", "x"), w = t3._yA = i.getFromId(e3, t3.yaxis || "y", "y"), T = _.makeCalcdata(t3, "x"), M = w.makeCalcdata(t3, "y"), k = o(t3, _, "x", T), A = o(t3, w, "y", M), L = k.vals, S = A.vals, C = t3._length, O = new Array(C), D = t3.ids, P = g(t3, b, _, w), z = false;
            p(b, t3);
            var I, E = "x", R = "y";
            P ? (a.pushUnique(P.traceIndices, t3._expandedIndex), (r3 = "v" === P.orientation) ? (R = "s", I = "x") : (E = "s", I = "y"), y = "interpolate" === P.stackgaps) : d(e3, t3, _, w, L, S, h(t3, C));
            var N = !!t3.xperiodalignment, F = !!t3.yperiodalignment;
            for (s2 = 0; s2 < C; s2++) {
              var H = O[s2] = {}, B = n(L[s2]), j = n(S[s2]);
              B && j ? (H[E] = L[s2], H[R] = S[s2], N && (H.orig_x = T[s2], H.xEnd = k.ends[s2], H.xStart = k.starts[s2]), F && (H.orig_y = M[s2], H.yEnd = A.ends[s2], H.yStart = A.starts[s2])) : P && (r3 ? B : j) ? (H[I] = r3 ? L[s2] : S[s2], H.gap = true, y ? (H.s = l, z = true) : H.s = 0) : H[E] = H[R] = l, D && (H.id = String(D[s2]));
            }
            if (u(O, t3), c(e3, t3), f(O, t3), P) {
              for (s2 = 0; s2 < O.length; ) O[s2][I] === l ? O.splice(s2, 1) : s2++;
              if (a.sort(O, function(e4, t4) {
                return e4[I] - t4[I] || e4.i - t4.i;
              }), z) {
                for (s2 = 0; s2 < O.length - 1 && O[s2].gap; ) s2++;
                for ((x = O[s2].s) || (x = O[s2].s = 0), v2 = 0; v2 < s2; v2++) O[v2].s = x;
                for (m = O.length - 1; m > s2 && O[m].gap; ) m--;
                for (x = O[m].s, v2 = O.length - 1; v2 > m; v2--) O[v2].s = x;
                for (; s2 < m; ) if (O[++s2].gap) {
                  for (v2 = s2 + 1; O[v2].gap; ) v2++;
                  for (var Y = O[s2 - 1][I], V = O[s2 - 1].s, U = (O[v2].s - V) / (O[v2][I] - Y); s2 < v2; ) O[s2].s = V + (O[s2][I] - Y) * U, s2++;
                }
              }
            }
            return O;
          }, calcMarkerSize: h, calcAxisExpansion: d, setFirstScatter: p, getStackOpts: g };
        }, 8861: function(e2, t2, r2) {
          var n = r2(4809);
          e2.exports = function(e3, t3) {
            n.isArrayOrTypedArray(t3.selectedpoints) && n.tagSelected(e3, t3);
          };
        }, 7272: function(e2, t2, r2) {
          var n = r2(5477).hasColorscale, a = r2(8379), i = r2(4726);
          e2.exports = function(e3, t3) {
            i.hasLines(t3) && n(t3, "line") && a(e3, t3, { vals: t3.line.color, containerStr: "line", cLetter: "c" }), i.hasMarkers(t3) && (n(t3, "marker") && a(e3, t3, { vals: t3.marker.color, containerStr: "marker", cLetter: "c" }), n(t3, "marker.line") && a(e3, t3, { vals: t3.marker.line.color, containerStr: "marker.line", cLetter: "c" }));
          };
        }, 2660: function(e2) {
          e2.exports = { PTS_LINESONLY: 20, minTolerance: 0.2, toleranceGrowth: 10, maxScreensAway: 20, eventDataKeys: [] };
        }, 5603: function(e2, t2, r2) {
          var n = r2(6544), a = r2(4782).setGroupPositions;
          function i(e3, t3, r3, n2, a2, i2, o) {
            a2[n2] = true;
            var l = { i: null, gap: true, s: 0 };
            if (l[o] = r3, e3.splice(t3, 0, l), t3 && r3 === e3[t3 - 1][o]) {
              var s = e3[t3 - 1];
              l.s = s.s, l.i = s.i, l.gap = s.gap;
            } else i2 && (l.s = function(e4, t4, r4, n3) {
              var a3 = e4[t4 - 1], i3 = e4[t4 + 1];
              return i3 ? a3 ? a3.s + (i3.s - a3.s) * (r4 - a3[n3]) / (i3[n3] - a3[n3]) : i3.s : a3.s;
            }(e3, t3, r3, o));
            t3 || (e3[0].t = e3[1].t, e3[0].trace = e3[1].trace, delete e3[1].t, delete e3[1].trace);
          }
          e2.exports = function(e3, t3) {
            "group" === e3._fullLayout.scattermode && function(e4, t4) {
              for (var r4 = t4.xaxis, n2 = t4.yaxis, i2 = e4._fullLayout, o2 = e4._fullData, l2 = e4.calcdata, s2 = [], c2 = [], u2 = 0; u2 < o2.length; u2++) {
                var f2 = o2[u2];
                true === f2.visible && "scatter" === f2.type && f2.xaxis === r4._id && f2.yaxis === n2._id && ("h" === f2.orientation ? s2.push(l2[u2]) : "v" === f2.orientation && c2.push(l2[u2]));
              }
              var d2 = { mode: i2.scattermode, gap: i2.scattergap };
              a(e4, r4, n2, c2, d2), a(e4, n2, r4, s2, d2);
            }(e3, t3);
            var r3 = t3.xaxis, o = t3.yaxis, l = r3._id + o._id, s = e3._fullLayout._scatterStackOpts[l];
            if (s) {
              var c, u, f, d, h, p, v, g, m, y, x, b, _, w, T, M = e3.calcdata;
              for (var k in s) {
                var A = (y = s[k]).traceIndices;
                if (A.length) {
                  for (x = "interpolate" === y.stackgaps, b = y.groupnorm, "v" === y.orientation ? (_ = "x", w = "y") : (_ = "y", w = "x"), T = new Array(A.length), c = 0; c < T.length; c++) T[c] = false;
                  p = M[A[0]];
                  var L = new Array(p.length);
                  for (c = 0; c < p.length; c++) L[c] = p[c][_];
                  for (c = 1; c < A.length; c++) {
                    for (h = M[A[c]], u = f = 0; u < h.length; u++) {
                      for (v = h[u][_]; v > L[f] && f < L.length; f++) i(h, u, L[f], c, T, x, _), u++;
                      if (v !== L[f]) {
                        for (d = 0; d < c; d++) i(M[A[d]], f, v, d, T, x, _);
                        L.splice(f, 0, v);
                      }
                      f++;
                    }
                    for (; f < L.length; f++) i(h, u, L[f], c, T, x, _), u++;
                  }
                  var S = L.length;
                  for (u = 0; u < p.length; u++) {
                    for (g = p[u][w] = p[u].s, c = 1; c < A.length; c++) (h = M[A[c]])[0].trace._rawLength = h[0].trace._length, h[0].trace._length = S, g += h[u].s, h[u][w] = g;
                    if (b) for (m = ("fraction" === b ? g : g / 100) || 1, c = 0; c < A.length; c++) {
                      var C = M[A[c]][u];
                      C[w] /= m, C.sNorm = C.s / m;
                    }
                  }
                  for (c = 0; c < A.length; c++) {
                    var O = (h = M[A[c]])[0].trace, D = n.calcMarkerSize(O, O._rawLength), P = Array.isArray(D);
                    if (D && T[c] || P) {
                      var z = D;
                      for (D = new Array(S), u = 0; u < S; u++) D[u] = h[u].gap ? 0 : P ? z[h[u].i] : z;
                    }
                    var I = new Array(S), E = new Array(S);
                    for (u = 0; u < S; u++) I[u] = h[u].x, E[u] = h[u].y;
                    n.calcAxisExpansion(e3, O, r3, o, I, E, D), h[0].t.orientation = y.orientation;
                  }
                }
              }
            }
          };
        }, 3044: function(e2, t2, r2) {
          var n = r2(4809), a = r2(6301), i = r2(6640);
          e2.exports = function(e3, t3) {
            var r3, o, l;
            function s(e4) {
              return n.coerce(o._input, o, i, e4);
            }
            if ("group" === t3.scattermode) for (l = 0; l < e3.length; l++) "scatter" === (o = e3[l]).type && (r3 = o._input, a(r3, o, t3, s));
            for (l = 0; l < e3.length; l++) {
              var c = e3[l];
              if ("scatter" === c.type) {
                var u = c.fill;
                if ("none" !== u && "toself" !== u && (c.opacity = void 0, "tonexty" === u || "tonextx" === u)) for (var f = l - 1; f >= 0; f--) {
                  var d = e3[f];
                  if ("scatter" === d.type && d.xaxis === c.xaxis && d.yaxis === c.yaxis) {
                    d.opacity = void 0;
                    break;
                  }
                }
              }
            }
          };
        }, 247: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3626), i = r2(6640), o = r2(2660), l = r2(4726), s = r2(9867), c = r2(9669), u = r2(382), f = r2(4272), d = r2(8168), h = r2(1602), p = r2(663), v = r2(4114), g = r2(4809).coercePattern;
          e2.exports = function(e3, t3, r3, m) {
            function y(r4, a2) {
              return n.coerce(e3, t3, i, r4, a2);
            }
            var x = s(e3, t3, m, y);
            if (x || (t3.visible = false), t3.visible) {
              c(e3, t3, m, y), y("xhoverformat"), y("yhoverformat"), y("zorder");
              var b = u(e3, t3, m, y);
              "group" === m.scattermode && void 0 === t3.orientation && y("orientation", "v");
              var _ = !b && x < o.PTS_LINESONLY ? "lines+markers" : "lines";
              y("text"), y("hovertext"), y("mode", _), l.hasMarkers(t3) && f(e3, t3, r3, m, y, { gradient: true }), l.hasLines(t3) && (d(e3, t3, r3, m, y, { backoff: true }), h(e3, t3, y), y("connectgaps"), y("line.simplify")), l.hasText(t3) && (y("texttemplate"), p(e3, t3, m, y));
              var w = [];
              (l.hasMarkers(t3) || l.hasText(t3)) && (y("cliponaxis"), y("marker.maxdisplayed"), w.push("points")), y("fill", b ? b.fillDflt : "none"), "none" !== t3.fill && (v(e3, t3, r3, y, { moduleHasFillgradient: true }), l.hasLines(t3) || h(e3, t3, y), g(y, "fillpattern", t3.fillcolor, false));
              var T = (t3.line || {}).color, M = (t3.marker || {}).color;
              "tonext" !== t3.fill && "toself" !== t3.fill || w.push("fills"), y("hoveron", w.join("+") || "points"), "fills" !== t3.hoveron && y("hovertemplate");
              var k = a.getComponentMethod("errorbars", "supplyDefaults");
              k(e3, t3, T || M || r3, { axis: "y" }), k(e3, t3, T || M || r3, { axis: "x", inherit: "y" }), n.coerceSelectionMarkerOpacity(t3, y);
            }
          };
        }, 9326: function(e2) {
          e2.exports = function(e3) {
            return { valType: "color", editType: "style", anim: true };
          };
        }, 4114: function(e2, t2, r2) {
          var n = r2(8766), a = r2(4809).isArrayOrTypedArray;
          e2.exports = function(e3, t3, r3, i, o) {
            o || (o = {});
            var l, s = false;
            if (t3.marker) {
              var c = t3.marker.color, u = (t3.marker.line || {}).color;
              c && !a(c) ? s = c : u && !a(u) && (s = u);
            }
            if (o.moduleHasFillgradient && "none" !== i("fillgradient.type")) {
              i("fillgradient.start"), i("fillgradient.stop");
              var f = i("fillgradient.colorscale");
              f && (l = function(e4) {
                for (var t4 = n.interpolate(e4[0][1], e4[1][1], 0.5), r4 = 2; r4 < e4.length; r4++) {
                  var a2 = n.interpolate(e4[r4 - 1][1], e4[r4][1], 0.5);
                  t4 = n.interpolate(t4, a2, e4[r4 - 1][0] / e4[r4][0]);
                }
                return t4;
              }(f));
            }
            i("fillcolor", n.addOpacity((t3.line || {}).color || s || l || r3, 0.5));
          };
        }, 5294: function(e2, t2, r2) {
          var n = r2(9714);
          e2.exports = function(e3, t3, r3) {
            var a = {}, i = { _fullLayout: r3 }, o = n.getFromTrace(i, t3, "x"), l = n.getFromTrace(i, t3, "y"), s = e3.orig_x;
            void 0 === s && (s = e3.x);
            var c = e3.orig_y;
            return void 0 === c && (c = e3.y), a.xLabel = n.tickText(o, o.c2l(s), true).text, a.yLabel = n.tickText(l, l.c2l(c), true).text, a;
          };
        }, 1539: function(e2, t2, r2) {
          var n = r2(8766), a = r2(4726);
          e2.exports = function(e3, t3) {
            var r3, i;
            if ("lines" === e3.mode) return (r3 = e3.line.color) && n.opacity(r3) ? r3 : e3.fillcolor;
            if ("none" === e3.mode) return e3.fill ? e3.fillcolor : "";
            var o = t3.mcc || (e3.marker || {}).color, l = t3.mlcc || ((e3.marker || {}).line || {}).color;
            return (i = o && n.opacity(o) ? o : l && n.opacity(l) && (t3.mlw || ((e3.marker || {}).line || {}).width) ? l : "") ? n.opacity(i) < 0.3 ? n.addOpacity(i, 0.3) : i : (r3 = (e3.line || {}).color) && n.opacity(r3) && a.hasLines(e3) && e3.line.width ? r3 : e3.fillcolor;
          };
        }, 6301: function(e2, t2, r2) {
          var n = r2(4391).getAxisGroup;
          e2.exports = function(e3, t3, r3, a) {
            var i = t3.orientation, o = t3[{ v: "x", h: "y" }[i] + "axis"], l = n(r3, o) + i, s = r3._alignmentOpts || {}, c = a("alignmentgroup"), u = s[l];
            u || (u = s[l] = {});
            var f = u[c];
            f ? f.traces.push(t3) : f = u[c] = { traces: [t3], alignmentIndex: Object.keys(u).length, offsetGroups: {} };
            var d = a("offsetgroup"), h = f.offsetGroups, p = h[d];
            d && (p || (p = h[d] = { offsetIndex: Object.keys(h).length }), t3._offsetIndex = p.offsetIndex);
          };
        }, 7255: function(e2, t2, r2) {
          var n = r2(4809), a = r2(2141), i = r2(3626), o = r2(1539), l = r2(8766), s = n.fillText;
          e2.exports = function(e3, t3, r3, c) {
            var u = e3.cd, f = u[0].trace, d = e3.xa, h = e3.ya, p = d.c2p(t3), v = h.c2p(r3), g = [p, v], m = f.hoveron || "", y = -1 !== f.mode.indexOf("markers") ? 3 : 0.5, x = !!f.xperiodalignment, b = !!f.yperiodalignment;
            if (-1 !== m.indexOf("points")) {
              var _ = function(e4) {
                var t4 = Math.max(y, e4.mrc || 0), r4 = d.c2p(e4.x) - p, n2 = h.c2p(e4.y) - v;
                return Math.max(Math.sqrt(r4 * r4 + n2 * n2) - t4, 1 - y / t4);
              }, w = a.getDistanceFunction(c, function(e4) {
                if (x) {
                  var t4 = d.c2p(e4.xStart), r4 = d.c2p(e4.xEnd);
                  return p >= Math.min(t4, r4) && p <= Math.max(t4, r4) ? 0 : 1 / 0;
                }
                var n2 = Math.max(3, e4.mrc || 0), a2 = 1 - 1 / n2, i2 = Math.abs(d.c2p(e4.x) - p);
                return i2 < n2 ? a2 * i2 / n2 : i2 - n2 + a2;
              }, function(e4) {
                if (b) {
                  var t4 = h.c2p(e4.yStart), r4 = h.c2p(e4.yEnd);
                  return v >= Math.min(t4, r4) && v <= Math.max(t4, r4) ? 0 : 1 / 0;
                }
                var n2 = Math.max(3, e4.mrc || 0), a2 = 1 - 1 / n2, i2 = Math.abs(h.c2p(e4.y) - v);
                return i2 < n2 ? a2 * i2 / n2 : i2 - n2 + a2;
              }, _);
              if (a.getClosest(u, w, e3), false !== e3.index) {
                var T = u[e3.index], M = d.c2p(T.x, true), k = h.c2p(T.y, true), A = T.mrc || 1;
                e3.index = T.i;
                var L = u[0].t.orientation, S = L && (T.sNorm || T.s), C = "h" === L ? S : void 0 !== T.orig_x ? T.orig_x : T.x, O = "v" === L ? S : void 0 !== T.orig_y ? T.orig_y : T.y;
                return n.extendFlat(e3, { color: o(f, T), x0: M - A, x1: M + A, xLabelVal: C, y0: k - A, y1: k + A, yLabelVal: O, spikeDistance: _(T), hovertemplate: f.hovertemplate }), s(T, f, e3), i.getComponentMethod("errorbars", "hoverInfo")(T, f, e3), [e3];
              }
            }
            function D(e4) {
              if (!e4) return false;
              var t4 = e4.node();
              try {
                var r4 = new DOMPoint(g[0], g[1]);
                return t4.isPointInFill(r4);
              } catch (e5) {
                var n2 = t4.ownerSVGElement.createSVGPoint();
                return n2.x = g[0], n2.y = g[1], t4.isPointInFill(n2);
              }
            }
            if (-1 !== m.indexOf("fills") && f._fillElement && D(f._fillElement) && !D(f._fillExclusionElement)) {
              var P = function(e4) {
                var t4, r4, n2, a2, i2, o2, l2, s2, c2, u2 = [], f2 = 1 / 0, p2 = -1 / 0, v2 = 1 / 0, m2 = -1 / 0;
                for (t4 = 0; t4 < e4.length; t4++) {
                  var y2 = e4[t4];
                  y2.contains(g) && (u2.push(y2), v2 = Math.min(v2, y2.ymin), m2 = Math.max(m2, y2.ymax));
                }
                if (0 === u2.length) return null;
                for (r4 = ((v2 = Math.max(v2, 0)) + (m2 = Math.min(m2, h._length))) / 2, t4 = 0; t4 < u2.length; t4++) for (a2 = u2[t4].pts, n2 = 1; n2 < a2.length; n2++) (s2 = a2[n2 - 1][1]) > r4 != (c2 = a2[n2][1]) >= r4 && (o2 = a2[n2 - 1][0], l2 = a2[n2][0], c2 - s2 && (i2 = o2 + (l2 - o2) * (r4 - s2) / (c2 - s2), f2 = Math.min(f2, i2), p2 = Math.max(p2, i2)));
                return { x0: f2 = Math.max(f2, 0), x1: p2 = Math.min(p2, d._length), y0: r4, y1: r4 };
              }(f._polygons);
              null === P && (P = { x0: g[0], x1: g[0], y0: g[1], y1: g[1] });
              var z = l.defaultLine;
              return l.opacity(f.fillcolor) ? z = f.fillcolor : l.opacity((f.line || {}).color) && (z = f.line.color), n.extendFlat(e3, { distance: e3.maxHoverDistance, x0: P.x0, x1: P.x1, y0: P.y0, y1: P.y1, color: z, hovertemplate: false }), delete e3.index, f.text && !n.isArrayOrTypedArray(f.text) ? e3.text = String(f.text) : e3.text = f.name, [e3];
            }
          };
        }, 9693: function(e2, t2, r2) {
          var n = r2(4726);
          e2.exports = { hasLines: n.hasLines, hasMarkers: n.hasMarkers, hasText: n.hasText, isBubble: n.isBubble, attributes: r2(6640), layoutAttributes: r2(6667), supplyDefaults: r2(247), crossTraceDefaults: r2(3044), supplyLayoutDefaults: r2(2332), calc: r2(6544).calc, crossTraceCalc: r2(5603), arraysToCalcdata: r2(9203), plot: r2(6098), colorbar: r2(1146), formatLabels: r2(5294), style: r2(9408).style, styleOnSelect: r2(9408).styleOnSelect, hoverPoints: r2(7255), selectPoints: r2(2665), animatable: true, moduleType: "trace", name: "scatter", basePlotModule: r2(84), categories: ["cartesian", "svg", "symbols", "errorBarsOK", "showLegend", "scatter-like", "zoomScale"], meta: {} };
        }, 6667: function(e2) {
          e2.exports = { scattermode: { valType: "enumerated", values: ["group", "overlay"], dflt: "overlay", editType: "calc" }, scattergap: { valType: "number", min: 0, max: 1, editType: "calc" } };
        }, 2332: function(e2, t2, r2) {
          var n = r2(4809), a = r2(6667);
          e2.exports = function(e3, t3) {
            var r3, i = "group" === t3.barmode;
            "group" === t3.scattermode && (r3 = i ? t3.bargap : 0.2, n.coerce(e3, t3, a, "scattergap", r3));
          };
        }, 8168: function(e2, t2, r2) {
          var n = r2(4809).isArrayOrTypedArray, a = r2(5477).hasColorscale, i = r2(9356);
          e2.exports = function(e3, t3, r3, o, l, s) {
            s || (s = {});
            var c = (e3.marker || {}).color;
            c && c._inputArray && (c = c._inputArray), l("line.color", r3), a(e3, "line") ? i(e3, t3, o, l, { prefix: "line.", cLetter: "c" }) : l("line.color", !n(c) && c || r3), l("line.width"), s.noDash || l("line.dash"), s.backoff && l("line.backoff");
          };
        }, 5525: function(e2, t2, r2) {
          var n = r2(2203), a = r2(3821), i = a.BADNUM, o = a.LOG_CLIP, l = o + 0.5, s = o - 0.5, c = r2(4809), u = c.segmentsIntersect, f = c.constrain, d = r2(2660);
          e2.exports = function(e3, t3) {
            var r3, a2, o2, h, p, v, g, m, y, x, b, _, w, T, M, k, A, L, S = t3.trace || {}, C = t3.xaxis, O = t3.yaxis, D = "log" === C.type, P = "log" === O.type, z = C._length, I = O._length, E = t3.backoff, R = S.marker, N = t3.connectGaps, F = t3.baseTolerance, H = t3.shape, B = "linear" === H, j = S.fill && "none" !== S.fill, Y = [], V = d.minTolerance, U = e3.length, q = new Array(U), G = 0;
            function Z(r4) {
              var n2 = e3[r4];
              if (!n2) return false;
              var a3 = t3.linearized ? C.l2p(n2.x) : C.c2p(n2.x), o3 = t3.linearized ? O.l2p(n2.y) : O.c2p(n2.y);
              if (a3 === i) {
                if (D && (a3 = C.c2p(n2.x, true)), a3 === i) return false;
                P && o3 === i && (a3 *= Math.abs(C._m * I * (C._m > 0 ? l : s) / (O._m * z * (O._m > 0 ? l : s)))), a3 *= 1e3;
              }
              if (o3 === i) {
                if (P && (o3 = O.c2p(n2.y, true)), o3 === i) return false;
                o3 *= 1e3;
              }
              return [a3, o3];
            }
            function W(e4, t4, r4, n2) {
              var a3 = r4 - e4, i2 = n2 - t4, o3 = 0.5 - e4, l2 = 0.5 - t4, s2 = a3 * a3 + i2 * i2, c2 = a3 * o3 + i2 * l2;
              if (c2 > 0 && c2 < s2) {
                var u2 = o3 * i2 - l2 * a3;
                if (u2 * u2 < s2) return true;
              }
            }
            function J(e4, t4) {
              var r4 = e4[0] / z, n2 = e4[1] / I, a3 = Math.max(0, -r4, r4 - 1, -n2, n2 - 1);
              return a3 && void 0 !== A && W(r4, n2, A, L) && (a3 = 0), a3 && t4 && W(r4, n2, t4[0] / z, t4[1] / I) && (a3 = 0), (1 + d.toleranceGrowth * a3) * F;
            }
            function X(e4, t4) {
              var r4 = e4[0] - t4[0], n2 = e4[1] - t4[1];
              return Math.sqrt(r4 * r4 + n2 * n2);
            }
            var K, Q, $, ee, te, re, ne, ae = d.maxScreensAway, ie = -z * ae, oe = z * (1 + ae), le = -I * ae, se = I * (1 + ae), ce = [[ie, le, oe, le], [oe, le, oe, se], [oe, se, ie, se], [ie, se, ie, le]];
            function ue(e4) {
              if (e4[0] < ie || e4[0] > oe || e4[1] < le || e4[1] > se) return [f(e4[0], ie, oe), f(e4[1], le, se)];
            }
            function fe(e4, t4) {
              return e4[0] === t4[0] && (e4[0] === ie || e4[0] === oe) || e4[1] === t4[1] && (e4[1] === le || e4[1] === se) || void 0;
            }
            function de(e4, t4, r4) {
              return function(n2, a3) {
                var i2 = ue(n2), o3 = ue(a3), l2 = [];
                if (i2 && o3 && fe(i2, o3)) return l2;
                i2 && l2.push(i2), o3 && l2.push(o3);
                var s2 = 2 * c.constrain((n2[e4] + a3[e4]) / 2, t4, r4) - ((i2 || n2)[e4] + (o3 || a3)[e4]);
                return s2 && ((i2 && o3 ? s2 > 0 == i2[e4] > o3[e4] ? i2 : o3 : i2 || o3)[e4] += s2), l2;
              };
            }
            function he(e4) {
              var t4 = e4[0], r4 = e4[1], n2 = t4 === q[G - 1][0], a3 = r4 === q[G - 1][1];
              if (!n2 || !a3) if (G > 1) {
                var i2 = t4 === q[G - 2][0], o3 = r4 === q[G - 2][1];
                n2 && (t4 === ie || t4 === oe) && i2 ? o3 ? G-- : q[G - 1] = e4 : a3 && (r4 === le || r4 === se) && o3 ? i2 ? G-- : q[G - 1] = e4 : q[G++] = e4;
              } else q[G++] = e4;
            }
            function pe(e4) {
              q[G - 1][0] !== e4[0] && q[G - 1][1] !== e4[1] && he([$, ee]), he(e4), te = null, $ = ee = 0;
            }
            "linear" === H || "spline" === H ? ne = function(e4, t4) {
              for (var r4 = [], n2 = 0, a3 = 0; a3 < 4; a3++) {
                var i2 = ce[a3], o3 = u(e4[0], e4[1], t4[0], t4[1], i2[0], i2[1], i2[2], i2[3]);
                o3 && (!n2 || Math.abs(o3.x - r4[0][0]) > 1 || Math.abs(o3.y - r4[0][1]) > 1) && (o3 = [o3.x, o3.y], n2 && X(o3, e4) < X(r4[0], e4) ? r4.unshift(o3) : r4.push(o3), n2++);
              }
              return r4;
            } : "hv" === H || "vh" === H ? ne = function(e4, t4) {
              var r4 = [], n2 = ue(e4), a3 = ue(t4);
              return n2 && a3 && fe(n2, a3) || (n2 && r4.push(n2), a3 && r4.push(a3)), r4;
            } : "hvh" === H ? ne = de(0, ie, oe) : "vhv" === H && (ne = de(1, le, se));
            var ve = c.isArrayOrTypedArray(R);
            function ge(t4) {
              if (t4 && E && (t4.i = r3, t4.d = e3, t4.trace = S, t4.marker = ve ? R[t4.i] : R, t4.backoff = E), A = t4[0] / z, L = t4[1] / I, K = t4[0] < ie ? ie : t4[0] > oe ? oe : 0, Q = t4[1] < le ? le : t4[1] > se ? se : 0, K || Q) {
                if (G) if (te) {
                  var n2 = ne(te, t4);
                  n2.length > 1 && (pe(n2[0]), q[G++] = n2[1]);
                } else re = ne(q[G - 1], t4)[0], q[G++] = re;
                else q[G++] = [K || t4[0], Q || t4[1]];
                var a3 = q[G - 1];
                K && Q && (a3[0] !== K || a3[1] !== Q) ? (te && ($ !== K && ee !== Q ? he($ && ee ? (i2 = te, l2 = (o3 = t4)[0] - i2[0], s2 = (o3[1] - i2[1]) / l2, (i2[1] * o3[0] - o3[1] * i2[0]) / l2 > 0 ? [s2 > 0 ? ie : oe, se] : [s2 > 0 ? oe : ie, le]) : [$ || K, ee || Q]) : $ && ee && he([$, ee])), he([K, Q])) : $ - K && ee - Q && he([K || $, Q || ee]), te = t4, $ = K, ee = Q;
              } else te && pe(ne(te, t4)[0]), q[G++] = t4;
              var i2, o3, l2, s2;
            }
            for (r3 = 0; r3 < U; r3++) if (a2 = Z(r3)) {
              for (G = 0, te = null, ge(a2), r3++; r3 < U; r3++) {
                if (!(h = Z(r3))) {
                  if (N) continue;
                  break;
                }
                if (B && t3.simplify) {
                  var me = Z(r3 + 1);
                  if (x = X(h, a2), j && (0 === G || G === U - 1) || !(x < J(h, me) * V)) {
                    for (m = [(h[0] - a2[0]) / x, (h[1] - a2[1]) / x], p = a2, b = x, _ = T = M = 0, g = false, o2 = h, r3++; r3 < e3.length; r3++) {
                      if (v = me, me = Z(r3 + 1), !v) {
                        if (N) continue;
                        break;
                      }
                      if (k = (y = [v[0] - a2[0], v[1] - a2[1]])[0] * m[1] - y[1] * m[0], T = Math.min(T, k), (M = Math.max(M, k)) - T > J(v, me)) break;
                      o2 = v, (w = y[0] * m[0] + y[1] * m[1]) > b ? (b = w, h = v, g = false) : w < _ && (_ = w, p = v, g = true);
                    }
                    if (g ? (ge(h), o2 !== p && ge(p)) : (p !== a2 && ge(p), o2 !== h && ge(h)), ge(o2), r3 >= e3.length || !v) break;
                    ge(v), a2 = v;
                  }
                } else ge(h);
              }
              te && he([$ || te[0], ee || te[1]]), Y.push(q.slice(0, G));
            }
            var ye = H.slice(H.length - 1);
            if (E && "h" !== ye && "v" !== ye) {
              for (var xe = false, be = -1, _e = [], we = 0; we < Y.length; we++) for (var Te = 0; Te < Y[we].length - 1; Te++) {
                var Me = Y[we][Te], ke = Y[we][Te + 1], Ae = n.applyBackoff(ke, Me);
                Ae[0] === ke[0] && Ae[1] === ke[1] || (xe = true), _e[be + 1] || (_e[++be] = [Me, [Ae[0], Ae[1]]]);
              }
              return xe ? _e : Y;
            }
            return Y;
          };
        }, 1602: function(e2) {
          e2.exports = function(e3, t2, r2) {
            "spline" === r2("line.shape") && r2("line.smoothing");
          };
        }, 7210: function(e2) {
          var t2 = { tonextx: 1, tonexty: 1, tonext: 1 };
          e2.exports = function(e3, r2, n) {
            var a, i, o, l, s, c = {}, u = false, f = -1, d = 0, h = -1;
            for (i = 0; i < n.length; i++) (o = (a = n[i][0].trace).stackgroup || "") ? o in c ? s = c[o] : (s = c[o] = d, d++) : a.fill in t2 && h >= 0 ? s = h : (s = h = d, d++), s < f && (u = true), a._groupIndex = f = s;
            var p = n.slice();
            u && p.sort(function(e4, t3) {
              var r3 = e4[0].trace, n2 = t3[0].trace;
              return r3._groupIndex - n2._groupIndex || r3.index - n2.index;
            });
            var v = {};
            for (i = 0; i < p.length; i++) o = (a = p[i][0].trace).stackgroup || "", true === a.visible ? (a._nexttrace = null, a.fill in t2 && (l = v[o], a._prevtrace = l || null, l && (l._nexttrace = a)), a._ownfill = a.fill && ("tozero" === a.fill.substr(0, 6) || "toself" === a.fill || "to" === a.fill.substr(0, 2) && !a._prevtrace), v[o] = a) : a._prevtrace = a._nexttrace = a._ownfill = null;
            return p;
          };
        }, 2527: function(e2, t2, r2) {
          var n = r2(721);
          e2.exports = function(e3, t3) {
            t3 || (t3 = 2);
            var r3 = e3.marker, a = r3.sizeref || 1, i = r3.sizemin || 0, o = "area" === r3.sizemode ? function(e4) {
              return Math.sqrt(e4 / a);
            } : function(e4) {
              return e4 / a;
            };
            return function(e4) {
              var r4 = o(e4 / t3);
              return n(r4) && r4 > 0 ? Math.max(r4, i) : 0;
            };
          };
        }, 1146: function(e2) {
          e2.exports = { container: "marker", min: "cmin", max: "cmax" };
        }, 4272: function(e2, t2, r2) {
          var n = r2(8766), a = r2(5477).hasColorscale, i = r2(9356), o = r2(4726);
          e2.exports = function(e3, t3, r3, l, s, c) {
            var u = o.isBubble(e3), f = (e3.line || {}).color;
            c = c || {}, f && (r3 = f), s("marker.symbol"), s("marker.opacity", u ? 0.7 : 1), s("marker.size"), c.noAngle || (s("marker.angle"), c.noAngleRef || s("marker.angleref"), c.noStandOff || s("marker.standoff")), s("marker.color", r3), a(e3, "marker") && i(e3, t3, l, s, { prefix: "marker.", cLetter: "c" }), c.noSelect || (s("selected.marker.color"), s("unselected.marker.color"), s("selected.marker.size"), s("unselected.marker.size")), c.noLine || (s("marker.line.color", f && !Array.isArray(f) && t3.marker.color !== f ? f : u ? n.background : n.defaultLine), a(e3, "marker.line") && i(e3, t3, l, s, { prefix: "marker.line.", cLetter: "c" }), s("marker.line.width", u ? 1 : 0)), u && (s("marker.sizeref"), s("marker.sizemin"), s("marker.sizemode")), c.gradient && "none" !== s("marker.gradient.type") && s("marker.gradient.color");
          };
        }, 9669: function(e2, t2, r2) {
          var n = r2(4809).dateTick0, a = r2(3821).ONEWEEK;
          function i(e3, t3) {
            return n(t3, e3 % a == 0 ? 1 : 0);
          }
          e2.exports = function(e3, t3, r3, n2, a2) {
            if (a2 || (a2 = { x: true, y: true }), a2.x) {
              var o = n2("xperiod");
              o && (n2("xperiod0", i(o, t3.xcalendar)), n2("xperiodalignment"));
            }
            if (a2.y) {
              var l = n2("yperiod");
              l && (n2("yperiod0", i(l, t3.ycalendar)), n2("yperiodalignment"));
            }
          };
        }, 6098: function(e2, t2, r2) {
          var n = r2(5568), a = r2(3626), i = r2(4809), o = i.ensureSingle, l = i.identity, s = r2(2203), c = r2(4726), u = r2(5525), f = r2(7210), d = r2(899).tester;
          function h(e3, t3, r3, f2, h2, p, v) {
            var g, m = e3._context.staticPlot;
            !function(e4, t4, r4, a2, o2) {
              var l2 = r4.xaxis, s2 = r4.yaxis, u2 = n.extent(i.simpleMap(l2.range, l2.r2c)), f3 = n.extent(i.simpleMap(s2.range, s2.r2c)), d2 = a2[0].trace;
              if (c.hasMarkers(d2)) {
                var h3 = d2.marker.maxdisplayed;
                if (0 !== h3) {
                  var p2 = a2.filter(function(e5) {
                    return e5.x >= u2[0] && e5.x <= u2[1] && e5.y >= f3[0] && e5.y <= f3[1];
                  }), v2 = Math.ceil(p2.length / h3), g2 = 0;
                  o2.forEach(function(e5, r5) {
                    var n2 = e5[0].trace;
                    c.hasMarkers(n2) && n2.marker.maxdisplayed > 0 && r5 < t4 && g2++;
                  });
                  var m2 = Math.round(g2 * v2 / 3 + Math.floor(g2 / 3) * v2 / 7.1);
                  a2.forEach(function(e5) {
                    delete e5.vis;
                  }), p2.forEach(function(e5, t5) {
                    0 === Math.round((t5 + m2) % v2) && (e5.vis = true);
                  });
                }
              }
            }(0, t3, r3, f2, h2);
            var y = !!v && v.duration > 0;
            function x(e4) {
              return y ? e4.transition() : e4;
            }
            var b = r3.xaxis, _ = r3.yaxis, w = f2[0].trace, T = w.line, M = n.select(p), k = o(M, "g", "errorbars"), A = o(M, "g", "lines"), L = o(M, "g", "points"), S = o(M, "g", "text");
            if (a.getComponentMethod("errorbars", "plot")(e3, k, r3, v), true === w.visible) {
              var C, O;
              x(M).style("opacity", w.opacity);
              var D, P, z = w.fill.charAt(w.fill.length - 1);
              "x" !== z && "y" !== z && (z = ""), "y" === z ? (D = 1, P = _.c2p(0, true)) : "x" === z && (D = 0, P = b.c2p(0, true)), f2[0][r3.isRangePlot ? "nodeRangePlot3" : "node3"] = M;
              var I, E, R = "", N = [], F = w._prevtrace, H = null, B = null;
              F && (R = F._prevRevpath || "", O = F._nextFill, N = F._ownPolygons, H = F._fillsegments, B = F._fillElement);
              var j, Y, V, U, q, G, Z = "", W = "", J = [];
              w._polygons = [];
              var X = [], K = [], Q = i.noop;
              if (C = w._ownFill, c.hasLines(w) || "none" !== w.fill) {
                O && O.datum(f2), -1 !== ["hv", "vh", "hvh", "vhv"].indexOf(T.shape) ? (j = s.steps(T.shape), Y = s.steps(T.shape.split("").reverse().join(""))) : j = Y = "spline" === T.shape ? function(e4) {
                  var t4 = e4[e4.length - 1];
                  return e4.length > 1 && e4[0][0] === t4[0] && e4[0][1] === t4[1] ? s.smoothclosed(e4.slice(1), T.smoothing) : s.smoothopen(e4, T.smoothing);
                } : function(e4) {
                  return "M" + e4.join("L");
                }, V = function(e4) {
                  return Y(e4.reverse());
                }, K = u(f2, { xaxis: b, yaxis: _, trace: w, connectGaps: w.connectgaps, baseTolerance: Math.max(T.width || 1, 3) / 4, shape: T.shape, backoff: T.backoff, simplify: T.simplify, fill: w.fill }), X = new Array(K.length);
                var $ = 0;
                for (g = 0; g < K.length; g++) {
                  var ee, te = K[g];
                  ee && z ? ee.push.apply(ee, te) : (ee = te.slice(), X[$] = ee, $++);
                }
                w._fillElement = null, w._fillExclusionElement = B, w._fillsegments = X.slice(0, $), X = w._fillsegments, K.length && (U = K[0][0].slice(), G = (q = K[K.length - 1])[q.length - 1].slice()), Q = function(e4) {
                  return function(t4) {
                    if (I = j(t4), E = V(t4), Z ? z ? (Z += "L" + I.substr(1), W = E + "L" + W.substr(1)) : (Z += "Z" + I, W = E + "Z" + W) : (Z = I, W = E), c.hasLines(w)) {
                      var r4 = n.select(this);
                      if (r4.datum(f2), e4) x(r4.style("opacity", 0).attr("d", I).call(s.lineGroupStyle)).style("opacity", 1);
                      else {
                        var a2 = x(r4);
                        a2.attr("d", I), s.singleLineStyle(f2, a2);
                      }
                    }
                  };
                };
              }
              var re = A.selectAll(".js-line").data(K);
              x(re.exit()).style("opacity", 0).remove(), re.each(Q(false)), re.enter().append("path").classed("js-line", true).style("vector-effect", m ? "none" : "non-scaling-stroke").call(s.lineGroupStyle).each(Q(true)), s.setClipUrl(re, r3.layerClipId, e3);
              var ne = function() {
                var e4 = new Array(X.length);
                for (g = 0; g < X.length; g++) e4[g] = d(X[g]);
                return e4;
              }, ae = function(e4) {
                var t4, r4;
                if (e4 && 0 !== e4.length) {
                  for (t4 = new Array(e4.length - 1 + X.length), r4 = 0; r4 < e4.length - 1; r4++) t4[r4] = d(e4[r4]);
                  var n2 = e4[e4.length - 1].slice();
                  for (n2.reverse(), r4 = 0; r4 < X.length; r4++) t4[e4.length - 1 + r4] = d(X[r4].concat(n2));
                } else for (t4 = new Array(X.length), r4 = 0; r4 < X.length; r4++) {
                  var a2 = X[r4][0].slice(), i2 = X[r4][X[r4].length - 1].slice();
                  a2[D] = i2[D] = P;
                  var o2 = [i2, a2].concat(X[r4]);
                  t4[r4] = d(o2);
                }
                return t4;
              };
              K.length ? (C ? (C.datum(f2), U && G && (z ? (U[D] = G[D] = P, x(C).attr("d", "M" + G + "L" + U + "L" + Z.substr(1)).call(s.singleFillStyle, e3), J = ae(null)) : (x(C).attr("d", Z + "Z").call(s.singleFillStyle, e3), J = ne())), w._polygons = J, w._fillElement = C) : O && ("tonext" === w.fill.substr(0, 6) && Z && R ? ("tonext" === w.fill ? (x(O).attr("d", Z + "Z" + R + "Z").call(s.singleFillStyle, e3), J = ne(), w._polygons = J.concat(N)) : (x(O).attr("d", Z + "L" + R.substr(1) + "Z").call(s.singleFillStyle, e3), J = ae(H), w._polygons = J), w._fillElement = O) : oe(O)), w._prevRevpath = W) : (C ? oe(C) : O && oe(O), w._prevRevpath = null), w._ownPolygons = J, L.datum(f2), S.datum(f2), function(t4, a2, i2) {
                var o2, u2 = i2[0].trace, f3 = c.hasMarkers(u2), d2 = c.hasText(u2), h3 = fe(u2), p2 = de, v2 = de;
                if (f3 || d2) {
                  var g2 = l, m2 = u2.stackgroup, w2 = m2 && "infer zero" === e3._fullLayout._scatterStackOpts[b._id + _._id][m2].stackgaps;
                  u2.marker.maxdisplayed || u2._needsCull ? g2 = w2 ? se : le : m2 && !w2 && (g2 = ce), f3 && (p2 = g2), d2 && (v2 = g2);
                }
                var T2, M2 = (o2 = t4.selectAll("path.point").data(p2, h3)).enter().append("path").classed("point", true);
                y && M2.call(s.pointStyle, u2, e3).call(s.translatePoints, b, _).style("opacity", 0).transition().style("opacity", 1), o2.order(), f3 && (T2 = s.makePointStyleFns(u2)), o2.each(function(t5) {
                  var a3 = n.select(this), i3 = x(a3);
                  s.translatePoint(t5, i3, b, _) ? (s.singlePointStyle(t5, i3, u2, T2, e3), r3.layerClipId && s.hideOutsideRangePoint(t5, i3, b, _, u2.xcalendar, u2.ycalendar), u2.customdata && a3.classed("plotly-customdata", null !== t5.data && void 0 !== t5.data)) : i3.remove();
                }), y ? o2.exit().transition().style("opacity", 0).remove() : o2.exit().remove(), (o2 = a2.selectAll("g").data(v2, h3)).enter().append("g").classed("textpoint", true).append("text"), o2.order(), o2.each(function(e4) {
                  var t5 = n.select(this), a3 = x(t5.select("text"));
                  s.translatePoint(e4, a3, b, _) ? r3.layerClipId && s.hideOutsideRangePoint(e4, t5, b, _, u2.xcalendar, u2.ycalendar) : t5.remove();
                }), o2.selectAll("text").call(s.textPointStyle, u2, e3).each(function(e4) {
                  var t5 = b.c2p(e4.x), r4 = _.c2p(e4.y);
                  n.select(this).selectAll("tspan.line").each(function() {
                    x(n.select(this)).attr({ x: t5, y: r4 });
                  });
                }), o2.exit().remove();
              }(L, S, f2);
              var ie = false === w.cliponaxis ? null : r3.layerClipId;
              s.setClipUrl(L, ie, e3), s.setClipUrl(S, ie, e3);
            }
            function oe(e4) {
              x(e4).attr("d", "M0,0Z");
            }
            function le(e4) {
              return e4.filter(function(e5) {
                return !e5.gap && e5.vis;
              });
            }
            function se(e4) {
              return e4.filter(function(e5) {
                return e5.vis;
              });
            }
            function ce(e4) {
              return e4.filter(function(e5) {
                return !e5.gap;
              });
            }
            function ue(e4) {
              return e4.id;
            }
            function fe(e4) {
              if (e4.ids) return ue;
            }
            function de() {
              return false;
            }
          }
          e2.exports = function(e3, t3, r3, a2, i2, c2) {
            var u2, d2, p = !i2, v = !!i2 && i2.duration > 0, g = f(e3, t3, r3);
            (u2 = a2.selectAll("g.trace").data(g, function(e4) {
              return e4[0].trace.uid;
            })).enter().append("g").attr("class", function(e4) {
              return "trace scatter trace" + e4[0].trace.uid;
            }).style("stroke-miterlimit", 2), u2.order(), function(e4, t4, r4) {
              t4.each(function(t5) {
                var a3 = o(n.select(this), "g", "fills");
                s.setClipUrl(a3, r4.layerClipId, e4);
                var i3 = t5[0].trace, c3 = [];
                i3._ownfill && c3.push("_ownFill"), i3._nexttrace && c3.push("_nextFill");
                var u3 = a3.selectAll("g").data(c3, l);
                u3.enter().append("g"), u3.exit().each(function(e5) {
                  i3[e5] = null;
                }).remove(), u3.order().each(function(e5) {
                  i3[e5] = o(n.select(this), "path", "js-fill");
                });
              });
            }(e3, u2, t3), v ? (c2 && (d2 = c2()), n.transition().duration(i2.duration).ease(i2.easing).each("end", function() {
              d2 && d2();
            }).each("interrupt", function() {
              d2 && d2();
            }).each(function() {
              a2.selectAll("g.trace").each(function(r4, n2) {
                h(e3, n2, t3, r4, g, this, i2);
              });
            })) : u2.each(function(r4, n2) {
              h(e3, n2, t3, r4, g, this, i2);
            }), p && u2.exit().remove(), a2.selectAll("path:not([d])").remove();
          };
        }, 2665: function(e2, t2, r2) {
          var n = r2(4726);
          e2.exports = function(e3, t3) {
            var r3, a, i, o, l = e3.cd, s = e3.xaxis, c = e3.yaxis, u = [], f = l[0].trace;
            if (!n.hasMarkers(f) && !n.hasText(f)) return [];
            if (false === t3) for (r3 = 0; r3 < l.length; r3++) l[r3].selected = 0;
            else for (r3 = 0; r3 < l.length; r3++) a = l[r3], i = s.c2p(a.x), o = c.c2p(a.y), null !== a.i && t3.contains([i, o], false, r3, e3) ? (u.push({ pointNumber: a.i, x: s.c2d(a.x), y: c.c2d(a.y) }), a.selected = 1) : a.selected = 0;
            return u;
          };
        }, 382: function(e2) {
          var t2 = ["orientation", "groupnorm", "stackgaps"];
          e2.exports = function(e3, r2, n, a) {
            var i = n._scatterStackOpts, o = a("stackgroup");
            if (o) {
              var l = r2.xaxis + r2.yaxis, s = i[l];
              s || (s = i[l] = {});
              var c = s[o], u = false;
              c ? c.traces.push(r2) : (c = s[o] = { traceIndices: [], traces: [r2] }, u = true);
              for (var f = { orientation: r2.x && !r2.y ? "h" : "v" }, d = 0; d < t2.length; d++) {
                var h = t2[d], p = h + "Found";
                if (!c[p]) {
                  var v = void 0 !== e3[h], g = "orientation" === h;
                  if ((v || u) && (c[h] = a(h, f[h]), g && (c.fillDflt = "h" === c[h] ? "tonextx" : "tonexty"), v && (c[p] = true, !u && (delete c.traces[0][h], g)))) for (var m = 0; m < c.traces.length - 1; m++) {
                    var y = c.traces[m];
                    y._input.fill !== y.fill && (y.fill = c.fillDflt);
                  }
                }
              }
              return c;
            }
          };
        }, 9408: function(e2, t2, r2) {
          var n = r2(5568), a = r2(2203), i = r2(3626);
          function o(e3, t3, r3) {
            a.pointStyle(e3.selectAll("path.point"), t3, r3);
          }
          function l(e3, t3, r3) {
            a.textPointStyle(e3.selectAll("text"), t3, r3);
          }
          e2.exports = { style: function(e3) {
            var t3 = n.select(e3).selectAll("g.trace.scatter");
            t3.style("opacity", function(e4) {
              return e4[0].trace.opacity;
            }), t3.selectAll("g.points").each(function(t4) {
              o(n.select(this), t4.trace || t4[0].trace, e3);
            }), t3.selectAll("g.text").each(function(t4) {
              l(n.select(this), t4.trace || t4[0].trace, e3);
            }), t3.selectAll("g.trace path.js-line").call(a.lineGroupStyle), t3.selectAll("g.trace path.js-fill").call(a.fillGroupStyle, e3, false), i.getComponentMethod("errorbars", "style")(t3);
          }, stylePoints: o, styleText: l, styleOnSelect: function(e3, t3, r3) {
            var n2 = t3[0].trace;
            n2.selectedpoints ? (a.selectedPointStyle(r3.selectAll("path.point"), n2), a.selectedTextStyle(r3.selectAll("text"), n2)) : (o(r3, n2, e3), l(r3, n2, e3));
          } };
        }, 4726: function(e2, t2, r2) {
          var n = r2(4809), a = r2(7800).isTypedArraySpec;
          e2.exports = { hasLines: function(e3) {
            return e3.visible && e3.mode && -1 !== e3.mode.indexOf("lines");
          }, hasMarkers: function(e3) {
            return e3.visible && (e3.mode && -1 !== e3.mode.indexOf("markers") || "splom" === e3.type);
          }, hasText: function(e3) {
            return e3.visible && e3.mode && -1 !== e3.mode.indexOf("text");
          }, isBubble: function(e3) {
            var t3 = e3.marker;
            return n.isPlainObject(t3) && (n.isArrayOrTypedArray(t3.size) || a(t3.size));
          } };
        }, 663: function(e2, t2, r2) {
          var n = r2(4809);
          e2.exports = function(e3, t3, r3, a, i) {
            i = i || {}, a("textposition"), n.coerceFont(a, "textfont", i.font || r3.font, i), i.noSelect || (a("selected.textfont.color"), a("unselected.textfont.color"));
          };
        }, 9867: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3626);
          e2.exports = function(e3, t3, r3, i) {
            var o, l = i("x"), s = i("y");
            if (a.getComponentMethod("calendars", "handleTraceDefaults")(e3, t3, ["x", "y"], r3), l) {
              var c = n.minRowLength(l);
              s ? o = Math.min(c, n.minRowLength(s)) : (o = c, i("y0"), i("dy"));
            } else {
              if (!s) return 0;
              o = n.minRowLength(s), i("x0"), i("dx");
            }
            return t3._length = o, o;
          };
        }, 7908: function(e2, t2, r2) {
          var n = r2(9714), a = r2(4809), i = r2(7297), o = r2(5086).z, l = r2(3821).BADNUM;
          t2.moduleType = "transform", t2.name = "aggregate";
          var s = t2.attributes = { enabled: { valType: "boolean", dflt: true, editType: "calc" }, groups: { valType: "string", strict: true, noBlank: true, arrayOk: true, dflt: "x", editType: "calc" }, aggregations: { _isLinkedToArray: "aggregation", target: { valType: "string", editType: "calc" }, func: { valType: "enumerated", values: ["count", "sum", "avg", "median", "mode", "rms", "stddev", "min", "max", "first", "last", "change", "range"], dflt: "first", editType: "calc" }, funcmode: { valType: "enumerated", values: ["sample", "population"], dflt: "sample", editType: "calc" }, enabled: { valType: "boolean", dflt: true, editType: "calc" }, editType: "calc" }, editType: "calc" }, c = s.aggregations;
          function u(e3, t3, r3, i2) {
            if (i2.enabled) {
              for (var o2 = i2.target, s2 = a.nestedProperty(t3, o2), c2 = s2.get(), u2 = function(e4, t4) {
                var r4 = e4.func, n2 = t4.d2c, i3 = t4.c2d;
                switch (r4) {
                  case "count":
                    return f;
                  case "first":
                    return d;
                  case "last":
                    return h;
                  case "sum":
                    return function(e5, t5) {
                      for (var r5 = 0, a2 = 0; a2 < t5.length; a2++) {
                        var o3 = n2(e5[t5[a2]]);
                        o3 !== l && (r5 += o3);
                      }
                      return i3(r5);
                    };
                  case "avg":
                    return function(e5, t5) {
                      for (var r5 = 0, a2 = 0, o3 = 0; o3 < t5.length; o3++) {
                        var s3 = n2(e5[t5[o3]]);
                        s3 !== l && (r5 += s3, a2++);
                      }
                      return a2 ? i3(r5 / a2) : l;
                    };
                  case "min":
                    return function(e5, t5) {
                      for (var r5 = 1 / 0, a2 = 0; a2 < t5.length; a2++) {
                        var o3 = n2(e5[t5[a2]]);
                        o3 !== l && (r5 = Math.min(r5, o3));
                      }
                      return r5 === 1 / 0 ? l : i3(r5);
                    };
                  case "max":
                    return function(e5, t5) {
                      for (var r5 = -1 / 0, a2 = 0; a2 < t5.length; a2++) {
                        var o3 = n2(e5[t5[a2]]);
                        o3 !== l && (r5 = Math.max(r5, o3));
                      }
                      return r5 === -1 / 0 ? l : i3(r5);
                    };
                  case "range":
                    return function(e5, t5) {
                      for (var r5 = 1 / 0, a2 = -1 / 0, o3 = 0; o3 < t5.length; o3++) {
                        var s3 = n2(e5[t5[o3]]);
                        s3 !== l && (r5 = Math.min(r5, s3), a2 = Math.max(a2, s3));
                      }
                      return a2 === -1 / 0 || r5 === 1 / 0 ? l : i3(a2 - r5);
                    };
                  case "change":
                    return function(e5, t5) {
                      var r5 = n2(e5[t5[0]]), a2 = n2(e5[t5[t5.length - 1]]);
                      return r5 === l || a2 === l ? l : i3(a2 - r5);
                    };
                  case "median":
                    return function(e5, t5) {
                      for (var r5 = [], o3 = 0; o3 < t5.length; o3++) {
                        var s3 = n2(e5[t5[o3]]);
                        s3 !== l && r5.push(s3);
                      }
                      if (!r5.length) return l;
                      r5.sort(a.sorterAsc);
                      var c3 = (r5.length - 1) / 2;
                      return i3((r5[Math.floor(c3)] + r5[Math.ceil(c3)]) / 2);
                    };
                  case "mode":
                    return function(e5, t5) {
                      for (var r5 = {}, a2 = 0, o3 = l, s3 = 0; s3 < t5.length; s3++) {
                        var c3 = n2(e5[t5[s3]]);
                        if (c3 !== l) {
                          var u3 = r5[c3] = (r5[c3] || 0) + 1;
                          u3 > a2 && (a2 = u3, o3 = c3);
                        }
                      }
                      return a2 ? i3(o3) : l;
                    };
                  case "rms":
                    return function(e5, t5) {
                      for (var r5 = 0, a2 = 0, o3 = 0; o3 < t5.length; o3++) {
                        var s3 = n2(e5[t5[o3]]);
                        s3 !== l && (r5 += s3 * s3, a2++);
                      }
                      return a2 ? i3(Math.sqrt(r5 / a2)) : l;
                    };
                  case "stddev":
                    return function(t5, r5) {
                      var a2, i4 = 0, o3 = 0, s3 = 1, c3 = l;
                      for (a2 = 0; a2 < r5.length && c3 === l; a2++) c3 = n2(t5[r5[a2]]);
                      if (c3 === l) return l;
                      for (; a2 < r5.length; a2++) {
                        var u3 = n2(t5[r5[a2]]);
                        if (u3 !== l) {
                          var f2 = u3 - c3;
                          i4 += f2, o3 += f2 * f2, s3++;
                        }
                      }
                      var d2 = "sample" === e4.funcmode ? s3 - 1 : s3;
                      return d2 ? Math.sqrt((o3 - i4 * i4 / s3) / d2) : 0;
                    };
                }
              }(i2, n.getDataConversions(e3, t3, o2, c2)), p = new Array(r3.length), v = 0; v < r3.length; v++) p[v] = u2(c2, r3[v]);
              s2.set(p), "count" === i2.func && a.pushUnique(t3._arrayAttrs, o2);
            }
          }
          function f(e3, t3) {
            return t3.length;
          }
          function d(e3, t3) {
            return e3[t3[0]];
          }
          function h(e3, t3) {
            return e3[t3[t3.length - 1]];
          }
          t2.supplyDefaults = function(e3, t3) {
            var r3, n2 = {};
            function o2(t4, r4) {
              return a.coerce(e3, n2, s, t4, r4);
            }
            if (!o2("enabled")) return n2;
            var l2 = i.findArrayAttributes(t3), u2 = {};
            for (r3 = 0; r3 < l2.length; r3++) u2[l2[r3]] = 1;
            var f2 = o2("groups");
            if (!Array.isArray(f2)) {
              if (!u2[f2]) return n2.enabled = false, n2;
              u2[f2] = 0;
            }
            var d2, h2 = e3.aggregations || [], p = n2.aggregations = new Array(h2.length);
            function v(e4, t4) {
              return a.coerce(h2[r3], d2, c, e4, t4);
            }
            for (r3 = 0; r3 < h2.length; r3++) {
              d2 = { _index: r3 };
              var g = v("target"), m = v("func");
              v("enabled") && g && (u2[g] || "count" === m && void 0 === u2[g]) ? ("stddev" === m && v("funcmode"), u2[g] = 0, p[r3] = d2) : p[r3] = { enabled: false, _index: r3 };
            }
            for (r3 = 0; r3 < l2.length; r3++) u2[l2[r3]] && p.push({ target: l2[r3], func: c.func.dflt, enabled: true, _index: -1 });
            return n2;
          }, t2.calcTransform = function(e3, t3, r3) {
            if (r3.enabled) {
              var n2 = r3.groups, i2 = a.getTargetArray(t3, { target: n2 });
              if (i2) {
                var l2, s2, c2, f2, d2 = {}, h2 = {}, p = [], v = o(t3.transforms, r3), g = i2.length;
                for (t3._length && (g = Math.min(g, t3._length)), l2 = 0; l2 < g; l2++) void 0 === (c2 = d2[s2 = i2[l2]]) ? (d2[s2] = p.length, f2 = [l2], p.push(f2), h2[d2[s2]] = v(l2)) : (p[c2].push(l2), h2[d2[s2]] = (h2[d2[s2]] || []).concat(v(l2)));
                r3._indexToPoints = h2;
                var m = r3.aggregations;
                for (l2 = 0; l2 < m.length; l2++) u(e3, t3, p, m[l2]);
                "string" == typeof n2 && u(e3, t3, p, { target: n2, func: "first", enabled: true }), t3._length = p.length;
              }
            }
          };
        }, 2849: function(e2, t2, r2) {
          var n = r2(4809), a = r2(3626), i = r2(9714), o = r2(5086).z, l = r2(726), s = l.COMPARISON_OPS, c = l.INTERVAL_OPS, u = l.SET_OPS;
          t2.moduleType = "transform", t2.name = "filter", t2.attributes = { enabled: { valType: "boolean", dflt: true, editType: "calc" }, target: { valType: "string", strict: true, noBlank: true, arrayOk: true, dflt: "x", editType: "calc" }, operation: { valType: "enumerated", values: [].concat(s).concat(c).concat(u), dflt: "=", editType: "calc" }, value: { valType: "any", dflt: 0, editType: "calc" }, preservegaps: { valType: "boolean", dflt: false, editType: "calc" }, editType: "calc" }, t2.supplyDefaults = function(e3) {
            var r3 = {};
            function i2(a2, i3) {
              return n.coerce(e3, r3, t2.attributes, a2, i3);
            }
            if (i2("enabled")) {
              var o2 = i2("target");
              if (n.isArrayOrTypedArray(o2) && 0 === o2.length) return r3.enabled = false, r3;
              i2("preservegaps"), i2("operation"), i2("value");
              var l2 = a.getComponentMethod("calendars", "handleDefaults");
              l2(e3, r3, "valuecalendar", null), l2(e3, r3, "targetcalendar", null);
            }
            return r3;
          }, t2.calcTransform = function(e3, t3, r3) {
            if (r3.enabled) {
              var a2 = n.getTargetArray(t3, r3);
              if (a2) {
                var l2 = r3.target, f = a2.length;
                t3._length && (f = Math.min(f, t3._length));
                var d = r3.targetcalendar, h = t3._arrayAttrs, p = r3.preservegaps;
                if ("string" == typeof l2) {
                  var v = n.nestedProperty(t3, l2 + "calendar").get();
                  v && (d = v);
                }
                var g, m, y = function(e4, t4, r4) {
                  var a3 = e4.operation, i2 = e4.value, o2 = n.isArrayOrTypedArray(i2);
                  function l3(e5) {
                    return -1 !== e5.indexOf(a3);
                  }
                  var f2, d2 = function(r5) {
                    return t4(r5, 0, e4.valuecalendar);
                  }, h2 = function(e5) {
                    return t4(e5, 0, r4);
                  };
                  switch (l3(s) ? f2 = d2(o2 ? i2[0] : i2) : l3(c) ? f2 = o2 ? [d2(i2[0]), d2(i2[1])] : [d2(i2), d2(i2)] : l3(u) && (f2 = o2 ? i2.map(d2) : [d2(i2)]), a3) {
                    case "=":
                      return function(e5) {
                        return h2(e5) === f2;
                      };
                    case "!=":
                      return function(e5) {
                        return h2(e5) !== f2;
                      };
                    case "<":
                      return function(e5) {
                        return h2(e5) < f2;
                      };
                    case "<=":
                      return function(e5) {
                        return h2(e5) <= f2;
                      };
                    case ">":
                      return function(e5) {
                        return h2(e5) > f2;
                      };
                    case ">=":
                      return function(e5) {
                        return h2(e5) >= f2;
                      };
                    case "[]":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 >= f2[0] && t5 <= f2[1];
                      };
                    case "()":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 > f2[0] && t5 < f2[1];
                      };
                    case "[)":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 >= f2[0] && t5 < f2[1];
                      };
                    case "(]":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 > f2[0] && t5 <= f2[1];
                      };
                    case "][":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 <= f2[0] || t5 >= f2[1];
                      };
                    case ")(":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 < f2[0] || t5 > f2[1];
                      };
                    case "](":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 <= f2[0] || t5 > f2[1];
                      };
                    case ")[":
                      return function(e5) {
                        var t5 = h2(e5);
                        return t5 < f2[0] || t5 >= f2[1];
                      };
                    case "{}":
                      return function(e5) {
                        return -1 !== f2.indexOf(h2(e5));
                      };
                    case "}{":
                      return function(e5) {
                        return -1 === f2.indexOf(h2(e5));
                      };
                  }
                }(r3, i.getDataToCoordFunc(e3, t3, l2, a2), d), x = {}, b = {}, _ = 0;
                p ? (g = function(e4) {
                  x[e4.astr] = n.extendDeep([], e4.get()), e4.set(new Array(f));
                }, m = function(e4, t4) {
                  var r4 = x[e4.astr][t4];
                  e4.get()[t4] = r4;
                }) : (g = function(e4) {
                  x[e4.astr] = n.extendDeep([], e4.get()), e4.set([]);
                }, m = function(e4, t4) {
                  var r4 = x[e4.astr][t4];
                  e4.get().push(r4);
                }), M(g);
                for (var w = o(t3.transforms, r3), T = 0; T < f; T++) y(a2[T]) ? (M(m, T), b[_++] = w(T)) : p && _++;
                r3._indexToPoints = b, t3._length = _;
              }
            }
            function M(e4, r4) {
              for (var a3 = 0; a3 < h.length; a3++) e4(n.nestedProperty(t3, h[a3]), r4);
            }
          };
        }, 453: function(e2, t2, r2) {
          var n = r2(4809), a = r2(7297), i = r2(4122), o = r2(5086).z;
          function l(e3, t3) {
            var r3, l2, s, c, u, f, d, h, p, v, g = t3.transform, m = t3.transformIndex, y = e3.transforms[m].groups, x = o(e3.transforms, g);
            if (!n.isArrayOrTypedArray(y) || 0 === y.length) return [e3];
            var b = n.filterUnique(y), _ = new Array(b.length), w = y.length, T = a.findArrayAttributes(e3), M = g.styles || [], k = {};
            for (r3 = 0; r3 < M.length; r3++) k[M[r3].target] = M[r3].value;
            g.styles && (v = n.keyedContainer(g, "styles", "target", "value.name"));
            var A = {}, L = {};
            for (r3 = 0; r3 < b.length; r3++) {
              A[f = b[r3]] = r3, L[f] = 0, (d = _[r3] = n.extendDeepNoArrays({}, e3))._group = f, d.transforms[m]._indexToPoints = {};
              var S = null;
              for (v && (S = v.get(f)), d.name = S || "" === S ? S : n.templateString(g.nameformat, { trace: e3.name, group: f }), h = d.transforms, d.transforms = [], l2 = 0; l2 < h.length; l2++) d.transforms[l2] = n.extendDeepNoArrays({}, h[l2]);
              for (l2 = 0; l2 < T.length; l2++) n.nestedProperty(d, T[l2]).set([]);
            }
            for (s = 0; s < T.length; s++) {
              for (c = T[s], l2 = 0, p = []; l2 < b.length; l2++) p[l2] = n.nestedProperty(_[l2], c).get();
              for (u = n.nestedProperty(e3, c).get(), l2 = 0; l2 < w; l2++) p[A[y[l2]]].push(u[l2]);
            }
            for (l2 = 0; l2 < w; l2++) (d = _[A[y[l2]]]).transforms[m]._indexToPoints[L[y[l2]]] = x(l2), L[y[l2]]++;
            for (r3 = 0; r3 < b.length; r3++) f = b[r3], d = _[r3], i.clearExpandedTraceDefaultColors(d), d = n.extendDeepNoArrays(d, k[f] || {});
            return _;
          }
          t2.moduleType = "transform", t2.name = "groupby", t2.attributes = { enabled: { valType: "boolean", dflt: true, editType: "calc" }, groups: { valType: "data_array", dflt: [], editType: "calc" }, nameformat: { valType: "string", editType: "calc" }, styles: { _isLinkedToArray: "style", target: { valType: "string", editType: "calc" }, value: { valType: "any", dflt: {}, editType: "calc", _compareAsJSON: true }, editType: "calc" }, editType: "calc" }, t2.supplyDefaults = function(e3, r3, a2) {
            var i2, o2 = {};
            function l2(r4, a3) {
              return n.coerce(e3, o2, t2.attributes, r4, a3);
            }
            if (!l2("enabled")) return o2;
            l2("groups"), l2("nameformat", a2._dataLength > 1 ? "%{group} (%{trace})" : "%{group}");
            var s = e3.styles, c = o2.styles = [];
            if (s) for (i2 = 0; i2 < s.length; i2++) {
              var u = c[i2] = {};
              n.coerce(s[i2], c[i2], t2.attributes.styles, "target");
              var f = n.coerce(s[i2], c[i2], t2.attributes.styles, "value");
              n.isPlainObject(f) ? u.value = n.extendDeep({}, f) : f && delete u.value;
            }
            return o2;
          }, t2.transform = function(e3, t3) {
            var r3, n2, a2, i2 = [];
            for (n2 = 0; n2 < e3.length; n2++) for (r3 = l(e3[n2], t3), a2 = 0; a2 < r3.length; a2++) i2.push(r3[a2]);
            return i2;
          };
        }, 5086: function(e2, t2) {
          t2.z = function(e3, t3) {
            for (var r2, n, a = 0; a < e3.length && (r2 = e3[a]) !== t3; a++) r2._indexToPoints && false !== r2.enabled && (n = r2._indexToPoints);
            var i = n ? function(e4) {
              return n[e4];
            } : function(e4) {
              return [e4];
            };
            return i;
          };
        }, 9855: function(e2, t2, r2) {
          var n = r2(4809), a = r2(9714), i = r2(5086).z, o = r2(3821).BADNUM;
          t2.moduleType = "transform", t2.name = "sort", t2.attributes = { enabled: { valType: "boolean", dflt: true, editType: "calc" }, target: { valType: "string", strict: true, noBlank: true, arrayOk: true, dflt: "x", editType: "calc" }, order: { valType: "enumerated", values: ["ascending", "descending"], dflt: "ascending", editType: "calc" }, editType: "calc" }, t2.supplyDefaults = function(e3) {
            var r3 = {};
            function a2(a3, i2) {
              return n.coerce(e3, r3, t2.attributes, a3, i2);
            }
            return a2("enabled") && (a2("target"), a2("order")), r3;
          }, t2.calcTransform = function(e3, t3, r3) {
            if (r3.enabled) {
              var l = n.getTargetArray(t3, r3);
              if (l) {
                var s = r3.target, c = l.length;
                t3._length && (c = Math.min(c, t3._length));
                var u, f, d = t3._arrayAttrs, h = function(e4, t4, r4, n2) {
                  var a2, i2 = new Array(n2), l2 = new Array(n2);
                  for (a2 = 0; a2 < n2; a2++) i2[a2] = { v: t4[a2], i: a2 };
                  for (i2.sort(function(e5, t5) {
                    switch (e5.order) {
                      case "ascending":
                        return function(e6, r5) {
                          var n3 = t5(e6.v), a3 = t5(r5.v);
                          return n3 === o ? 1 : a3 === o ? -1 : n3 - a3;
                        };
                      case "descending":
                        return function(e6, r5) {
                          var n3 = t5(e6.v), a3 = t5(r5.v);
                          return n3 === o ? 1 : a3 === o ? -1 : a3 - n3;
                        };
                    }
                  }(e4, r4)), a2 = 0; a2 < n2; a2++) l2[a2] = i2[a2].i;
                  return l2;
                }(r3, l, a.getDataToCoordFunc(e3, t3, s, l), c), p = i(t3.transforms, r3), v = {};
                for (u = 0; u < d.length; u++) {
                  var g = n.nestedProperty(t3, d[u]), m = g.get(), y = new Array(c);
                  for (f = 0; f < c; f++) y[f] = m[h[f]];
                  g.set(y);
                }
                for (f = 0; f < c; f++) v[f] = p(h[f]);
                r3._indexToPoints = v, t3._length = c;
              }
            }
          };
        }, 9697: function(e2, t2) {
          t2.version = "2.35.3";
        }, 3087: function(e2) {
          e2.exports = a, e2.exports.isMobile = a, e2.exports.default = a;
          var t2 = /(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, r2 = /CrOS/, n = /android|ipad|playbook|silk/i;
          function a(e3) {
            e3 || (e3 = {});
            var a2 = e3.ua;
            if (a2 || "undefined" == typeof navigator || (a2 = navigator.userAgent), a2 && a2.headers && "string" == typeof a2.headers["user-agent"] && (a2 = a2.headers["user-agent"]), "string" != typeof a2) return false;
            var i = t2.test(a2) && !r2.test(a2) || !!e3.tablet && n.test(a2);
            return !i && e3.tablet && e3.featureDetect && navigator && navigator.maxTouchPoints > 1 && -1 !== a2.indexOf("Macintosh") && -1 !== a2.indexOf("Safari") && (i = true), i;
          }
        }, 5955: function(e2, t2, r2) {
          var n = r2(2413), a = r2.n(n), i = r2(1070), o = r2.n(i), l = r2(2133), s = r2.n(l), c = new URL(r2(7035), r2.b), u = new URL(r2(3470), r2.b), f = new URL(r2(8164), r2.b), d = new URL(r2(4665), r2.b), h = new URL(r2(4890), r2.b), p = new URL(r2(3363), r2.b), v = new URL(r2(3490), r2.b), g = new URL(r2(7603), r2.b), m = new URL(r2(3913), r2.b), y = new URL(r2(1413), r2.b), x = new URL(r2(4643), r2.b), b = new URL(r2(216), r2.b), _ = new URL(r2(1907), r2.b), w = new URL(r2(8605), r2.b), T = new URL(r2(5446), r2.b), M = new URL(r2(6694), r2.b), k = new URL(r2(4420), r2.b), A = new URL(r2(5796), r2.b), L = new URL(r2(2228), r2.b), S = new URL(r2(9819), r2.b), C = new URL(r2(7695), r2.b), O = new URL(r2(8869), r2.b), D = new URL(r2(557), r2.b), P = new URL(r2(8460), r2.b), z = new URL(r2(8920), r2.b), I = new URL(r2(3737), r2.b), E = new URL(r2(7914), r2.b), R = new URL(r2(6117), r2.b), N = new URL(r2(6311), r2.b), F = o()(a()), H = s()(c), B = s()(u), j = s()(f), Y = s()(d), V = s()(h), U = s()(p), q = s()(v), G = s()(g), Z = s()(m), W = s()(y), J = s()(x), X = s()(b), K = s()(_), Q = s()(w), $ = s()(T), ee = s()(M), te = s()(k), re = s()(A), ne = s()(L), ae = s()(S), ie = s()(C), oe = s()(O), le = s()(D), se = s()(P), ce = s()(z), ue = s()(I), fe = s()(E), de = s()(R), he = s()(N);
          F.push([e2.id, ".maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.maplibregl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + H + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + B + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + j + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + Y + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + V + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + U + ")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + q + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + G + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + Z + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + W + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + J + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + G + ")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + X + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + K + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + Q + ")}}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url(" + $ + ")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url(" + ee + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + te + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + re + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(" + ne + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(" + ae + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(" + ie + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(" + oe + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + le + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + se + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(" + ne + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(" + ae + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(" + ie + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(" + oe + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + ce + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + ue + ")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url(" + fe + ");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url(" + fe + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url(" + fe + ")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url(" + de + ");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(" + he + ")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(" + de + ')}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(width <= 480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}', ""]), t2.A = F;
        }, 5568: function(e2, t2, r2) {
          var n, a;
          (function() {
            var i = { version: "3.8.2" }, o = [].slice, l = function(e3) {
              return o.call(e3);
            }, s = self.document;
            function c(e3) {
              return e3 && (e3.ownerDocument || e3.document || e3).documentElement;
            }
            function u(e3) {
              return e3 && (e3.ownerDocument && e3.ownerDocument.defaultView || e3.document && e3 || e3.defaultView);
            }
            if (s) try {
              l(s.documentElement.childNodes)[0].nodeType;
            } catch (e3) {
              l = function(e4) {
                for (var t3 = e4.length, r3 = new Array(t3); t3--; ) r3[t3] = e4[t3];
                return r3;
              };
            }
            if (Date.now || (Date.now = function() {
              return +/* @__PURE__ */ new Date();
            }), s) try {
              s.createElement("DIV").style.setProperty("opacity", 0, "");
            } catch (e3) {
              var f = this.Element.prototype, d = f.setAttribute, h = f.setAttributeNS, p = this.CSSStyleDeclaration.prototype, v = p.setProperty;
              f.setAttribute = function(e4, t3) {
                d.call(this, e4, t3 + "");
              }, f.setAttributeNS = function(e4, t3, r3) {
                h.call(this, e4, t3, r3 + "");
              }, p.setProperty = function(e4, t3, r3) {
                v.call(this, e4, t3 + "", r3);
              };
            }
            function g(e3, t3) {
              return e3 < t3 ? -1 : e3 > t3 ? 1 : e3 >= t3 ? 0 : NaN;
            }
            function m(e3) {
              return null === e3 ? NaN : +e3;
            }
            function y(e3) {
              return !isNaN(e3);
            }
            function x(e3) {
              return { left: function(t3, r3, n2, a2) {
                for (arguments.length < 3 && (n2 = 0), arguments.length < 4 && (a2 = t3.length); n2 < a2; ) {
                  var i2 = n2 + a2 >>> 1;
                  e3(t3[i2], r3) < 0 ? n2 = i2 + 1 : a2 = i2;
                }
                return n2;
              }, right: function(t3, r3, n2, a2) {
                for (arguments.length < 3 && (n2 = 0), arguments.length < 4 && (a2 = t3.length); n2 < a2; ) {
                  var i2 = n2 + a2 >>> 1;
                  e3(t3[i2], r3) > 0 ? a2 = i2 : n2 = i2 + 1;
                }
                return n2;
              } };
            }
            i.ascending = g, i.descending = function(e3, t3) {
              return t3 < e3 ? -1 : t3 > e3 ? 1 : t3 >= e3 ? 0 : NaN;
            }, i.min = function(e3, t3) {
              var r3, n2, a2 = -1, i2 = e3.length;
              if (1 === arguments.length) {
                for (; ++a2 < i2; ) if (null != (n2 = e3[a2]) && n2 >= n2) {
                  r3 = n2;
                  break;
                }
                for (; ++a2 < i2; ) null != (n2 = e3[a2]) && r3 > n2 && (r3 = n2);
              } else {
                for (; ++a2 < i2; ) if (null != (n2 = t3.call(e3, e3[a2], a2)) && n2 >= n2) {
                  r3 = n2;
                  break;
                }
                for (; ++a2 < i2; ) null != (n2 = t3.call(e3, e3[a2], a2)) && r3 > n2 && (r3 = n2);
              }
              return r3;
            }, i.max = function(e3, t3) {
              var r3, n2, a2 = -1, i2 = e3.length;
              if (1 === arguments.length) {
                for (; ++a2 < i2; ) if (null != (n2 = e3[a2]) && n2 >= n2) {
                  r3 = n2;
                  break;
                }
                for (; ++a2 < i2; ) null != (n2 = e3[a2]) && n2 > r3 && (r3 = n2);
              } else {
                for (; ++a2 < i2; ) if (null != (n2 = t3.call(e3, e3[a2], a2)) && n2 >= n2) {
                  r3 = n2;
                  break;
                }
                for (; ++a2 < i2; ) null != (n2 = t3.call(e3, e3[a2], a2)) && n2 > r3 && (r3 = n2);
              }
              return r3;
            }, i.extent = function(e3, t3) {
              var r3, n2, a2, i2 = -1, o2 = e3.length;
              if (1 === arguments.length) {
                for (; ++i2 < o2; ) if (null != (n2 = e3[i2]) && n2 >= n2) {
                  r3 = a2 = n2;
                  break;
                }
                for (; ++i2 < o2; ) null != (n2 = e3[i2]) && (r3 > n2 && (r3 = n2), a2 < n2 && (a2 = n2));
              } else {
                for (; ++i2 < o2; ) if (null != (n2 = t3.call(e3, e3[i2], i2)) && n2 >= n2) {
                  r3 = a2 = n2;
                  break;
                }
                for (; ++i2 < o2; ) null != (n2 = t3.call(e3, e3[i2], i2)) && (r3 > n2 && (r3 = n2), a2 < n2 && (a2 = n2));
              }
              return [r3, a2];
            }, i.sum = function(e3, t3) {
              var r3, n2 = 0, a2 = e3.length, i2 = -1;
              if (1 === arguments.length) for (; ++i2 < a2; ) y(r3 = +e3[i2]) && (n2 += r3);
              else for (; ++i2 < a2; ) y(r3 = +t3.call(e3, e3[i2], i2)) && (n2 += r3);
              return n2;
            }, i.mean = function(e3, t3) {
              var r3, n2 = 0, a2 = e3.length, i2 = -1, o2 = a2;
              if (1 === arguments.length) for (; ++i2 < a2; ) y(r3 = m(e3[i2])) ? n2 += r3 : --o2;
              else for (; ++i2 < a2; ) y(r3 = m(t3.call(e3, e3[i2], i2))) ? n2 += r3 : --o2;
              if (o2) return n2 / o2;
            }, i.quantile = function(e3, t3) {
              var r3 = (e3.length - 1) * t3 + 1, n2 = Math.floor(r3), a2 = +e3[n2 - 1], i2 = r3 - n2;
              return i2 ? a2 + i2 * (e3[n2] - a2) : a2;
            }, i.median = function(e3, t3) {
              var r3, n2 = [], a2 = e3.length, o2 = -1;
              if (1 === arguments.length) for (; ++o2 < a2; ) y(r3 = m(e3[o2])) && n2.push(r3);
              else for (; ++o2 < a2; ) y(r3 = m(t3.call(e3, e3[o2], o2))) && n2.push(r3);
              if (n2.length) return i.quantile(n2.sort(g), 0.5);
            }, i.variance = function(e3, t3) {
              var r3, n2, a2 = e3.length, i2 = 0, o2 = 0, l2 = -1, s2 = 0;
              if (1 === arguments.length) for (; ++l2 < a2; ) y(r3 = m(e3[l2])) && (o2 += (n2 = r3 - i2) * (r3 - (i2 += n2 / ++s2)));
              else for (; ++l2 < a2; ) y(r3 = m(t3.call(e3, e3[l2], l2))) && (o2 += (n2 = r3 - i2) * (r3 - (i2 += n2 / ++s2)));
              if (s2 > 1) return o2 / (s2 - 1);
            }, i.deviation = function() {
              var e3 = i.variance.apply(this, arguments);
              return e3 ? Math.sqrt(e3) : e3;
            };
            var b = x(g);
            function _(e3) {
              return e3.length;
            }
            i.bisectLeft = b.left, i.bisect = i.bisectRight = b.right, i.bisector = function(e3) {
              return x(1 === e3.length ? function(t3, r3) {
                return g(e3(t3), r3);
              } : e3);
            }, i.shuffle = function(e3, t3, r3) {
              (i2 = arguments.length) < 3 && (r3 = e3.length, i2 < 2 && (t3 = 0));
              for (var n2, a2, i2 = r3 - t3; i2; ) a2 = Math.random() * i2-- | 0, n2 = e3[i2 + t3], e3[i2 + t3] = e3[a2 + t3], e3[a2 + t3] = n2;
              return e3;
            }, i.permute = function(e3, t3) {
              for (var r3 = t3.length, n2 = new Array(r3); r3--; ) n2[r3] = e3[t3[r3]];
              return n2;
            }, i.pairs = function(e3) {
              for (var t3 = 0, r3 = e3.length - 1, n2 = e3[0], a2 = new Array(r3 < 0 ? 0 : r3); t3 < r3; ) a2[t3] = [n2, n2 = e3[++t3]];
              return a2;
            }, i.transpose = function(e3) {
              if (!(a2 = e3.length)) return [];
              for (var t3 = -1, r3 = i.min(e3, _), n2 = new Array(r3); ++t3 < r3; ) for (var a2, o2 = -1, l2 = n2[t3] = new Array(a2); ++o2 < a2; ) l2[o2] = e3[o2][t3];
              return n2;
            }, i.zip = function() {
              return i.transpose(arguments);
            }, i.keys = function(e3) {
              var t3 = [];
              for (var r3 in e3) t3.push(r3);
              return t3;
            }, i.values = function(e3) {
              var t3 = [];
              for (var r3 in e3) t3.push(e3[r3]);
              return t3;
            }, i.entries = function(e3) {
              var t3 = [];
              for (var r3 in e3) t3.push({ key: r3, value: e3[r3] });
              return t3;
            }, i.merge = function(e3) {
              for (var t3, r3, n2, a2 = e3.length, i2 = -1, o2 = 0; ++i2 < a2; ) o2 += e3[i2].length;
              for (r3 = new Array(o2); --a2 >= 0; ) for (t3 = (n2 = e3[a2]).length; --t3 >= 0; ) r3[--o2] = n2[t3];
              return r3;
            };
            var w = Math.abs;
            function T(e3, t3) {
              for (var r3 in t3) Object.defineProperty(e3.prototype, r3, { value: t3[r3], enumerable: false });
            }
            function M() {
              this._ = /* @__PURE__ */ Object.create(null);
            }
            i.range = function(e3, t3, r3) {
              if (arguments.length < 3 && (r3 = 1, arguments.length < 2 && (t3 = e3, e3 = 0)), (t3 - e3) / r3 == 1 / 0) throw new Error("infinite range");
              var n2, a2 = [], i2 = function(e4) {
                for (var t4 = 1; e4 * t4 % 1; ) t4 *= 10;
                return t4;
              }(w(r3)), o2 = -1;
              if (e3 *= i2, t3 *= i2, (r3 *= i2) < 0) for (; (n2 = e3 + r3 * ++o2) > t3; ) a2.push(n2 / i2);
              else for (; (n2 = e3 + r3 * ++o2) < t3; ) a2.push(n2 / i2);
              return a2;
            }, i.map = function(e3, t3) {
              var r3 = new M();
              if (e3 instanceof M) e3.forEach(function(e4, t4) {
                r3.set(e4, t4);
              });
              else if (Array.isArray(e3)) {
                var n2, a2 = -1, i2 = e3.length;
                if (1 === arguments.length) for (; ++a2 < i2; ) r3.set(a2, e3[a2]);
                else for (; ++a2 < i2; ) r3.set(t3.call(e3, n2 = e3[a2], a2), n2);
              } else for (var o2 in e3) r3.set(o2, e3[o2]);
              return r3;
            };
            var k = "__proto__", A = "\0";
            function L(e3) {
              return (e3 += "") === k || e3[0] === A ? A + e3 : e3;
            }
            function S(e3) {
              return (e3 += "")[0] === A ? e3.slice(1) : e3;
            }
            function C(e3) {
              return L(e3) in this._;
            }
            function O(e3) {
              return (e3 = L(e3)) in this._ && delete this._[e3];
            }
            function D() {
              var e3 = [];
              for (var t3 in this._) e3.push(S(t3));
              return e3;
            }
            function P() {
              var e3 = 0;
              for (var t3 in this._) ++e3;
              return e3;
            }
            function z() {
              for (var e3 in this._) return false;
              return true;
            }
            function I() {
              this._ = /* @__PURE__ */ Object.create(null);
            }
            function E(e3) {
              return e3;
            }
            function R(e3, t3, r3) {
              return function() {
                var n2 = r3.apply(t3, arguments);
                return n2 === t3 ? e3 : n2;
              };
            }
            function N(e3, t3) {
              if (t3 in e3) return t3;
              t3 = t3.charAt(0).toUpperCase() + t3.slice(1);
              for (var r3 = 0, n2 = F.length; r3 < n2; ++r3) {
                var a2 = F[r3] + t3;
                if (a2 in e3) return a2;
              }
            }
            T(M, { has: C, get: function(e3) {
              return this._[L(e3)];
            }, set: function(e3, t3) {
              return this._[L(e3)] = t3;
            }, remove: O, keys: D, values: function() {
              var e3 = [];
              for (var t3 in this._) e3.push(this._[t3]);
              return e3;
            }, entries: function() {
              var e3 = [];
              for (var t3 in this._) e3.push({ key: S(t3), value: this._[t3] });
              return e3;
            }, size: P, empty: z, forEach: function(e3) {
              for (var t3 in this._) e3.call(this, S(t3), this._[t3]);
            } }), i.nest = function() {
              var e3, t3, r3 = {}, n2 = [], a2 = [];
              function o2(a3, i2, l3) {
                if (l3 >= n2.length) return t3 ? t3.call(r3, i2) : e3 ? i2.sort(e3) : i2;
                for (var s2, c2, u2, f2, d2 = -1, h2 = i2.length, p2 = n2[l3++], v2 = new M(); ++d2 < h2; ) (f2 = v2.get(s2 = p2(c2 = i2[d2]))) ? f2.push(c2) : v2.set(s2, [c2]);
                return a3 ? (c2 = a3(), u2 = function(e4, t4) {
                  c2.set(e4, o2(a3, t4, l3));
                }) : (c2 = {}, u2 = function(e4, t4) {
                  c2[e4] = o2(a3, t4, l3);
                }), v2.forEach(u2), c2;
              }
              function l2(e4, t4) {
                if (t4 >= n2.length) return e4;
                var r4 = [], i2 = a2[t4++];
                return e4.forEach(function(e5, n3) {
                  r4.push({ key: e5, values: l2(n3, t4) });
                }), i2 ? r4.sort(function(e5, t5) {
                  return i2(e5.key, t5.key);
                }) : r4;
              }
              return r3.map = function(e4, t4) {
                return o2(t4, e4, 0);
              }, r3.entries = function(e4) {
                return l2(o2(i.map, e4, 0), 0);
              }, r3.key = function(e4) {
                return n2.push(e4), r3;
              }, r3.sortKeys = function(e4) {
                return a2[n2.length - 1] = e4, r3;
              }, r3.sortValues = function(t4) {
                return e3 = t4, r3;
              }, r3.rollup = function(e4) {
                return t3 = e4, r3;
              }, r3;
            }, i.set = function(e3) {
              var t3 = new I();
              if (e3) for (var r3 = 0, n2 = e3.length; r3 < n2; ++r3) t3.add(e3[r3]);
              return t3;
            }, T(I, { has: C, add: function(e3) {
              return this._[L(e3 += "")] = true, e3;
            }, remove: O, values: D, size: P, empty: z, forEach: function(e3) {
              for (var t3 in this._) e3.call(this, S(t3));
            } }), i.behavior = {}, i.rebind = function(e3, t3) {
              for (var r3, n2 = 1, a2 = arguments.length; ++n2 < a2; ) e3[r3 = arguments[n2]] = R(e3, t3, t3[r3]);
              return e3;
            };
            var F = ["webkit", "ms", "moz", "Moz", "o", "O"];
            function H() {
            }
            function B() {
            }
            function j(e3) {
              var t3 = [], r3 = new M();
              function n2() {
                for (var r4, n3 = t3, a2 = -1, i2 = n3.length; ++a2 < i2; ) (r4 = n3[a2].on) && r4.apply(this, arguments);
                return e3;
              }
              return n2.on = function(n3, a2) {
                var i2, o2 = r3.get(n3);
                return arguments.length < 2 ? o2 && o2.on : (o2 && (o2.on = null, t3 = t3.slice(0, i2 = t3.indexOf(o2)).concat(t3.slice(i2 + 1)), r3.remove(n3)), a2 && t3.push(r3.set(n3, { on: a2 })), e3);
              }, n2;
            }
            function Y() {
              i.event.preventDefault();
            }
            function V() {
              for (var e3, t3 = i.event; e3 = t3.sourceEvent; ) t3 = e3;
              return t3;
            }
            function U(e3) {
              for (var t3 = new B(), r3 = 0, n2 = arguments.length; ++r3 < n2; ) t3[arguments[r3]] = j(t3);
              return t3.of = function(r4, n3) {
                return function(a2) {
                  try {
                    var o2 = a2.sourceEvent = i.event;
                    a2.target = e3, i.event = a2, t3[a2.type].apply(r4, n3);
                  } finally {
                    i.event = o2;
                  }
                };
              }, t3;
            }
            i.dispatch = function() {
              for (var e3 = new B(), t3 = -1, r3 = arguments.length; ++t3 < r3; ) e3[arguments[t3]] = j(e3);
              return e3;
            }, B.prototype.on = function(e3, t3) {
              var r3 = e3.indexOf("."), n2 = "";
              if (r3 >= 0 && (n2 = e3.slice(r3 + 1), e3 = e3.slice(0, r3)), e3) return arguments.length < 2 ? this[e3].on(n2) : this[e3].on(n2, t3);
              if (2 === arguments.length) {
                if (null == t3) for (e3 in this) this.hasOwnProperty(e3) && this[e3].on(n2, null);
                return this;
              }
            }, i.event = null, i.requote = function(e3) {
              return e3.replace(q, "\\$&");
            };
            var q = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g, G = {}.__proto__ ? function(e3, t3) {
              e3.__proto__ = t3;
            } : function(e3, t3) {
              for (var r3 in t3) e3[r3] = t3[r3];
            };
            function Z(e3) {
              return G(e3, K), e3;
            }
            var W = function(e3, t3) {
              return t3.querySelector(e3);
            }, J = function(e3, t3) {
              return t3.querySelectorAll(e3);
            }, X = function(e3, t3) {
              var r3 = e3.matches || e3[N(e3, "matchesSelector")];
              return X = function(e4, t4) {
                return r3.call(e4, t4);
              }, X(e3, t3);
            };
            "function" == typeof Sizzle && (W = function(e3, t3) {
              return Sizzle(e3, t3)[0] || null;
            }, J = Sizzle, X = Sizzle.matchesSelector), i.selection = function() {
              return i.select(s.documentElement);
            };
            var K = i.selection.prototype = [];
            function Q(e3) {
              return "function" == typeof e3 ? e3 : function() {
                return W(e3, this);
              };
            }
            function $(e3) {
              return "function" == typeof e3 ? e3 : function() {
                return J(e3, this);
              };
            }
            K.select = function(e3) {
              var t3, r3, n2, a2, i2 = [];
              e3 = Q(e3);
              for (var o2 = -1, l2 = this.length; ++o2 < l2; ) {
                i2.push(t3 = []), t3.parentNode = (n2 = this[o2]).parentNode;
                for (var s2 = -1, c2 = n2.length; ++s2 < c2; ) (a2 = n2[s2]) ? (t3.push(r3 = e3.call(a2, a2.__data__, s2, o2)), r3 && "__data__" in a2 && (r3.__data__ = a2.__data__)) : t3.push(null);
              }
              return Z(i2);
            }, K.selectAll = function(e3) {
              var t3, r3, n2 = [];
              e3 = $(e3);
              for (var a2 = -1, i2 = this.length; ++a2 < i2; ) for (var o2 = this[a2], s2 = -1, c2 = o2.length; ++s2 < c2; ) (r3 = o2[s2]) && (n2.push(t3 = l(e3.call(r3, r3.__data__, s2, a2))), t3.parentNode = r3);
              return Z(n2);
            };
            var ee = "http://www.w3.org/1999/xhtml", te = { svg: "http://www.w3.org/2000/svg", xhtml: ee, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" };
            function re(e3, t3) {
              return e3 = i.ns.qualify(e3), null == t3 ? e3.local ? function() {
                this.removeAttributeNS(e3.space, e3.local);
              } : function() {
                this.removeAttribute(e3);
              } : "function" == typeof t3 ? e3.local ? function() {
                var r3 = t3.apply(this, arguments);
                null == r3 ? this.removeAttributeNS(e3.space, e3.local) : this.setAttributeNS(e3.space, e3.local, r3);
              } : function() {
                var r3 = t3.apply(this, arguments);
                null == r3 ? this.removeAttribute(e3) : this.setAttribute(e3, r3);
              } : e3.local ? function() {
                this.setAttributeNS(e3.space, e3.local, t3);
              } : function() {
                this.setAttribute(e3, t3);
              };
            }
            function ne(e3) {
              return e3.trim().replace(/\s+/g, " ");
            }
            function ae(e3) {
              return new RegExp("(?:^|\\s+)" + i.requote(e3) + "(?:\\s+|$)", "g");
            }
            function ie(e3) {
              return (e3 + "").trim().split(/^|\s+/);
            }
            function oe(e3, t3) {
              var r3 = (e3 = ie(e3).map(le)).length;
              return "function" == typeof t3 ? function() {
                for (var n2 = -1, a2 = t3.apply(this, arguments); ++n2 < r3; ) e3[n2](this, a2);
              } : function() {
                for (var n2 = -1; ++n2 < r3; ) e3[n2](this, t3);
              };
            }
            function le(e3) {
              var t3 = ae(e3);
              return function(r3, n2) {
                if (a2 = r3.classList) return n2 ? a2.add(e3) : a2.remove(e3);
                var a2 = r3.getAttribute("class") || "";
                n2 ? (t3.lastIndex = 0, t3.test(a2) || r3.setAttribute("class", ne(a2 + " " + e3))) : r3.setAttribute("class", ne(a2.replace(t3, " ")));
              };
            }
            function se(e3, t3, r3) {
              return null == t3 ? function() {
                this.style.removeProperty(e3);
              } : "function" == typeof t3 ? function() {
                var n2 = t3.apply(this, arguments);
                null == n2 ? this.style.removeProperty(e3) : this.style.setProperty(e3, n2, r3);
              } : function() {
                this.style.setProperty(e3, t3, r3);
              };
            }
            function ce(e3, t3) {
              return null == t3 ? function() {
                delete this[e3];
              } : "function" == typeof t3 ? function() {
                var r3 = t3.apply(this, arguments);
                null == r3 ? delete this[e3] : this[e3] = r3;
              } : function() {
                this[e3] = t3;
              };
            }
            function ue(e3) {
              return "function" == typeof e3 ? e3 : (e3 = i.ns.qualify(e3)).local ? function() {
                return this.ownerDocument.createElementNS(e3.space, e3.local);
              } : function() {
                var t3 = this.ownerDocument, r3 = this.namespaceURI;
                return r3 === ee && t3.documentElement.namespaceURI === ee ? t3.createElement(e3) : t3.createElementNS(r3, e3);
              };
            }
            function fe() {
              var e3 = this.parentNode;
              e3 && e3.removeChild(this);
            }
            function de(e3) {
              return { __data__: e3 };
            }
            function he(e3) {
              return function() {
                return X(this, e3);
              };
            }
            function pe(e3) {
              return arguments.length || (e3 = g), function(t3, r3) {
                return t3 && r3 ? e3(t3.__data__, r3.__data__) : !t3 - !r3;
              };
            }
            function ve(e3, t3) {
              for (var r3 = 0, n2 = e3.length; r3 < n2; r3++) for (var a2, i2 = e3[r3], o2 = 0, l2 = i2.length; o2 < l2; o2++) (a2 = i2[o2]) && t3(a2, o2, r3);
              return e3;
            }
            function ge(e3) {
              return G(e3, me), e3;
            }
            i.ns = { prefix: te, qualify: function(e3) {
              var t3 = e3.indexOf(":"), r3 = e3;
              return t3 >= 0 && "xmlns" !== (r3 = e3.slice(0, t3)) && (e3 = e3.slice(t3 + 1)), te.hasOwnProperty(r3) ? { space: te[r3], local: e3 } : e3;
            } }, K.attr = function(e3, t3) {
              if (arguments.length < 2) {
                if ("string" == typeof e3) {
                  var r3 = this.node();
                  return (e3 = i.ns.qualify(e3)).local ? r3.getAttributeNS(e3.space, e3.local) : r3.getAttribute(e3);
                }
                for (t3 in e3) this.each(re(t3, e3[t3]));
                return this;
              }
              return this.each(re(e3, t3));
            }, K.classed = function(e3, t3) {
              if (arguments.length < 2) {
                if ("string" == typeof e3) {
                  var r3 = this.node(), n2 = (e3 = ie(e3)).length, a2 = -1;
                  if (t3 = r3.classList) {
                    for (; ++a2 < n2; ) if (!t3.contains(e3[a2])) return false;
                  } else for (t3 = r3.getAttribute("class"); ++a2 < n2; ) if (!ae(e3[a2]).test(t3)) return false;
                  return true;
                }
                for (t3 in e3) this.each(oe(t3, e3[t3]));
                return this;
              }
              return this.each(oe(e3, t3));
            }, K.style = function(e3, t3, r3) {
              var n2 = arguments.length;
              if (n2 < 3) {
                if ("string" != typeof e3) {
                  for (r3 in n2 < 2 && (t3 = ""), e3) this.each(se(r3, e3[r3], t3));
                  return this;
                }
                if (n2 < 2) {
                  var a2 = this.node();
                  return u(a2).getComputedStyle(a2, null).getPropertyValue(e3);
                }
                r3 = "";
              }
              return this.each(se(e3, t3, r3));
            }, K.property = function(e3, t3) {
              if (arguments.length < 2) {
                if ("string" == typeof e3) return this.node()[e3];
                for (t3 in e3) this.each(ce(t3, e3[t3]));
                return this;
              }
              return this.each(ce(e3, t3));
            }, K.text = function(e3) {
              return arguments.length ? this.each("function" == typeof e3 ? function() {
                var t3 = e3.apply(this, arguments);
                this.textContent = null == t3 ? "" : t3;
              } : null == e3 ? function() {
                this.textContent = "";
              } : function() {
                this.textContent = e3;
              }) : this.node().textContent;
            }, K.html = function(e3) {
              return arguments.length ? this.each("function" == typeof e3 ? function() {
                var t3 = e3.apply(this, arguments);
                this.innerHTML = null == t3 ? "" : t3;
              } : null == e3 ? function() {
                this.innerHTML = "";
              } : function() {
                this.innerHTML = e3;
              }) : this.node().innerHTML;
            }, K.append = function(e3) {
              return e3 = ue(e3), this.select(function() {
                return this.appendChild(e3.apply(this, arguments));
              });
            }, K.insert = function(e3, t3) {
              return e3 = ue(e3), t3 = Q(t3), this.select(function() {
                return this.insertBefore(e3.apply(this, arguments), t3.apply(this, arguments) || null);
              });
            }, K.remove = function() {
              return this.each(fe);
            }, K.data = function(e3, t3) {
              var r3, n2, a2 = -1, i2 = this.length;
              if (!arguments.length) {
                for (e3 = new Array(i2 = (r3 = this[0]).length); ++a2 < i2; ) (n2 = r3[a2]) && (e3[a2] = n2.__data__);
                return e3;
              }
              function o2(e4, r4) {
                var n3, a3, i3, o3 = e4.length, u2 = r4.length, f2 = Math.min(o3, u2), d2 = new Array(u2), h2 = new Array(u2), p2 = new Array(o3);
                if (t3) {
                  var v2, g2 = new M(), m2 = new Array(o3);
                  for (n3 = -1; ++n3 < o3; ) (a3 = e4[n3]) && (g2.has(v2 = t3.call(a3, a3.__data__, n3)) ? p2[n3] = a3 : g2.set(v2, a3), m2[n3] = v2);
                  for (n3 = -1; ++n3 < u2; ) (a3 = g2.get(v2 = t3.call(r4, i3 = r4[n3], n3))) ? true !== a3 && (d2[n3] = a3, a3.__data__ = i3) : h2[n3] = de(i3), g2.set(v2, true);
                  for (n3 = -1; ++n3 < o3; ) n3 in m2 && true !== g2.get(m2[n3]) && (p2[n3] = e4[n3]);
                } else {
                  for (n3 = -1; ++n3 < f2; ) a3 = e4[n3], i3 = r4[n3], a3 ? (a3.__data__ = i3, d2[n3] = a3) : h2[n3] = de(i3);
                  for (; n3 < u2; ++n3) h2[n3] = de(r4[n3]);
                  for (; n3 < o3; ++n3) p2[n3] = e4[n3];
                }
                h2.update = d2, h2.parentNode = d2.parentNode = p2.parentNode = e4.parentNode, l2.push(h2), s2.push(d2), c2.push(p2);
              }
              var l2 = ge([]), s2 = Z([]), c2 = Z([]);
              if ("function" == typeof e3) for (; ++a2 < i2; ) o2(r3 = this[a2], e3.call(r3, r3.parentNode.__data__, a2));
              else for (; ++a2 < i2; ) o2(r3 = this[a2], e3);
              return s2.enter = function() {
                return l2;
              }, s2.exit = function() {
                return c2;
              }, s2;
            }, K.datum = function(e3) {
              return arguments.length ? this.property("__data__", e3) : this.property("__data__");
            }, K.filter = function(e3) {
              var t3, r3, n2, a2 = [];
              "function" != typeof e3 && (e3 = he(e3));
              for (var i2 = 0, o2 = this.length; i2 < o2; i2++) {
                a2.push(t3 = []), t3.parentNode = (r3 = this[i2]).parentNode;
                for (var l2 = 0, s2 = r3.length; l2 < s2; l2++) (n2 = r3[l2]) && e3.call(n2, n2.__data__, l2, i2) && t3.push(n2);
              }
              return Z(a2);
            }, K.order = function() {
              for (var e3 = -1, t3 = this.length; ++e3 < t3; ) for (var r3, n2 = this[e3], a2 = n2.length - 1, i2 = n2[a2]; --a2 >= 0; ) (r3 = n2[a2]) && (i2 && i2 !== r3.nextSibling && i2.parentNode.insertBefore(r3, i2), i2 = r3);
              return this;
            }, K.sort = function(e3) {
              e3 = pe.apply(this, arguments);
              for (var t3 = -1, r3 = this.length; ++t3 < r3; ) this[t3].sort(e3);
              return this.order();
            }, K.each = function(e3) {
              return ve(this, function(t3, r3, n2) {
                e3.call(t3, t3.__data__, r3, n2);
              });
            }, K.call = function(e3) {
              var t3 = l(arguments);
              return e3.apply(t3[0] = this, t3), this;
            }, K.empty = function() {
              return !this.node();
            }, K.node = function() {
              for (var e3 = 0, t3 = this.length; e3 < t3; e3++) for (var r3 = this[e3], n2 = 0, a2 = r3.length; n2 < a2; n2++) {
                var i2 = r3[n2];
                if (i2) return i2;
              }
              return null;
            }, K.size = function() {
              var e3 = 0;
              return ve(this, function() {
                ++e3;
              }), e3;
            };
            var me = [];
            function ye(e3, t3, r3) {
              var n2 = "__on" + e3, a2 = e3.indexOf("."), o2 = be;
              a2 > 0 && (e3 = e3.slice(0, a2));
              var s2 = xe.get(e3);
              function c2() {
                var t4 = this[n2];
                t4 && (this.removeEventListener(e3, t4, t4.$), delete this[n2]);
              }
              return s2 && (e3 = s2, o2 = _e), a2 ? t3 ? function() {
                var a3 = o2(t3, l(arguments));
                c2.call(this), this.addEventListener(e3, this[n2] = a3, a3.$ = r3), a3._ = t3;
              } : c2 : t3 ? H : function() {
                var t4, r4 = new RegExp("^__on([^.]+)" + i.requote(e3) + "$");
                for (var n3 in this) if (t4 = n3.match(r4)) {
                  var a3 = this[n3];
                  this.removeEventListener(t4[1], a3, a3.$), delete this[n3];
                }
              };
            }
            i.selection.enter = ge, i.selection.enter.prototype = me, me.append = K.append, me.empty = K.empty, me.node = K.node, me.call = K.call, me.size = K.size, me.select = function(e3) {
              for (var t3, r3, n2, a2, i2, o2 = [], l2 = -1, s2 = this.length; ++l2 < s2; ) {
                n2 = (a2 = this[l2]).update, o2.push(t3 = []), t3.parentNode = a2.parentNode;
                for (var c2 = -1, u2 = a2.length; ++c2 < u2; ) (i2 = a2[c2]) ? (t3.push(n2[c2] = r3 = e3.call(a2.parentNode, i2.__data__, c2, l2)), r3.__data__ = i2.__data__) : t3.push(null);
              }
              return Z(o2);
            }, me.insert = function(e3, t3) {
              var r3, n2, a2;
              return arguments.length < 2 && (r3 = this, t3 = function(e4, t4, i2) {
                var o2, l2 = r3[i2].update, s2 = l2.length;
                for (i2 != a2 && (a2 = i2, n2 = 0), t4 >= n2 && (n2 = t4 + 1); !(o2 = l2[n2]) && ++n2 < s2; ) ;
                return o2;
              }), K.insert.call(this, e3, t3);
            }, i.select = function(e3) {
              var t3;
              return "string" == typeof e3 ? (t3 = [W(e3, s)]).parentNode = s.documentElement : (t3 = [e3]).parentNode = c(e3), Z([t3]);
            }, i.selectAll = function(e3) {
              var t3;
              return "string" == typeof e3 ? (t3 = l(J(e3, s))).parentNode = s.documentElement : (t3 = l(e3)).parentNode = null, Z([t3]);
            }, K.on = function(e3, t3, r3) {
              var n2 = arguments.length;
              if (n2 < 3) {
                if ("string" != typeof e3) {
                  for (r3 in n2 < 2 && (t3 = false), e3) this.each(ye(r3, e3[r3], t3));
                  return this;
                }
                if (n2 < 2) return (n2 = this.node()["__on" + e3]) && n2._;
                r3 = false;
              }
              return this.each(ye(e3, t3, r3));
            };
            var xe = i.map({ mouseenter: "mouseover", mouseleave: "mouseout" });
            function be(e3, t3) {
              return function(r3) {
                var n2 = i.event;
                i.event = r3, t3[0] = this.__data__;
                try {
                  e3.apply(this, t3);
                } finally {
                  i.event = n2;
                }
              };
            }
            function _e(e3, t3) {
              var r3 = be(e3, t3);
              return function(e4) {
                var t4 = this, n2 = e4.relatedTarget;
                n2 && (n2 === t4 || 8 & n2.compareDocumentPosition(t4)) || r3.call(t4, e4);
              };
            }
            s && xe.forEach(function(e3) {
              "on" + e3 in s && xe.remove(e3);
            });
            var we, Te = 0;
            function Me(e3) {
              var t3 = ".dragsuppress-" + ++Te, r3 = "click" + t3, n2 = i.select(u(e3)).on("touchmove" + t3, Y).on("dragstart" + t3, Y).on("selectstart" + t3, Y);
              if (null == we && (we = !("onselectstart" in e3) && N(e3.style, "userSelect")), we) {
                var a2 = c(e3).style, o2 = a2[we];
                a2[we] = "none";
              }
              return function(e4) {
                if (n2.on(t3, null), we && (a2[we] = o2), e4) {
                  var i2 = function() {
                    n2.on(r3, null);
                  };
                  n2.on(r3, function() {
                    Y(), i2();
                  }, true), setTimeout(i2, 0);
                }
              };
            }
            i.mouse = function(e3) {
              return Ae(e3, V());
            };
            var ke = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
            function Ae(e3, t3) {
              t3.changedTouches && (t3 = t3.changedTouches[0]);
              var r3 = e3.ownerSVGElement || e3;
              if (r3.createSVGPoint) {
                var n2 = r3.createSVGPoint();
                if (ke < 0) {
                  var a2 = u(e3);
                  if (a2.scrollX || a2.scrollY) {
                    var o2 = (r3 = i.select("body").append("svg").style({ position: "absolute", top: 0, left: 0, margin: 0, padding: 0, border: "none" }, "important"))[0][0].getScreenCTM();
                    ke = !(o2.f || o2.e), r3.remove();
                  }
                }
                return ke ? (n2.x = t3.pageX, n2.y = t3.pageY) : (n2.x = t3.clientX, n2.y = t3.clientY), [(n2 = n2.matrixTransform(e3.getScreenCTM().inverse())).x, n2.y];
              }
              var l2 = e3.getBoundingClientRect();
              return [t3.clientX - l2.left - e3.clientLeft, t3.clientY - l2.top - e3.clientTop];
            }
            function Le() {
              return i.event.changedTouches[0].identifier;
            }
            i.touch = function(e3, t3, r3) {
              if (arguments.length < 3 && (r3 = t3, t3 = V().changedTouches), t3) {
                for (var n2, a2 = 0, i2 = t3.length; a2 < i2; ++a2) if ((n2 = t3[a2]).identifier === r3) return Ae(e3, n2);
              }
            }, i.behavior.drag = function() {
              var e3 = U(a2, "drag", "dragstart", "dragend"), t3 = null, r3 = o2(H, i.mouse, u, "mousemove", "mouseup"), n2 = o2(Le, i.touch, E, "touchmove", "touchend");
              function a2() {
                this.on("mousedown.drag", r3).on("touchstart.drag", n2);
              }
              function o2(r4, n3, a3, o3, l2) {
                return function() {
                  var s2, c2 = this, u2 = i.event.target.correspondingElement || i.event.target, f2 = c2.parentNode, d2 = e3.of(c2, arguments), h2 = 0, p2 = r4(), v2 = ".drag" + (null == p2 ? "" : "-" + p2), g2 = i.select(a3(u2)).on(o3 + v2, function() {
                    var e4, t4, r5 = n3(f2, p2);
                    r5 && (e4 = r5[0] - y2[0], t4 = r5[1] - y2[1], h2 |= e4 | t4, y2 = r5, d2({ type: "drag", x: r5[0] + s2[0], y: r5[1] + s2[1], dx: e4, dy: t4 }));
                  }).on(l2 + v2, function() {
                    n3(f2, p2) && (g2.on(o3 + v2, null).on(l2 + v2, null), m2(h2), d2({ type: "dragend" }));
                  }), m2 = Me(u2), y2 = n3(f2, p2);
                  s2 = t3 ? [(s2 = t3.apply(c2, arguments)).x - y2[0], s2.y - y2[1]] : [0, 0], d2({ type: "dragstart" });
                };
              }
              return a2.origin = function(e4) {
                return arguments.length ? (t3 = e4, a2) : t3;
              }, i.rebind(a2, e3, "on");
            }, i.touches = function(e3, t3) {
              return arguments.length < 2 && (t3 = V().touches), t3 ? l(t3).map(function(t4) {
                var r3 = Ae(e3, t4);
                return r3.identifier = t4.identifier, r3;
              }) : [];
            };
            var Se = 1e-6, Ce = Se * Se, Oe = Math.PI, De = 2 * Oe, Pe = De - Se, ze = Oe / 2, Ie = Oe / 180, Ee = 180 / Oe;
            function Re(e3) {
              return e3 > 1 ? ze : e3 < -1 ? -ze : Math.asin(e3);
            }
            function Ne(e3) {
              return ((e3 = Math.exp(e3)) + 1 / e3) / 2;
            }
            var Fe = Math.SQRT2;
            i.interpolateZoom = function(e3, t3) {
              var r3, n2, a2 = e3[0], i2 = e3[1], o2 = e3[2], l2 = t3[0], s2 = t3[1], c2 = t3[2], u2 = l2 - a2, f2 = s2 - i2, d2 = u2 * u2 + f2 * f2;
              if (d2 < Ce) n2 = Math.log(c2 / o2) / Fe, r3 = function(e4) {
                return [a2 + e4 * u2, i2 + e4 * f2, o2 * Math.exp(Fe * e4 * n2)];
              };
              else {
                var h2 = Math.sqrt(d2), p2 = (c2 * c2 - o2 * o2 + 4 * d2) / (2 * o2 * 2 * h2), v2 = (c2 * c2 - o2 * o2 - 4 * d2) / (2 * c2 * 2 * h2), g2 = Math.log(Math.sqrt(p2 * p2 + 1) - p2), m2 = Math.log(Math.sqrt(v2 * v2 + 1) - v2);
                n2 = (m2 - g2) / Fe, r3 = function(e4) {
                  var t4, r4 = e4 * n2, l3 = Ne(g2), s3 = o2 / (2 * h2) * (l3 * (t4 = Fe * r4 + g2, ((t4 = Math.exp(2 * t4)) - 1) / (t4 + 1)) - function(e5) {
                    return ((e5 = Math.exp(e5)) - 1 / e5) / 2;
                  }(g2));
                  return [a2 + s3 * u2, i2 + s3 * f2, o2 * l3 / Ne(Fe * r4 + g2)];
                };
              }
              return r3.duration = 1e3 * n2, r3;
            }, i.behavior.zoom = function() {
              var e3, t3, r3, n2, a2, o2, l2, c2, f2, d2 = { x: 0, y: 0, k: 1 }, h2 = [960, 500], p2 = je, v2 = 250, g2 = 0, m2 = "mousedown.zoom", y2 = "mousemove.zoom", x2 = "mouseup.zoom", b2 = "touchstart.zoom", _2 = U(w2, "zoomstart", "zoom", "zoomend");
              function w2(e4) {
                e4.on(m2, D2).on(Be + ".zoom", z2).on("dblclick.zoom", I2).on(b2, P2);
              }
              function T2(e4) {
                return [(e4[0] - d2.x) / d2.k, (e4[1] - d2.y) / d2.k];
              }
              function M2(e4) {
                d2.k = Math.max(p2[0], Math.min(p2[1], e4));
              }
              function k2(e4, t4) {
                t4 = function(e5) {
                  return [e5[0] * d2.k + d2.x, e5[1] * d2.k + d2.y];
                }(t4), d2.x += e4[0] - t4[0], d2.y += e4[1] - t4[1];
              }
              function A2(e4, r4, n3, a3) {
                e4.__chart__ = { x: d2.x, y: d2.y, k: d2.k }, M2(Math.pow(2, a3)), k2(t3 = r4, n3), e4 = i.select(e4), v2 > 0 && (e4 = e4.transition().duration(v2)), e4.call(w2.event);
              }
              function L2() {
                l2 && l2.domain(o2.range().map(function(e4) {
                  return (e4 - d2.x) / d2.k;
                }).map(o2.invert)), f2 && f2.domain(c2.range().map(function(e4) {
                  return (e4 - d2.y) / d2.k;
                }).map(c2.invert));
              }
              function S2(e4) {
                g2++ || e4({ type: "zoomstart" });
              }
              function C2(e4) {
                L2(), e4({ type: "zoom", scale: d2.k, translate: [d2.x, d2.y] });
              }
              function O2(e4) {
                --g2 || (e4({ type: "zoomend" }), t3 = null);
              }
              function D2() {
                var e4 = this, t4 = _2.of(e4, arguments), r4 = 0, n3 = i.select(u(e4)).on(y2, function() {
                  r4 = 1, k2(i.mouse(e4), a3), C2(t4);
                }).on(x2, function() {
                  n3.on(y2, null).on(x2, null), o3(r4), O2(t4);
                }), a3 = T2(i.mouse(e4)), o3 = Me(e4);
                Xa.call(e4), S2(t4);
              }
              function P2() {
                var e4, t4 = this, r4 = _2.of(t4, arguments), n3 = {}, o3 = 0, l3 = ".zoom-" + i.event.changedTouches[0].identifier, s2 = "touchmove" + l3, c3 = "touchend" + l3, u2 = [], f3 = i.select(t4), h3 = Me(t4);
                function p3() {
                  var r5 = i.touches(t4);
                  return e4 = d2.k, r5.forEach(function(e5) {
                    e5.identifier in n3 && (n3[e5.identifier] = T2(e5));
                  }), r5;
                }
                function v3() {
                  var e5 = i.event.target;
                  i.select(e5).on(s2, g3).on(c3, y3), u2.push(e5);
                  for (var r5 = i.event.changedTouches, l4 = 0, f4 = r5.length; l4 < f4; ++l4) n3[r5[l4].identifier] = null;
                  var h4 = p3(), v4 = Date.now();
                  if (1 === h4.length) {
                    if (v4 - a2 < 500) {
                      var m3 = h4[0];
                      A2(t4, m3, n3[m3.identifier], Math.floor(Math.log(d2.k) / Math.LN2) + 1), Y();
                    }
                    a2 = v4;
                  } else if (h4.length > 1) {
                    m3 = h4[0];
                    var x3 = h4[1], b3 = m3[0] - x3[0], _3 = m3[1] - x3[1];
                    o3 = b3 * b3 + _3 * _3;
                  }
                }
                function g3() {
                  var l4, s3, c4, u3, f4 = i.touches(t4);
                  Xa.call(t4);
                  for (var d3 = 0, h4 = f4.length; d3 < h4; ++d3, u3 = null) if (c4 = f4[d3], u3 = n3[c4.identifier]) {
                    if (s3) break;
                    l4 = c4, s3 = u3;
                  }
                  if (u3) {
                    var p4 = (p4 = c4[0] - l4[0]) * p4 + (p4 = c4[1] - l4[1]) * p4, v4 = o3 && Math.sqrt(p4 / o3);
                    l4 = [(l4[0] + c4[0]) / 2, (l4[1] + c4[1]) / 2], s3 = [(s3[0] + u3[0]) / 2, (s3[1] + u3[1]) / 2], M2(v4 * e4);
                  }
                  a2 = null, k2(l4, s3), C2(r4);
                }
                function y3() {
                  if (i.event.touches.length) {
                    for (var e5 = i.event.changedTouches, t5 = 0, a3 = e5.length; t5 < a3; ++t5) delete n3[e5[t5].identifier];
                    for (var o4 in n3) return void p3();
                  }
                  i.selectAll(u2).on(l3, null), f3.on(m2, D2).on(b2, P2), h3(), O2(r4);
                }
                v3(), S2(r4), f3.on(m2, null).on(b2, v3);
              }
              function z2() {
                var a3 = _2.of(this, arguments);
                n2 ? clearTimeout(n2) : (Xa.call(this), e3 = T2(t3 = r3 || i.mouse(this)), S2(a3)), n2 = setTimeout(function() {
                  n2 = null, O2(a3);
                }, 50), Y(), M2(Math.pow(2, 2e-3 * He()) * d2.k), k2(t3, e3), C2(a3);
              }
              function I2() {
                var e4 = i.mouse(this), t4 = Math.log(d2.k) / Math.LN2;
                A2(this, e4, T2(e4), i.event.shiftKey ? Math.ceil(t4) - 1 : Math.floor(t4) + 1);
              }
              return Be || (Be = "onwheel" in s ? (He = function() {
                return -i.event.deltaY * (i.event.deltaMode ? 120 : 1);
              }, "wheel") : "onmousewheel" in s ? (He = function() {
                return i.event.wheelDelta;
              }, "mousewheel") : (He = function() {
                return -i.event.detail;
              }, "MozMousePixelScroll")), w2.event = function(e4) {
                e4.each(function() {
                  var e5 = _2.of(this, arguments), r4 = d2;
                  $a ? i.select(this).transition().each("start.zoom", function() {
                    d2 = this.__chart__ || { x: 0, y: 0, k: 1 }, S2(e5);
                  }).tween("zoom:zoom", function() {
                    var n3 = h2[0], a3 = h2[1], o3 = t3 ? t3[0] : n3 / 2, l3 = t3 ? t3[1] : a3 / 2, s2 = i.interpolateZoom([(o3 - d2.x) / d2.k, (l3 - d2.y) / d2.k, n3 / d2.k], [(o3 - r4.x) / r4.k, (l3 - r4.y) / r4.k, n3 / r4.k]);
                    return function(t4) {
                      var r5 = s2(t4), a4 = n3 / r5[2];
                      this.__chart__ = d2 = { x: o3 - r5[0] * a4, y: l3 - r5[1] * a4, k: a4 }, C2(e5);
                    };
                  }).each("interrupt.zoom", function() {
                    O2(e5);
                  }).each("end.zoom", function() {
                    O2(e5);
                  }) : (this.__chart__ = d2, S2(e5), C2(e5), O2(e5));
                });
              }, w2.translate = function(e4) {
                return arguments.length ? (d2 = { x: +e4[0], y: +e4[1], k: d2.k }, L2(), w2) : [d2.x, d2.y];
              }, w2.scale = function(e4) {
                return arguments.length ? (d2 = { x: d2.x, y: d2.y, k: null }, M2(+e4), L2(), w2) : d2.k;
              }, w2.scaleExtent = function(e4) {
                return arguments.length ? (p2 = null == e4 ? je : [+e4[0], +e4[1]], w2) : p2;
              }, w2.center = function(e4) {
                return arguments.length ? (r3 = e4 && [+e4[0], +e4[1]], w2) : r3;
              }, w2.size = function(e4) {
                return arguments.length ? (h2 = e4 && [+e4[0], +e4[1]], w2) : h2;
              }, w2.duration = function(e4) {
                return arguments.length ? (v2 = +e4, w2) : v2;
              }, w2.x = function(e4) {
                return arguments.length ? (l2 = e4, o2 = e4.copy(), d2 = { x: 0, y: 0, k: 1 }, w2) : l2;
              }, w2.y = function(e4) {
                return arguments.length ? (f2 = e4, c2 = e4.copy(), d2 = { x: 0, y: 0, k: 1 }, w2) : f2;
              }, i.rebind(w2, _2, "on");
            };
            var He, Be, je = [0, 1 / 0];
            function Ye() {
            }
            function Ve(e3, t3, r3) {
              return this instanceof Ve ? (this.h = +e3, this.s = +t3, void (this.l = +r3)) : arguments.length < 2 ? e3 instanceof Ve ? new Ve(e3.h, e3.s, e3.l) : ut("" + e3, ft, Ve) : new Ve(e3, t3, r3);
            }
            i.color = Ye, Ye.prototype.toString = function() {
              return this.rgb() + "";
            }, i.hsl = Ve;
            var Ue = Ve.prototype = new Ye();
            function qe(e3, t3, r3) {
              var n2, a2;
              function i2(e4) {
                return Math.round(255 * function(e5) {
                  return e5 > 360 ? e5 -= 360 : e5 < 0 && (e5 += 360), e5 < 60 ? n2 + (a2 - n2) * e5 / 60 : e5 < 180 ? a2 : e5 < 240 ? n2 + (a2 - n2) * (240 - e5) / 60 : n2;
                }(e4));
              }
              return e3 = isNaN(e3) ? 0 : (e3 %= 360) < 0 ? e3 + 360 : e3, t3 = isNaN(t3) || t3 < 0 ? 0 : t3 > 1 ? 1 : t3, n2 = 2 * (r3 = r3 < 0 ? 0 : r3 > 1 ? 1 : r3) - (a2 = r3 <= 0.5 ? r3 * (1 + t3) : r3 + t3 - r3 * t3), new it(i2(e3 + 120), i2(e3), i2(e3 - 120));
            }
            function Ge(e3, t3, r3) {
              return this instanceof Ge ? (this.h = +e3, this.c = +t3, void (this.l = +r3)) : arguments.length < 2 ? e3 instanceof Ge ? new Ge(e3.h, e3.c, e3.l) : function(e4, t4, r4) {
                return e4 > 0 ? new Ge(Math.atan2(r4, t4) * Ee, Math.sqrt(t4 * t4 + r4 * r4), e4) : new Ge(NaN, NaN, e4);
              }(e3 instanceof Je ? e3.l : (e3 = dt((e3 = i.rgb(e3)).r, e3.g, e3.b)).l, e3.a, e3.b) : new Ge(e3, t3, r3);
            }
            Ue.brighter = function(e3) {
              return e3 = Math.pow(0.7, arguments.length ? e3 : 1), new Ve(this.h, this.s, this.l / e3);
            }, Ue.darker = function(e3) {
              return e3 = Math.pow(0.7, arguments.length ? e3 : 1), new Ve(this.h, this.s, e3 * this.l);
            }, Ue.rgb = function() {
              return qe(this.h, this.s, this.l);
            }, i.hcl = Ge;
            var Ze = Ge.prototype = new Ye();
            function We(e3, t3, r3) {
              return isNaN(e3) && (e3 = 0), isNaN(t3) && (t3 = 0), new Je(r3, Math.cos(e3 *= Ie) * t3, Math.sin(e3) * t3);
            }
            function Je(e3, t3, r3) {
              return this instanceof Je ? (this.l = +e3, this.a = +t3, void (this.b = +r3)) : arguments.length < 2 ? e3 instanceof Je ? new Je(e3.l, e3.a, e3.b) : e3 instanceof Ge ? We(e3.h, e3.c, e3.l) : dt((e3 = it(e3)).r, e3.g, e3.b) : new Je(e3, t3, r3);
            }
            Ze.brighter = function(e3) {
              return new Ge(this.h, this.c, Math.min(100, this.l + Xe * (arguments.length ? e3 : 1)));
            }, Ze.darker = function(e3) {
              return new Ge(this.h, this.c, Math.max(0, this.l - Xe * (arguments.length ? e3 : 1)));
            }, Ze.rgb = function() {
              return We(this.h, this.c, this.l).rgb();
            }, i.lab = Je;
            var Xe = 18, Ke = 0.95047, Qe = 1, $e = 1.08883, et = Je.prototype = new Ye();
            function tt(e3, t3, r3) {
              var n2 = (e3 + 16) / 116, a2 = n2 + t3 / 500, i2 = n2 - r3 / 200;
              return new it(at(3.2404542 * (a2 = rt(a2) * Ke) - 1.5371385 * (n2 = rt(n2) * Qe) - 0.4985314 * (i2 = rt(i2) * $e)), at(-0.969266 * a2 + 1.8760108 * n2 + 0.041556 * i2), at(0.0556434 * a2 - 0.2040259 * n2 + 1.0572252 * i2));
            }
            function rt(e3) {
              return e3 > 0.206893034 ? e3 * e3 * e3 : (e3 - 4 / 29) / 7.787037;
            }
            function nt(e3) {
              return e3 > 8856e-6 ? Math.pow(e3, 1 / 3) : 7.787037 * e3 + 4 / 29;
            }
            function at(e3) {
              return Math.round(255 * (e3 <= 304e-5 ? 12.92 * e3 : 1.055 * Math.pow(e3, 1 / 2.4) - 0.055));
            }
            function it(e3, t3, r3) {
              return this instanceof it ? (this.r = ~~e3, this.g = ~~t3, void (this.b = ~~r3)) : arguments.length < 2 ? e3 instanceof it ? new it(e3.r, e3.g, e3.b) : ut("" + e3, it, qe) : new it(e3, t3, r3);
            }
            function ot(e3) {
              return new it(e3 >> 16, e3 >> 8 & 255, 255 & e3);
            }
            function lt(e3) {
              return ot(e3) + "";
            }
            et.brighter = function(e3) {
              return new Je(Math.min(100, this.l + Xe * (arguments.length ? e3 : 1)), this.a, this.b);
            }, et.darker = function(e3) {
              return new Je(Math.max(0, this.l - Xe * (arguments.length ? e3 : 1)), this.a, this.b);
            }, et.rgb = function() {
              return tt(this.l, this.a, this.b);
            }, i.rgb = it;
            var st = it.prototype = new Ye();
            function ct(e3) {
              return e3 < 16 ? "0" + Math.max(0, e3).toString(16) : Math.min(255, e3).toString(16);
            }
            function ut(e3, t3, r3) {
              var n2, a2, i2, o2 = 0, l2 = 0, s2 = 0;
              if (n2 = /([a-z]+)\((.*)\)/.exec(e3 = e3.toLowerCase())) switch (a2 = n2[2].split(","), n2[1]) {
                case "hsl":
                  return r3(parseFloat(a2[0]), parseFloat(a2[1]) / 100, parseFloat(a2[2]) / 100);
                case "rgb":
                  return t3(pt(a2[0]), pt(a2[1]), pt(a2[2]));
              }
              return (i2 = vt.get(e3)) ? t3(i2.r, i2.g, i2.b) : (null == e3 || "#" !== e3.charAt(0) || isNaN(i2 = parseInt(e3.slice(1), 16)) || (4 === e3.length ? (o2 = (3840 & i2) >> 4, o2 |= o2 >> 4, l2 = 240 & i2, l2 |= l2 >> 4, s2 = 15 & i2, s2 |= s2 << 4) : 7 === e3.length && (o2 = (16711680 & i2) >> 16, l2 = (65280 & i2) >> 8, s2 = 255 & i2)), t3(o2, l2, s2));
            }
            function ft(e3, t3, r3) {
              var n2, a2, i2 = Math.min(e3 /= 255, t3 /= 255, r3 /= 255), o2 = Math.max(e3, t3, r3), l2 = o2 - i2, s2 = (o2 + i2) / 2;
              return l2 ? (a2 = s2 < 0.5 ? l2 / (o2 + i2) : l2 / (2 - o2 - i2), n2 = e3 == o2 ? (t3 - r3) / l2 + (t3 < r3 ? 6 : 0) : t3 == o2 ? (r3 - e3) / l2 + 2 : (e3 - t3) / l2 + 4, n2 *= 60) : (n2 = NaN, a2 = s2 > 0 && s2 < 1 ? 0 : n2), new Ve(n2, a2, s2);
            }
            function dt(e3, t3, r3) {
              var n2 = nt((0.4124564 * (e3 = ht(e3)) + 0.3575761 * (t3 = ht(t3)) + 0.1804375 * (r3 = ht(r3))) / Ke), a2 = nt((0.2126729 * e3 + 0.7151522 * t3 + 0.072175 * r3) / Qe);
              return Je(116 * a2 - 16, 500 * (n2 - a2), 200 * (a2 - nt((0.0193339 * e3 + 0.119192 * t3 + 0.9503041 * r3) / $e)));
            }
            function ht(e3) {
              return (e3 /= 255) <= 0.04045 ? e3 / 12.92 : Math.pow((e3 + 0.055) / 1.055, 2.4);
            }
            function pt(e3) {
              var t3 = parseFloat(e3);
              return "%" === e3.charAt(e3.length - 1) ? Math.round(2.55 * t3) : t3;
            }
            st.brighter = function(e3) {
              e3 = Math.pow(0.7, arguments.length ? e3 : 1);
              var t3 = this.r, r3 = this.g, n2 = this.b, a2 = 30;
              return t3 || r3 || n2 ? (t3 && t3 < a2 && (t3 = a2), r3 && r3 < a2 && (r3 = a2), n2 && n2 < a2 && (n2 = a2), new it(Math.min(255, t3 / e3), Math.min(255, r3 / e3), Math.min(255, n2 / e3))) : new it(a2, a2, a2);
            }, st.darker = function(e3) {
              return new it((e3 = Math.pow(0.7, arguments.length ? e3 : 1)) * this.r, e3 * this.g, e3 * this.b);
            }, st.hsl = function() {
              return ft(this.r, this.g, this.b);
            }, st.toString = function() {
              return "#" + ct(this.r) + ct(this.g) + ct(this.b);
            };
            var vt = i.map({ aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 });
            function gt(e3) {
              return "function" == typeof e3 ? e3 : function() {
                return e3;
              };
            }
            function mt(e3) {
              return function(t3, r3, n2) {
                return 2 === arguments.length && "function" == typeof r3 && (n2 = r3, r3 = null), yt(t3, r3, e3, n2);
              };
            }
            function yt(e3, t3, r3, n2) {
              var a2 = {}, o2 = i.dispatch("beforesend", "progress", "load", "error"), s2 = {}, c2 = new XMLHttpRequest(), u2 = null;
              function f2() {
                var e4, t4 = c2.status;
                if (!t4 && function(e5) {
                  var t5 = e5.responseType;
                  return t5 && "text" !== t5 ? e5.response : e5.responseText;
                }(c2) || t4 >= 200 && t4 < 300 || 304 === t4) {
                  try {
                    e4 = r3.call(a2, c2);
                  } catch (e5) {
                    return void o2.error.call(a2, e5);
                  }
                  o2.load.call(a2, e4);
                } else o2.error.call(a2, c2);
              }
              return self.XDomainRequest && !("withCredentials" in c2) && /^(http(s)?:)?\/\//.test(e3) && (c2 = new XDomainRequest()), "onload" in c2 ? c2.onload = c2.onerror = f2 : c2.onreadystatechange = function() {
                c2.readyState > 3 && f2();
              }, c2.onprogress = function(e4) {
                var t4 = i.event;
                i.event = e4;
                try {
                  o2.progress.call(a2, c2);
                } finally {
                  i.event = t4;
                }
              }, a2.header = function(e4, t4) {
                return e4 = (e4 + "").toLowerCase(), arguments.length < 2 ? s2[e4] : (null == t4 ? delete s2[e4] : s2[e4] = t4 + "", a2);
              }, a2.mimeType = function(e4) {
                return arguments.length ? (t3 = null == e4 ? null : e4 + "", a2) : t3;
              }, a2.responseType = function(e4) {
                return arguments.length ? (u2 = e4, a2) : u2;
              }, a2.response = function(e4) {
                return r3 = e4, a2;
              }, ["get", "post"].forEach(function(e4) {
                a2[e4] = function() {
                  return a2.send.apply(a2, [e4].concat(l(arguments)));
                };
              }), a2.send = function(r4, n3, i2) {
                if (2 === arguments.length && "function" == typeof n3 && (i2 = n3, n3 = null), c2.open(r4, e3, true), null == t3 || "accept" in s2 || (s2.accept = t3 + ",*/*"), c2.setRequestHeader) for (var l2 in s2) c2.setRequestHeader(l2, s2[l2]);
                return null != t3 && c2.overrideMimeType && c2.overrideMimeType(t3), null != u2 && (c2.responseType = u2), null != i2 && a2.on("error", i2).on("load", function(e4) {
                  i2(null, e4);
                }), o2.beforesend.call(a2, c2), c2.send(null == n3 ? null : n3), a2;
              }, a2.abort = function() {
                return c2.abort(), a2;
              }, i.rebind(a2, o2, "on"), null == n2 ? a2 : a2.get(function(e4) {
                return 1 === e4.length ? function(t4, r4) {
                  e4(null == t4 ? r4 : null);
                } : e4;
              }(n2));
            }
            vt.forEach(function(e3, t3) {
              vt.set(e3, ot(t3));
            }), i.functor = gt, i.xhr = mt(E), i.dsv = function(e3, t3) {
              var r3 = new RegExp('["' + e3 + "\n]"), n2 = e3.charCodeAt(0);
              function a2(e4, r4, n3) {
                arguments.length < 3 && (n3 = r4, r4 = null);
                var a3 = yt(e4, t3, null == r4 ? i2 : o2(r4), n3);
                return a3.row = function(e5) {
                  return arguments.length ? a3.response(null == (r4 = e5) ? i2 : o2(e5)) : r4;
                }, a3;
              }
              function i2(e4) {
                return a2.parse(e4.responseText);
              }
              function o2(e4) {
                return function(t4) {
                  return a2.parse(t4.responseText, e4);
                };
              }
              function l2(t4) {
                return t4.map(s2).join(e3);
              }
              function s2(e4) {
                return r3.test(e4) ? '"' + e4.replace(/\"/g, '""') + '"' : e4;
              }
              return a2.parse = function(e4, t4) {
                var r4;
                return a2.parseRows(e4, function(e5, n3) {
                  if (r4) return r4(e5, n3 - 1);
                  var a3 = function(t5) {
                    for (var r5 = {}, n4 = e5.length, a4 = 0; a4 < n4; ++a4) r5[e5[a4]] = t5[a4];
                    return r5;
                  };
                  r4 = t4 ? function(e6, r5) {
                    return t4(a3(e6), r5);
                  } : a3;
                });
              }, a2.parseRows = function(e4, t4) {
                var r4, a3, i3 = {}, o3 = {}, l3 = [], s3 = e4.length, c2 = 0, u2 = 0;
                function f2() {
                  if (c2 >= s3) return o3;
                  if (a3) return a3 = false, i3;
                  var t5 = c2;
                  if (34 === e4.charCodeAt(t5)) {
                    for (var r5 = t5; r5++ < s3; ) if (34 === e4.charCodeAt(r5)) {
                      if (34 !== e4.charCodeAt(r5 + 1)) break;
                      ++r5;
                    }
                    return c2 = r5 + 2, 13 === (l4 = e4.charCodeAt(r5 + 1)) ? (a3 = true, 10 === e4.charCodeAt(r5 + 2) && ++c2) : 10 === l4 && (a3 = true), e4.slice(t5 + 1, r5).replace(/""/g, '"');
                  }
                  for (; c2 < s3; ) {
                    var l4, u3 = 1;
                    if (10 === (l4 = e4.charCodeAt(c2++))) a3 = true;
                    else if (13 === l4) a3 = true, 10 === e4.charCodeAt(c2) && (++c2, ++u3);
                    else if (l4 !== n2) continue;
                    return e4.slice(t5, c2 - u3);
                  }
                  return e4.slice(t5);
                }
                for (; (r4 = f2()) !== o3; ) {
                  for (var d2 = []; r4 !== i3 && r4 !== o3; ) d2.push(r4), r4 = f2();
                  t4 && null == (d2 = t4(d2, u2++)) || l3.push(d2);
                }
                return l3;
              }, a2.format = function(t4) {
                if (Array.isArray(t4[0])) return a2.formatRows(t4);
                var r4 = new I(), n3 = [];
                return t4.forEach(function(e4) {
                  for (var t5 in e4) r4.has(t5) || n3.push(r4.add(t5));
                }), [n3.map(s2).join(e3)].concat(t4.map(function(t5) {
                  return n3.map(function(e4) {
                    return s2(t5[e4]);
                  }).join(e3);
                })).join("\n");
              }, a2.formatRows = function(e4) {
                return e4.map(l2).join("\n");
              }, a2;
            }, i.csv = i.dsv(",", "text/csv"), i.tsv = i.dsv("	", "text/tab-separated-values");
            var xt, bt, _t, wt, Tt = this[N(this, "requestAnimationFrame")] || function(e3) {
              setTimeout(e3, 17);
            };
            function Mt(e3, t3, r3) {
              var n2 = arguments.length;
              n2 < 2 && (t3 = 0), n2 < 3 && (r3 = Date.now());
              var a2 = { c: e3, t: r3 + t3, n: null };
              return bt ? bt.n = a2 : xt = a2, bt = a2, _t || (wt = clearTimeout(wt), _t = 1, Tt(kt)), a2;
            }
            function kt() {
              var e3 = At(), t3 = Lt() - e3;
              t3 > 24 ? (isFinite(t3) && (clearTimeout(wt), wt = setTimeout(kt, t3)), _t = 0) : (_t = 1, Tt(kt));
            }
            function At() {
              for (var e3 = Date.now(), t3 = xt; t3; ) e3 >= t3.t && t3.c(e3 - t3.t) && (t3.c = null), t3 = t3.n;
              return e3;
            }
            function Lt() {
              for (var e3, t3 = xt, r3 = 1 / 0; t3; ) t3.c ? (t3.t < r3 && (r3 = t3.t), t3 = (e3 = t3).n) : t3 = e3 ? e3.n = t3.n : xt = t3.n;
              return bt = e3, r3;
            }
            function St(e3) {
              return e3[0];
            }
            function Ct(e3) {
              return e3[1];
            }
            function Ot(e3) {
              for (var t3, r3, n2, a2 = e3.length, i2 = [0, 1], o2 = 2, l2 = 2; l2 < a2; l2++) {
                for (; o2 > 1 && (t3 = e3[i2[o2 - 2]], r3 = e3[i2[o2 - 1]], n2 = e3[l2], (r3[0] - t3[0]) * (n2[1] - t3[1]) - (r3[1] - t3[1]) * (n2[0] - t3[0]) <= 0); ) --o2;
                i2[o2++] = l2;
              }
              return i2.slice(0, o2);
            }
            function Dt(e3, t3) {
              return e3[0] - t3[0] || e3[1] - t3[1];
            }
            i.timer = function() {
              Mt.apply(this, arguments);
            }, i.timer.flush = function() {
              At(), Lt();
            }, i.round = function(e3, t3) {
              return t3 ? Math.round(e3 * (t3 = Math.pow(10, t3))) / t3 : Math.round(e3);
            }, i.geom = {}, i.geom.hull = function(e3) {
              var t3 = St, r3 = Ct;
              if (arguments.length) return n2(e3);
              function n2(e4) {
                if (e4.length < 3) return [];
                var n3, a2 = gt(t3), i2 = gt(r3), o2 = e4.length, l2 = [], s2 = [];
                for (n3 = 0; n3 < o2; n3++) l2.push([+a2.call(this, e4[n3], n3), +i2.call(this, e4[n3], n3), n3]);
                for (l2.sort(Dt), n3 = 0; n3 < o2; n3++) s2.push([l2[n3][0], -l2[n3][1]]);
                var c2 = Ot(l2), u2 = Ot(s2), f2 = u2[0] === c2[0], d2 = u2[u2.length - 1] === c2[c2.length - 1], h2 = [];
                for (n3 = c2.length - 1; n3 >= 0; --n3) h2.push(e4[l2[c2[n3]][2]]);
                for (n3 = +f2; n3 < u2.length - d2; ++n3) h2.push(e4[l2[u2[n3]][2]]);
                return h2;
              }
              return n2.x = function(e4) {
                return arguments.length ? (t3 = e4, n2) : t3;
              }, n2.y = function(e4) {
                return arguments.length ? (r3 = e4, n2) : r3;
              }, n2;
            }, i.geom.polygon = function(e3) {
              return G(e3, Pt), e3;
            };
            var Pt = i.geom.polygon.prototype = [];
            function zt(e3, t3, r3) {
              return (r3[0] - t3[0]) * (e3[1] - t3[1]) < (r3[1] - t3[1]) * (e3[0] - t3[0]);
            }
            function It(e3, t3, r3, n2) {
              var a2 = e3[0], i2 = r3[0], o2 = t3[0] - a2, l2 = n2[0] - i2, s2 = e3[1], c2 = r3[1], u2 = t3[1] - s2, f2 = n2[1] - c2, d2 = (l2 * (s2 - c2) - f2 * (a2 - i2)) / (f2 * o2 - l2 * u2);
              return [a2 + d2 * o2, s2 + d2 * u2];
            }
            function Et(e3) {
              var t3 = e3[0], r3 = e3[e3.length - 1];
              return !(t3[0] - r3[0] || t3[1] - r3[1]);
            }
            Pt.area = function() {
              for (var e3, t3 = -1, r3 = this.length, n2 = this[r3 - 1], a2 = 0; ++t3 < r3; ) e3 = n2, n2 = this[t3], a2 += e3[1] * n2[0] - e3[0] * n2[1];
              return 0.5 * a2;
            }, Pt.centroid = function(e3) {
              var t3, r3, n2 = -1, a2 = this.length, i2 = 0, o2 = 0, l2 = this[a2 - 1];
              for (arguments.length || (e3 = -1 / (6 * this.area())); ++n2 < a2; ) t3 = l2, l2 = this[n2], r3 = t3[0] * l2[1] - l2[0] * t3[1], i2 += (t3[0] + l2[0]) * r3, o2 += (t3[1] + l2[1]) * r3;
              return [i2 * e3, o2 * e3];
            }, Pt.clip = function(e3) {
              for (var t3, r3, n2, a2, i2, o2, l2 = Et(e3), s2 = -1, c2 = this.length - Et(this), u2 = this[c2 - 1]; ++s2 < c2; ) {
                for (t3 = e3.slice(), e3.length = 0, a2 = this[s2], i2 = t3[(n2 = t3.length - l2) - 1], r3 = -1; ++r3 < n2; ) zt(o2 = t3[r3], u2, a2) ? (zt(i2, u2, a2) || e3.push(It(i2, o2, u2, a2)), e3.push(o2)) : zt(i2, u2, a2) && e3.push(It(i2, o2, u2, a2)), i2 = o2;
                l2 && e3.push(e3[0]), u2 = a2;
              }
              return e3;
            };
            var Rt, Nt, Ft, Ht, Bt, jt = [], Yt = [];
            function Vt() {
              lr(this), this.edge = this.site = this.circle = null;
            }
            function Ut(e3) {
              var t3 = jt.pop() || new Vt();
              return t3.site = e3, t3;
            }
            function qt(e3) {
              er(e3), Ft.remove(e3), jt.push(e3), lr(e3);
            }
            function Gt(e3) {
              var t3 = e3.circle, r3 = t3.x, n2 = t3.cy, a2 = { x: r3, y: n2 }, i2 = e3.P, o2 = e3.N, l2 = [e3];
              qt(e3);
              for (var s2 = i2; s2.circle && w(r3 - s2.circle.x) < Se && w(n2 - s2.circle.cy) < Se; ) i2 = s2.P, l2.unshift(s2), qt(s2), s2 = i2;
              l2.unshift(s2), er(s2);
              for (var c2 = o2; c2.circle && w(r3 - c2.circle.x) < Se && w(n2 - c2.circle.cy) < Se; ) o2 = c2.N, l2.push(c2), qt(c2), c2 = o2;
              l2.push(c2), er(c2);
              var u2, f2 = l2.length;
              for (u2 = 1; u2 < f2; ++u2) c2 = l2[u2], s2 = l2[u2 - 1], ar(c2.edge, s2.site, c2.site, a2);
              s2 = l2[0], (c2 = l2[f2 - 1]).edge = nr(s2.site, c2.site, null, a2), $t(s2), $t(c2);
            }
            function Zt(e3) {
              for (var t3, r3, n2, a2, i2 = e3.x, o2 = e3.y, l2 = Ft._; l2; ) if ((n2 = Wt(l2, o2) - i2) > Se) l2 = l2.L;
              else {
                if (!((a2 = i2 - Jt(l2, o2)) > Se)) {
                  n2 > -1e-6 ? (t3 = l2.P, r3 = l2) : a2 > -1e-6 ? (t3 = l2, r3 = l2.N) : t3 = r3 = l2;
                  break;
                }
                if (!l2.R) {
                  t3 = l2;
                  break;
                }
                l2 = l2.R;
              }
              var s2 = Ut(e3);
              if (Ft.insert(t3, s2), t3 || r3) {
                if (t3 === r3) return er(t3), r3 = Ut(t3.site), Ft.insert(s2, r3), s2.edge = r3.edge = nr(t3.site, s2.site), $t(t3), void $t(r3);
                if (r3) {
                  er(t3), er(r3);
                  var c2 = t3.site, u2 = c2.x, f2 = c2.y, d2 = e3.x - u2, h2 = e3.y - f2, p2 = r3.site, v2 = p2.x - u2, g2 = p2.y - f2, m2 = 2 * (d2 * g2 - h2 * v2), y2 = d2 * d2 + h2 * h2, x2 = v2 * v2 + g2 * g2, b2 = { x: (g2 * y2 - h2 * x2) / m2 + u2, y: (d2 * x2 - v2 * y2) / m2 + f2 };
                  ar(r3.edge, c2, p2, b2), s2.edge = nr(c2, e3, null, b2), r3.edge = nr(e3, p2, null, b2), $t(t3), $t(r3);
                } else s2.edge = nr(t3.site, s2.site);
              }
            }
            function Wt(e3, t3) {
              var r3 = e3.site, n2 = r3.x, a2 = r3.y, i2 = a2 - t3;
              if (!i2) return n2;
              var o2 = e3.P;
              if (!o2) return -1 / 0;
              var l2 = (r3 = o2.site).x, s2 = r3.y, c2 = s2 - t3;
              if (!c2) return l2;
              var u2 = l2 - n2, f2 = 1 / i2 - 1 / c2, d2 = u2 / c2;
              return f2 ? (-d2 + Math.sqrt(d2 * d2 - 2 * f2 * (u2 * u2 / (-2 * c2) - s2 + c2 / 2 + a2 - i2 / 2))) / f2 + n2 : (n2 + l2) / 2;
            }
            function Jt(e3, t3) {
              var r3 = e3.N;
              if (r3) return Wt(r3, t3);
              var n2 = e3.site;
              return n2.y === t3 ? n2.x : 1 / 0;
            }
            function Xt(e3) {
              this.site = e3, this.edges = [];
            }
            function Kt(e3, t3) {
              return t3.angle - e3.angle;
            }
            function Qt() {
              lr(this), this.x = this.y = this.arc = this.site = this.cy = null;
            }
            function $t(e3) {
              var t3 = e3.P, r3 = e3.N;
              if (t3 && r3) {
                var n2 = t3.site, a2 = e3.site, i2 = r3.site;
                if (n2 !== i2) {
                  var o2 = a2.x, l2 = a2.y, s2 = n2.x - o2, c2 = n2.y - l2, u2 = i2.x - o2, f2 = 2 * (s2 * (g2 = i2.y - l2) - c2 * u2);
                  if (!(f2 >= -1e-12)) {
                    var d2 = s2 * s2 + c2 * c2, h2 = u2 * u2 + g2 * g2, p2 = (g2 * d2 - c2 * h2) / f2, v2 = (s2 * h2 - u2 * d2) / f2, g2 = v2 + l2, m2 = Yt.pop() || new Qt();
                    m2.arc = e3, m2.site = a2, m2.x = p2 + o2, m2.y = g2 + Math.sqrt(p2 * p2 + v2 * v2), m2.cy = g2, e3.circle = m2;
                    for (var y2 = null, x2 = Bt._; x2; ) if (m2.y < x2.y || m2.y === x2.y && m2.x <= x2.x) {
                      if (!x2.L) {
                        y2 = x2.P;
                        break;
                      }
                      x2 = x2.L;
                    } else {
                      if (!x2.R) {
                        y2 = x2;
                        break;
                      }
                      x2 = x2.R;
                    }
                    Bt.insert(y2, m2), y2 || (Ht = m2);
                  }
                }
              }
            }
            function er(e3) {
              var t3 = e3.circle;
              t3 && (t3.P || (Ht = t3.N), Bt.remove(t3), Yt.push(t3), lr(t3), e3.circle = null);
            }
            function tr(e3, t3) {
              var r3 = e3.b;
              if (r3) return true;
              var n2, a2, i2 = e3.a, o2 = t3[0][0], l2 = t3[1][0], s2 = t3[0][1], c2 = t3[1][1], u2 = e3.l, f2 = e3.r, d2 = u2.x, h2 = u2.y, p2 = f2.x, v2 = f2.y, g2 = (d2 + p2) / 2, m2 = (h2 + v2) / 2;
              if (v2 === h2) {
                if (g2 < o2 || g2 >= l2) return;
                if (d2 > p2) {
                  if (i2) {
                    if (i2.y >= c2) return;
                  } else i2 = { x: g2, y: s2 };
                  r3 = { x: g2, y: c2 };
                } else {
                  if (i2) {
                    if (i2.y < s2) return;
                  } else i2 = { x: g2, y: c2 };
                  r3 = { x: g2, y: s2 };
                }
              } else if (a2 = m2 - (n2 = (d2 - p2) / (v2 - h2)) * g2, n2 < -1 || n2 > 1) if (d2 > p2) {
                if (i2) {
                  if (i2.y >= c2) return;
                } else i2 = { x: (s2 - a2) / n2, y: s2 };
                r3 = { x: (c2 - a2) / n2, y: c2 };
              } else {
                if (i2) {
                  if (i2.y < s2) return;
                } else i2 = { x: (c2 - a2) / n2, y: c2 };
                r3 = { x: (s2 - a2) / n2, y: s2 };
              }
              else if (h2 < v2) {
                if (i2) {
                  if (i2.x >= l2) return;
                } else i2 = { x: o2, y: n2 * o2 + a2 };
                r3 = { x: l2, y: n2 * l2 + a2 };
              } else {
                if (i2) {
                  if (i2.x < o2) return;
                } else i2 = { x: l2, y: n2 * l2 + a2 };
                r3 = { x: o2, y: n2 * o2 + a2 };
              }
              return e3.a = i2, e3.b = r3, true;
            }
            function rr(e3, t3) {
              this.l = e3, this.r = t3, this.a = this.b = null;
            }
            function nr(e3, t3, r3, n2) {
              var a2 = new rr(e3, t3);
              return Rt.push(a2), r3 && ar(a2, e3, t3, r3), n2 && ar(a2, t3, e3, n2), Nt[e3.i].edges.push(new ir(a2, e3, t3)), Nt[t3.i].edges.push(new ir(a2, t3, e3)), a2;
            }
            function ar(e3, t3, r3, n2) {
              e3.a || e3.b ? e3.l === r3 ? e3.b = n2 : e3.a = n2 : (e3.a = n2, e3.l = t3, e3.r = r3);
            }
            function ir(e3, t3, r3) {
              var n2 = e3.a, a2 = e3.b;
              this.edge = e3, this.site = t3, this.angle = r3 ? Math.atan2(r3.y - t3.y, r3.x - t3.x) : e3.l === t3 ? Math.atan2(a2.x - n2.x, n2.y - a2.y) : Math.atan2(n2.x - a2.x, a2.y - n2.y);
            }
            function or() {
              this._ = null;
            }
            function lr(e3) {
              e3.U = e3.C = e3.L = e3.R = e3.P = e3.N = null;
            }
            function sr(e3, t3) {
              var r3 = t3, n2 = t3.R, a2 = r3.U;
              a2 ? a2.L === r3 ? a2.L = n2 : a2.R = n2 : e3._ = n2, n2.U = a2, r3.U = n2, r3.R = n2.L, r3.R && (r3.R.U = r3), n2.L = r3;
            }
            function cr(e3, t3) {
              var r3 = t3, n2 = t3.L, a2 = r3.U;
              a2 ? a2.L === r3 ? a2.L = n2 : a2.R = n2 : e3._ = n2, n2.U = a2, r3.U = n2, r3.L = n2.R, r3.L && (r3.L.U = r3), n2.R = r3;
            }
            function ur(e3) {
              for (; e3.L; ) e3 = e3.L;
              return e3;
            }
            function fr(e3, t3) {
              var r3, n2, a2, i2 = e3.sort(dr).pop();
              for (Rt = [], Nt = new Array(e3.length), Ft = new or(), Bt = new or(); ; ) if (a2 = Ht, i2 && (!a2 || i2.y < a2.y || i2.y === a2.y && i2.x < a2.x)) i2.x === r3 && i2.y === n2 || (Nt[i2.i] = new Xt(i2), Zt(i2), r3 = i2.x, n2 = i2.y), i2 = e3.pop();
              else {
                if (!a2) break;
                Gt(a2.arc);
              }
              t3 && (function(e4) {
                for (var t4, r4, n3, a3, i3, o3 = Rt, l2 = (r4 = e4[0][0], n3 = e4[0][1], a3 = e4[1][0], i3 = e4[1][1], function(e5) {
                  var t5, o4 = e5.a, l3 = e5.b, s3 = o4.x, c2 = o4.y, u2 = 0, f2 = 1, d2 = l3.x - s3, h2 = l3.y - c2;
                  if (t5 = r4 - s3, d2 || !(t5 > 0)) {
                    if (t5 /= d2, d2 < 0) {
                      if (t5 < u2) return;
                      t5 < f2 && (f2 = t5);
                    } else if (d2 > 0) {
                      if (t5 > f2) return;
                      t5 > u2 && (u2 = t5);
                    }
                    if (t5 = a3 - s3, d2 || !(t5 < 0)) {
                      if (t5 /= d2, d2 < 0) {
                        if (t5 > f2) return;
                        t5 > u2 && (u2 = t5);
                      } else if (d2 > 0) {
                        if (t5 < u2) return;
                        t5 < f2 && (f2 = t5);
                      }
                      if (t5 = n3 - c2, h2 || !(t5 > 0)) {
                        if (t5 /= h2, h2 < 0) {
                          if (t5 < u2) return;
                          t5 < f2 && (f2 = t5);
                        } else if (h2 > 0) {
                          if (t5 > f2) return;
                          t5 > u2 && (u2 = t5);
                        }
                        if (t5 = i3 - c2, h2 || !(t5 < 0)) {
                          if (t5 /= h2, h2 < 0) {
                            if (t5 > f2) return;
                            t5 > u2 && (u2 = t5);
                          } else if (h2 > 0) {
                            if (t5 < u2) return;
                            t5 < f2 && (f2 = t5);
                          }
                          return u2 > 0 && (e5.a = { x: s3 + u2 * d2, y: c2 + u2 * h2 }), f2 < 1 && (e5.b = { x: s3 + f2 * d2, y: c2 + f2 * h2 }), e5;
                        }
                      }
                    }
                  }
                }), s2 = o3.length; s2--; ) (!tr(t4 = o3[s2], e4) || !l2(t4) || w(t4.a.x - t4.b.x) < Se && w(t4.a.y - t4.b.y) < Se) && (t4.a = t4.b = null, o3.splice(s2, 1));
              }(t3), function(e4) {
                for (var t4, r4, n3, a3, i3, o3, l2, s2, c2, u2, f2 = e4[0][0], d2 = e4[1][0], h2 = e4[0][1], p2 = e4[1][1], v2 = Nt, g2 = v2.length; g2--; ) if ((i3 = v2[g2]) && i3.prepare()) for (s2 = (l2 = i3.edges).length, o3 = 0; o3 < s2; ) n3 = (u2 = l2[o3].end()).x, a3 = u2.y, t4 = (c2 = l2[++o3 % s2].start()).x, r4 = c2.y, (w(n3 - t4) > Se || w(a3 - r4) > Se) && (l2.splice(o3, 0, new ir((m2 = i3.site, y2 = u2, x2 = w(n3 - f2) < Se && p2 - a3 > Se ? { x: f2, y: w(t4 - f2) < Se ? r4 : p2 } : w(a3 - p2) < Se && d2 - n3 > Se ? { x: w(r4 - p2) < Se ? t4 : d2, y: p2 } : w(n3 - d2) < Se && a3 - h2 > Se ? { x: d2, y: w(t4 - d2) < Se ? r4 : h2 } : w(a3 - h2) < Se && n3 - f2 > Se ? { x: w(r4 - h2) < Se ? t4 : f2, y: h2 } : null, b2 = void 0, (b2 = new rr(m2, null)).a = y2, b2.b = x2, Rt.push(b2), b2), i3.site, null)), ++s2);
                var m2, y2, x2, b2;
              }(t3));
              var o2 = { cells: Nt, edges: Rt };
              return Ft = Bt = Rt = Nt = null, o2;
            }
            function dr(e3, t3) {
              return t3.y - e3.y || t3.x - e3.x;
            }
            Xt.prototype.prepare = function() {
              for (var e3, t3 = this.edges, r3 = t3.length; r3--; ) (e3 = t3[r3].edge).b && e3.a || t3.splice(r3, 1);
              return t3.sort(Kt), t3.length;
            }, ir.prototype = { start: function() {
              return this.edge.l === this.site ? this.edge.a : this.edge.b;
            }, end: function() {
              return this.edge.l === this.site ? this.edge.b : this.edge.a;
            } }, or.prototype = { insert: function(e3, t3) {
              var r3, n2, a2;
              if (e3) {
                if (t3.P = e3, t3.N = e3.N, e3.N && (e3.N.P = t3), e3.N = t3, e3.R) {
                  for (e3 = e3.R; e3.L; ) e3 = e3.L;
                  e3.L = t3;
                } else e3.R = t3;
                r3 = e3;
              } else this._ ? (e3 = ur(this._), t3.P = null, t3.N = e3, e3.P = e3.L = t3, r3 = e3) : (t3.P = t3.N = null, this._ = t3, r3 = null);
              for (t3.L = t3.R = null, t3.U = r3, t3.C = true, e3 = t3; r3 && r3.C; ) r3 === (n2 = r3.U).L ? (a2 = n2.R) && a2.C ? (r3.C = a2.C = false, n2.C = true, e3 = n2) : (e3 === r3.R && (sr(this, r3), r3 = (e3 = r3).U), r3.C = false, n2.C = true, cr(this, n2)) : (a2 = n2.L) && a2.C ? (r3.C = a2.C = false, n2.C = true, e3 = n2) : (e3 === r3.L && (cr(this, r3), r3 = (e3 = r3).U), r3.C = false, n2.C = true, sr(this, n2)), r3 = e3.U;
              this._.C = false;
            }, remove: function(e3) {
              e3.N && (e3.N.P = e3.P), e3.P && (e3.P.N = e3.N), e3.N = e3.P = null;
              var t3, r3, n2, a2 = e3.U, i2 = e3.L, o2 = e3.R;
              if (r3 = i2 ? o2 ? ur(o2) : i2 : o2, a2 ? a2.L === e3 ? a2.L = r3 : a2.R = r3 : this._ = r3, i2 && o2 ? (n2 = r3.C, r3.C = e3.C, r3.L = i2, i2.U = r3, r3 !== o2 ? (a2 = r3.U, r3.U = e3.U, e3 = r3.R, a2.L = e3, r3.R = o2, o2.U = r3) : (r3.U = a2, a2 = r3, e3 = r3.R)) : (n2 = e3.C, e3 = r3), e3 && (e3.U = a2), !n2) if (e3 && e3.C) e3.C = false;
              else {
                do {
                  if (e3 === this._) break;
                  if (e3 === a2.L) {
                    if ((t3 = a2.R).C && (t3.C = false, a2.C = true, sr(this, a2), t3 = a2.R), t3.L && t3.L.C || t3.R && t3.R.C) {
                      t3.R && t3.R.C || (t3.L.C = false, t3.C = true, cr(this, t3), t3 = a2.R), t3.C = a2.C, a2.C = t3.R.C = false, sr(this, a2), e3 = this._;
                      break;
                    }
                  } else if ((t3 = a2.L).C && (t3.C = false, a2.C = true, cr(this, a2), t3 = a2.L), t3.L && t3.L.C || t3.R && t3.R.C) {
                    t3.L && t3.L.C || (t3.R.C = false, t3.C = true, sr(this, t3), t3 = a2.L), t3.C = a2.C, a2.C = t3.L.C = false, cr(this, a2), e3 = this._;
                    break;
                  }
                  t3.C = true, e3 = a2, a2 = a2.U;
                } while (!e3.C);
                e3 && (e3.C = false);
              }
            } }, i.geom.voronoi = function(e3) {
              var t3 = St, r3 = Ct, n2 = t3, a2 = r3, i2 = hr;
              if (e3) return o2(e3);
              function o2(e4) {
                var t4 = new Array(e4.length), r4 = i2[0][0], n3 = i2[0][1], a3 = i2[1][0], o3 = i2[1][1];
                return fr(l2(e4), i2).cells.forEach(function(i3, l3) {
                  var s2 = i3.edges, c2 = i3.site;
                  (t4[l3] = s2.length ? s2.map(function(e5) {
                    var t5 = e5.start();
                    return [t5.x, t5.y];
                  }) : c2.x >= r4 && c2.x <= a3 && c2.y >= n3 && c2.y <= o3 ? [[r4, o3], [a3, o3], [a3, n3], [r4, n3]] : []).point = e4[l3];
                }), t4;
              }
              function l2(e4) {
                return e4.map(function(e5, t4) {
                  return { x: Math.round(n2(e5, t4) / Se) * Se, y: Math.round(a2(e5, t4) / Se) * Se, i: t4 };
                });
              }
              return o2.links = function(e4) {
                return fr(l2(e4)).edges.filter(function(e5) {
                  return e5.l && e5.r;
                }).map(function(t4) {
                  return { source: e4[t4.l.i], target: e4[t4.r.i] };
                });
              }, o2.triangles = function(e4) {
                var t4 = [];
                return fr(l2(e4)).cells.forEach(function(r4, n3) {
                  for (var a3, i3, o3, l3, s2 = r4.site, c2 = r4.edges.sort(Kt), u2 = -1, f2 = c2.length, d2 = c2[f2 - 1].edge, h2 = d2.l === s2 ? d2.r : d2.l; ++u2 < f2; ) a3 = h2, h2 = (d2 = c2[u2].edge).l === s2 ? d2.r : d2.l, n3 < a3.i && n3 < h2.i && (o3 = a3, l3 = h2, ((i3 = s2).x - l3.x) * (o3.y - i3.y) - (i3.x - o3.x) * (l3.y - i3.y) < 0) && t4.push([e4[n3], e4[a3.i], e4[h2.i]]);
                }), t4;
              }, o2.x = function(e4) {
                return arguments.length ? (n2 = gt(t3 = e4), o2) : t3;
              }, o2.y = function(e4) {
                return arguments.length ? (a2 = gt(r3 = e4), o2) : r3;
              }, o2.clipExtent = function(e4) {
                return arguments.length ? (i2 = null == e4 ? hr : e4, o2) : i2 === hr ? null : i2;
              }, o2.size = function(e4) {
                return arguments.length ? o2.clipExtent(e4 && [[0, 0], e4]) : i2 === hr ? null : i2 && i2[1];
              }, o2;
            };
            var hr = [[-1e6, -1e6], [1e6, 1e6]];
            function pr(e3) {
              return e3.x;
            }
            function vr(e3) {
              return e3.y;
            }
            function gr(e3, t3, r3, n2, a2, i2) {
              if (!e3(t3, r3, n2, a2, i2)) {
                var o2 = 0.5 * (r3 + a2), l2 = 0.5 * (n2 + i2), s2 = t3.nodes;
                s2[0] && gr(e3, s2[0], r3, n2, o2, l2), s2[1] && gr(e3, s2[1], o2, n2, a2, l2), s2[2] && gr(e3, s2[2], r3, l2, o2, i2), s2[3] && gr(e3, s2[3], o2, l2, a2, i2);
              }
            }
            function mr(e3, t3) {
              e3 = i.rgb(e3), t3 = i.rgb(t3);
              var r3 = e3.r, n2 = e3.g, a2 = e3.b, o2 = t3.r - r3, l2 = t3.g - n2, s2 = t3.b - a2;
              return function(e4) {
                return "#" + ct(Math.round(r3 + o2 * e4)) + ct(Math.round(n2 + l2 * e4)) + ct(Math.round(a2 + s2 * e4));
              };
            }
            function yr(e3, t3) {
              var r3, n2 = {}, a2 = {};
              for (r3 in e3) r3 in t3 ? n2[r3] = Tr(e3[r3], t3[r3]) : a2[r3] = e3[r3];
              for (r3 in t3) r3 in e3 || (a2[r3] = t3[r3]);
              return function(e4) {
                for (r3 in n2) a2[r3] = n2[r3](e4);
                return a2;
              };
            }
            function xr(e3, t3) {
              return e3 = +e3, t3 = +t3, function(r3) {
                return e3 * (1 - r3) + t3 * r3;
              };
            }
            function br(e3, t3) {
              var r3, n2, a2, i2 = _r.lastIndex = wr.lastIndex = 0, o2 = -1, l2 = [], s2 = [];
              for (e3 += "", t3 += ""; (r3 = _r.exec(e3)) && (n2 = wr.exec(t3)); ) (a2 = n2.index) > i2 && (a2 = t3.slice(i2, a2), l2[o2] ? l2[o2] += a2 : l2[++o2] = a2), (r3 = r3[0]) === (n2 = n2[0]) ? l2[o2] ? l2[o2] += n2 : l2[++o2] = n2 : (l2[++o2] = null, s2.push({ i: o2, x: xr(r3, n2) })), i2 = wr.lastIndex;
              return i2 < t3.length && (a2 = t3.slice(i2), l2[o2] ? l2[o2] += a2 : l2[++o2] = a2), l2.length < 2 ? s2[0] ? (t3 = s2[0].x, function(e4) {
                return t3(e4) + "";
              }) : function() {
                return t3;
              } : (t3 = s2.length, function(e4) {
                for (var r4, n3 = 0; n3 < t3; ++n3) l2[(r4 = s2[n3]).i] = r4.x(e4);
                return l2.join("");
              });
            }
            i.geom.delaunay = function(e3) {
              return i.geom.voronoi().triangles(e3);
            }, i.geom.quadtree = function(e3, t3, r3, n2, a2) {
              var i2, o2 = St, l2 = Ct;
              if (i2 = arguments.length) return o2 = pr, l2 = vr, 3 === i2 && (a2 = r3, n2 = t3, r3 = t3 = 0), s2(e3);
              function s2(e4) {
                var s3, c2, u2, f2, d2, h2, p2, v2, g2, m2 = gt(o2), y2 = gt(l2);
                if (null != t3) h2 = t3, p2 = r3, v2 = n2, g2 = a2;
                else if (v2 = g2 = -(h2 = p2 = 1 / 0), c2 = [], u2 = [], d2 = e4.length, i2) for (f2 = 0; f2 < d2; ++f2) (s3 = e4[f2]).x < h2 && (h2 = s3.x), s3.y < p2 && (p2 = s3.y), s3.x > v2 && (v2 = s3.x), s3.y > g2 && (g2 = s3.y), c2.push(s3.x), u2.push(s3.y);
                else for (f2 = 0; f2 < d2; ++f2) {
                  var x2 = +m2(s3 = e4[f2], f2), b2 = +y2(s3, f2);
                  x2 < h2 && (h2 = x2), b2 < p2 && (p2 = b2), x2 > v2 && (v2 = x2), b2 > g2 && (g2 = b2), c2.push(x2), u2.push(b2);
                }
                var _2 = v2 - h2, T2 = g2 - p2;
                function M2(e5, t4, r4, n3, a3, i3, o3, l3) {
                  if (!isNaN(r4) && !isNaN(n3)) if (e5.leaf) {
                    var s4 = e5.x, c3 = e5.y;
                    if (null != s4) if (w(s4 - r4) + w(c3 - n3) < 0.01) k2(e5, t4, r4, n3, a3, i3, o3, l3);
                    else {
                      var u3 = e5.point;
                      e5.x = e5.y = e5.point = null, k2(e5, u3, s4, c3, a3, i3, o3, l3), k2(e5, t4, r4, n3, a3, i3, o3, l3);
                    }
                    else e5.x = r4, e5.y = n3, e5.point = t4;
                  } else k2(e5, t4, r4, n3, a3, i3, o3, l3);
                }
                function k2(e5, t4, r4, n3, a3, i3, o3, l3) {
                  var s4 = 0.5 * (a3 + o3), c3 = 0.5 * (i3 + l3), u3 = r4 >= s4, f3 = n3 >= c3, d3 = f3 << 1 | u3;
                  e5.leaf = false, u3 ? a3 = s4 : o3 = s4, f3 ? i3 = c3 : l3 = c3, M2(e5 = e5.nodes[d3] || (e5.nodes[d3] = { leaf: true, nodes: [], point: null, x: null, y: null }), t4, r4, n3, a3, i3, o3, l3);
                }
                _2 > T2 ? g2 = p2 + _2 : v2 = h2 + T2;
                var A2 = { leaf: true, nodes: [], point: null, x: null, y: null, add: function(e5) {
                  M2(A2, e5, +m2(e5, ++f2), +y2(e5, f2), h2, p2, v2, g2);
                } };
                if (A2.visit = function(e5) {
                  gr(e5, A2, h2, p2, v2, g2);
                }, A2.find = function(e5) {
                  return function(e6, t4, r4, n3, a3, i3, o3) {
                    var l3, s4 = 1 / 0;
                    return function e7(c3, u3, f3, d3, h3) {
                      if (!(u3 > i3 || f3 > o3 || d3 < n3 || h3 < a3)) {
                        if (p3 = c3.point) {
                          var p3, v3 = t4 - c3.x, g3 = r4 - c3.y, m3 = v3 * v3 + g3 * g3;
                          if (m3 < s4) {
                            var y3 = Math.sqrt(s4 = m3);
                            n3 = t4 - y3, a3 = r4 - y3, i3 = t4 + y3, o3 = r4 + y3, l3 = p3;
                          }
                        }
                        for (var x3 = c3.nodes, b3 = 0.5 * (u3 + d3), _3 = 0.5 * (f3 + h3), w2 = (r4 >= _3) << 1 | t4 >= b3, T3 = w2 + 4; w2 < T3; ++w2) if (c3 = x3[3 & w2]) switch (3 & w2) {
                          case 0:
                            e7(c3, u3, f3, b3, _3);
                            break;
                          case 1:
                            e7(c3, b3, f3, d3, _3);
                            break;
                          case 2:
                            e7(c3, u3, _3, b3, h3);
                            break;
                          case 3:
                            e7(c3, b3, _3, d3, h3);
                        }
                      }
                    }(e6, n3, a3, i3, o3), l3;
                  }(A2, e5[0], e5[1], h2, p2, v2, g2);
                }, f2 = -1, null == t3) {
                  for (; ++f2 < d2; ) M2(A2, e4[f2], c2[f2], u2[f2], h2, p2, v2, g2);
                  --f2;
                } else e4.forEach(A2.add);
                return c2 = u2 = e4 = s3 = null, A2;
              }
              return s2.x = function(e4) {
                return arguments.length ? (o2 = e4, s2) : o2;
              }, s2.y = function(e4) {
                return arguments.length ? (l2 = e4, s2) : l2;
              }, s2.extent = function(e4) {
                return arguments.length ? (null == e4 ? t3 = r3 = n2 = a2 = null : (t3 = +e4[0][0], r3 = +e4[0][1], n2 = +e4[1][0], a2 = +e4[1][1]), s2) : null == t3 ? null : [[t3, r3], [n2, a2]];
              }, s2.size = function(e4) {
                return arguments.length ? (null == e4 ? t3 = r3 = n2 = a2 = null : (t3 = r3 = 0, n2 = +e4[0], a2 = +e4[1]), s2) : null == t3 ? null : [n2 - t3, a2 - r3];
              }, s2;
            }, i.interpolateRgb = mr, i.interpolateObject = yr, i.interpolateNumber = xr, i.interpolateString = br;
            var _r = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, wr = new RegExp(_r.source, "g");
            function Tr(e3, t3) {
              for (var r3, n2 = i.interpolators.length; --n2 >= 0 && !(r3 = i.interpolators[n2](e3, t3)); ) ;
              return r3;
            }
            function Mr(e3, t3) {
              var r3, n2 = [], a2 = [], i2 = e3.length, o2 = t3.length, l2 = Math.min(e3.length, t3.length);
              for (r3 = 0; r3 < l2; ++r3) n2.push(Tr(e3[r3], t3[r3]));
              for (; r3 < i2; ++r3) a2[r3] = e3[r3];
              for (; r3 < o2; ++r3) a2[r3] = t3[r3];
              return function(e4) {
                for (r3 = 0; r3 < l2; ++r3) a2[r3] = n2[r3](e4);
                return a2;
              };
            }
            i.interpolate = Tr, i.interpolators = [function(e3, t3) {
              var r3 = typeof t3;
              return ("string" === r3 ? vt.has(t3.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(t3) ? mr : br : t3 instanceof Ye ? mr : Array.isArray(t3) ? Mr : "object" === r3 && isNaN(t3) ? yr : xr)(e3, t3);
            }], i.interpolateArray = Mr;
            var kr = function() {
              return E;
            }, Ar = i.map({ linear: kr, poly: function(e3) {
              return function(t3) {
                return Math.pow(t3, e3);
              };
            }, quad: function() {
              return Or;
            }, cubic: function() {
              return Dr;
            }, sin: function() {
              return zr;
            }, exp: function() {
              return Ir;
            }, circle: function() {
              return Er;
            }, elastic: function(e3, t3) {
              var r3;
              return arguments.length < 2 && (t3 = 0.45), arguments.length ? r3 = t3 / De * Math.asin(1 / e3) : (e3 = 1, r3 = t3 / 4), function(n2) {
                return 1 + e3 * Math.pow(2, -10 * n2) * Math.sin((n2 - r3) * De / t3);
              };
            }, back: function(e3) {
              return e3 || (e3 = 1.70158), function(t3) {
                return t3 * t3 * ((e3 + 1) * t3 - e3);
              };
            }, bounce: function() {
              return Rr;
            } }), Lr = i.map({ in: E, out: Sr, "in-out": Cr, "out-in": function(e3) {
              return Cr(Sr(e3));
            } });
            function Sr(e3) {
              return function(t3) {
                return 1 - e3(1 - t3);
              };
            }
            function Cr(e3) {
              return function(t3) {
                return 0.5 * (t3 < 0.5 ? e3(2 * t3) : 2 - e3(2 - 2 * t3));
              };
            }
            function Or(e3) {
              return e3 * e3;
            }
            function Dr(e3) {
              return e3 * e3 * e3;
            }
            function Pr(e3) {
              if (e3 <= 0) return 0;
              if (e3 >= 1) return 1;
              var t3 = e3 * e3, r3 = t3 * e3;
              return 4 * (e3 < 0.5 ? r3 : 3 * (e3 - t3) + r3 - 0.75);
            }
            function zr(e3) {
              return 1 - Math.cos(e3 * ze);
            }
            function Ir(e3) {
              return Math.pow(2, 10 * (e3 - 1));
            }
            function Er(e3) {
              return 1 - Math.sqrt(1 - e3 * e3);
            }
            function Rr(e3) {
              return e3 < 1 / 2.75 ? 7.5625 * e3 * e3 : e3 < 2 / 2.75 ? 7.5625 * (e3 -= 1.5 / 2.75) * e3 + 0.75 : e3 < 2.5 / 2.75 ? 7.5625 * (e3 -= 2.25 / 2.75) * e3 + 0.9375 : 7.5625 * (e3 -= 2.625 / 2.75) * e3 + 0.984375;
            }
            function Nr(e3, t3) {
              return t3 -= e3, function(r3) {
                return Math.round(e3 + t3 * r3);
              };
            }
            function Fr(e3) {
              var t3, r3, n2, a2 = [e3.a, e3.b], i2 = [e3.c, e3.d], o2 = Br(a2), l2 = Hr(a2, i2), s2 = Br(((t3 = i2)[0] += (n2 = -l2) * (r3 = a2)[0], t3[1] += n2 * r3[1], t3)) || 0;
              a2[0] * i2[1] < i2[0] * a2[1] && (a2[0] *= -1, a2[1] *= -1, o2 *= -1, l2 *= -1), this.rotate = (o2 ? Math.atan2(a2[1], a2[0]) : Math.atan2(-i2[0], i2[1])) * Ee, this.translate = [e3.e, e3.f], this.scale = [o2, s2], this.skew = s2 ? Math.atan2(l2, s2) * Ee : 0;
            }
            function Hr(e3, t3) {
              return e3[0] * t3[0] + e3[1] * t3[1];
            }
            function Br(e3) {
              var t3 = Math.sqrt(Hr(e3, e3));
              return t3 && (e3[0] /= t3, e3[1] /= t3), t3;
            }
            i.ease = function(e3) {
              var t3, r3 = e3.indexOf("-"), n2 = r3 >= 0 ? e3.slice(0, r3) : e3, a2 = r3 >= 0 ? e3.slice(r3 + 1) : "in";
              return n2 = Ar.get(n2) || kr, a2 = Lr.get(a2) || E, t3 = a2(n2.apply(null, o.call(arguments, 1))), function(e4) {
                return e4 <= 0 ? 0 : e4 >= 1 ? 1 : t3(e4);
              };
            }, i.interpolateHcl = function(e3, t3) {
              e3 = i.hcl(e3), t3 = i.hcl(t3);
              var r3 = e3.h, n2 = e3.c, a2 = e3.l, o2 = t3.h - r3, l2 = t3.c - n2, s2 = t3.l - a2;
              return isNaN(l2) && (l2 = 0, n2 = isNaN(n2) ? t3.c : n2), isNaN(o2) ? (o2 = 0, r3 = isNaN(r3) ? t3.h : r3) : o2 > 180 ? o2 -= 360 : o2 < -180 && (o2 += 360), function(e4) {
                return We(r3 + o2 * e4, n2 + l2 * e4, a2 + s2 * e4) + "";
              };
            }, i.interpolateHsl = function(e3, t3) {
              e3 = i.hsl(e3), t3 = i.hsl(t3);
              var r3 = e3.h, n2 = e3.s, a2 = e3.l, o2 = t3.h - r3, l2 = t3.s - n2, s2 = t3.l - a2;
              return isNaN(l2) && (l2 = 0, n2 = isNaN(n2) ? t3.s : n2), isNaN(o2) ? (o2 = 0, r3 = isNaN(r3) ? t3.h : r3) : o2 > 180 ? o2 -= 360 : o2 < -180 && (o2 += 360), function(e4) {
                return qe(r3 + o2 * e4, n2 + l2 * e4, a2 + s2 * e4) + "";
              };
            }, i.interpolateLab = function(e3, t3) {
              e3 = i.lab(e3), t3 = i.lab(t3);
              var r3 = e3.l, n2 = e3.a, a2 = e3.b, o2 = t3.l - r3, l2 = t3.a - n2, s2 = t3.b - a2;
              return function(e4) {
                return tt(r3 + o2 * e4, n2 + l2 * e4, a2 + s2 * e4) + "";
              };
            }, i.interpolateRound = Nr, i.transform = function(e3) {
              var t3 = s.createElementNS(i.ns.prefix.svg, "g");
              return (i.transform = function(e4) {
                if (null != e4) {
                  t3.setAttribute("transform", e4);
                  var r3 = t3.transform.baseVal.consolidate();
                }
                return new Fr(r3 ? r3.matrix : jr);
              })(e3);
            }, Fr.prototype.toString = function() {
              return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
            };
            var jr = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };
            function Yr(e3) {
              return e3.length ? e3.pop() + "," : "";
            }
            function Vr(e3, t3) {
              var r3 = [], n2 = [];
              return e3 = i.transform(e3), t3 = i.transform(t3), function(e4, t4, r4, n3) {
                if (e4[0] !== t4[0] || e4[1] !== t4[1]) {
                  var a2 = r4.push("translate(", null, ",", null, ")");
                  n3.push({ i: a2 - 4, x: xr(e4[0], t4[0]) }, { i: a2 - 2, x: xr(e4[1], t4[1]) });
                } else (t4[0] || t4[1]) && r4.push("translate(" + t4 + ")");
              }(e3.translate, t3.translate, r3, n2), function(e4, t4, r4, n3) {
                e4 !== t4 ? (e4 - t4 > 180 ? t4 += 360 : t4 - e4 > 180 && (e4 += 360), n3.push({ i: r4.push(Yr(r4) + "rotate(", null, ")") - 2, x: xr(e4, t4) })) : t4 && r4.push(Yr(r4) + "rotate(" + t4 + ")");
              }(e3.rotate, t3.rotate, r3, n2), function(e4, t4, r4, n3) {
                e4 !== t4 ? n3.push({ i: r4.push(Yr(r4) + "skewX(", null, ")") - 2, x: xr(e4, t4) }) : t4 && r4.push(Yr(r4) + "skewX(" + t4 + ")");
              }(e3.skew, t3.skew, r3, n2), function(e4, t4, r4, n3) {
                if (e4[0] !== t4[0] || e4[1] !== t4[1]) {
                  var a2 = r4.push(Yr(r4) + "scale(", null, ",", null, ")");
                  n3.push({ i: a2 - 4, x: xr(e4[0], t4[0]) }, { i: a2 - 2, x: xr(e4[1], t4[1]) });
                } else 1 === t4[0] && 1 === t4[1] || r4.push(Yr(r4) + "scale(" + t4 + ")");
              }(e3.scale, t3.scale, r3, n2), e3 = t3 = null, function(e4) {
                for (var t4, a2 = -1, i2 = n2.length; ++a2 < i2; ) r3[(t4 = n2[a2]).i] = t4.x(e4);
                return r3.join("");
              };
            }
            function Ur(e3, t3) {
              return t3 = (t3 -= e3 = +e3) || 1 / t3, function(r3) {
                return (r3 - e3) / t3;
              };
            }
            function qr(e3, t3) {
              return t3 = (t3 -= e3 = +e3) || 1 / t3, function(r3) {
                return Math.max(0, Math.min(1, (r3 - e3) / t3));
              };
            }
            function Gr(e3) {
              for (var t3 = e3.source, r3 = e3.target, n2 = function(e4, t4) {
                if (e4 === t4) return e4;
                for (var r4 = Zr(e4), n3 = Zr(t4), a3 = r4.pop(), i3 = n3.pop(), o2 = null; a3 === i3; ) o2 = a3, a3 = r4.pop(), i3 = n3.pop();
                return o2;
              }(t3, r3), a2 = [t3]; t3 !== n2; ) t3 = t3.parent, a2.push(t3);
              for (var i2 = a2.length; r3 !== n2; ) a2.splice(i2, 0, r3), r3 = r3.parent;
              return a2;
            }
            function Zr(e3) {
              for (var t3 = [], r3 = e3.parent; null != r3; ) t3.push(e3), e3 = r3, r3 = r3.parent;
              return t3.push(e3), t3;
            }
            function Wr(e3) {
              e3.fixed |= 2;
            }
            function Jr(e3) {
              e3.fixed &= -7;
            }
            function Xr(e3) {
              e3.fixed |= 4, e3.px = e3.x, e3.py = e3.y;
            }
            function Kr(e3) {
              e3.fixed &= -5;
            }
            function Qr(e3, t3, r3) {
              var n2 = 0, a2 = 0;
              if (e3.charge = 0, !e3.leaf) for (var i2, o2 = e3.nodes, l2 = o2.length, s2 = -1; ++s2 < l2; ) null != (i2 = o2[s2]) && (Qr(i2, t3, r3), e3.charge += i2.charge, n2 += i2.charge * i2.cx, a2 += i2.charge * i2.cy);
              if (e3.point) {
                e3.leaf || (e3.point.x += Math.random() - 0.5, e3.point.y += Math.random() - 0.5);
                var c2 = t3 * r3[e3.point.index];
                e3.charge += e3.pointCharge = c2, n2 += c2 * e3.point.x, a2 += c2 * e3.point.y;
              }
              e3.cx = n2 / e3.charge, e3.cy = a2 / e3.charge;
            }
            i.interpolateTransform = Vr, i.layout = {}, i.layout.bundle = function() {
              return function(e3) {
                for (var t3 = [], r3 = -1, n2 = e3.length; ++r3 < n2; ) t3.push(Gr(e3[r3]));
                return t3;
              };
            }, i.layout.chord = function() {
              var e3, t3, r3, n2, a2, o2, l2, s2 = {}, c2 = 0;
              function u2() {
                var s3, u3, d2, h2, p2, v2 = {}, g2 = [], m2 = i.range(n2), y2 = [];
                for (e3 = [], t3 = [], s3 = 0, h2 = -1; ++h2 < n2; ) {
                  for (u3 = 0, p2 = -1; ++p2 < n2; ) u3 += r3[h2][p2];
                  g2.push(u3), y2.push(i.range(n2)), s3 += u3;
                }
                for (a2 && m2.sort(function(e4, t4) {
                  return a2(g2[e4], g2[t4]);
                }), o2 && y2.forEach(function(e4, t4) {
                  e4.sort(function(e5, n3) {
                    return o2(r3[t4][e5], r3[t4][n3]);
                  });
                }), s3 = (De - c2 * n2) / s3, u3 = 0, h2 = -1; ++h2 < n2; ) {
                  for (d2 = u3, p2 = -1; ++p2 < n2; ) {
                    var x2 = m2[h2], b2 = y2[x2][p2], _2 = r3[x2][b2], w2 = u3, T2 = u3 += _2 * s3;
                    v2[x2 + "-" + b2] = { index: x2, subindex: b2, startAngle: w2, endAngle: T2, value: _2 };
                  }
                  t3[x2] = { index: x2, startAngle: d2, endAngle: u3, value: g2[x2] }, u3 += c2;
                }
                for (h2 = -1; ++h2 < n2; ) for (p2 = h2 - 1; ++p2 < n2; ) {
                  var M2 = v2[h2 + "-" + p2], k2 = v2[p2 + "-" + h2];
                  (M2.value || k2.value) && e3.push(M2.value < k2.value ? { source: k2, target: M2 } : { source: M2, target: k2 });
                }
                l2 && f2();
              }
              function f2() {
                e3.sort(function(e4, t4) {
                  return l2((e4.source.value + e4.target.value) / 2, (t4.source.value + t4.target.value) / 2);
                });
              }
              return s2.matrix = function(a3) {
                return arguments.length ? (n2 = (r3 = a3) && r3.length, e3 = t3 = null, s2) : r3;
              }, s2.padding = function(r4) {
                return arguments.length ? (c2 = r4, e3 = t3 = null, s2) : c2;
              }, s2.sortGroups = function(r4) {
                return arguments.length ? (a2 = r4, e3 = t3 = null, s2) : a2;
              }, s2.sortSubgroups = function(t4) {
                return arguments.length ? (o2 = t4, e3 = null, s2) : o2;
              }, s2.sortChords = function(t4) {
                return arguments.length ? (l2 = t4, e3 && f2(), s2) : l2;
              }, s2.chords = function() {
                return e3 || u2(), e3;
              }, s2.groups = function() {
                return t3 || u2(), t3;
              }, s2;
            }, i.layout.force = function() {
              var e3, t3, r3, n2, a2, o2, l2 = {}, s2 = i.dispatch("start", "tick", "end"), c2 = [1, 1], u2 = 0.9, f2 = $r, d2 = en, h2 = -30, p2 = tn, v2 = 0.1, g2 = 0.64, m2 = [], y2 = [];
              function x2(e4) {
                return function(t4, r4, n3, a3) {
                  if (t4.point !== e4) {
                    var i2 = t4.cx - e4.x, o3 = t4.cy - e4.y, l3 = a3 - r4, s3 = i2 * i2 + o3 * o3;
                    if (l3 * l3 / g2 < s3) {
                      if (s3 < p2) {
                        var c3 = t4.charge / s3;
                        e4.px -= i2 * c3, e4.py -= o3 * c3;
                      }
                      return true;
                    }
                    t4.point && s3 && s3 < p2 && (c3 = t4.pointCharge / s3, e4.px -= i2 * c3, e4.py -= o3 * c3);
                  }
                  return !t4.charge;
                };
              }
              function b2(e4) {
                e4.px = i.event.x, e4.py = i.event.y, l2.resume();
              }
              return l2.tick = function() {
                if ((r3 *= 0.99) < 5e-3) return e3 = null, s2.end({ type: "end", alpha: r3 = 0 }), true;
                var t4, l3, f3, d3, p3, g3, b3, _2, w2, T2 = m2.length, M2 = y2.length;
                for (l3 = 0; l3 < M2; ++l3) d3 = (f3 = y2[l3]).source, (g3 = (_2 = (p3 = f3.target).x - d3.x) * _2 + (w2 = p3.y - d3.y) * w2) && (_2 *= g3 = r3 * a2[l3] * ((g3 = Math.sqrt(g3)) - n2[l3]) / g3, w2 *= g3, p3.x -= _2 * (b3 = d3.weight + p3.weight ? d3.weight / (d3.weight + p3.weight) : 0.5), p3.y -= w2 * b3, d3.x += _2 * (b3 = 1 - b3), d3.y += w2 * b3);
                if ((b3 = r3 * v2) && (_2 = c2[0] / 2, w2 = c2[1] / 2, l3 = -1, b3)) for (; ++l3 < T2; ) (f3 = m2[l3]).x += (_2 - f3.x) * b3, f3.y += (w2 - f3.y) * b3;
                if (h2) for (Qr(t4 = i.geom.quadtree(m2), r3, o2), l3 = -1; ++l3 < T2; ) (f3 = m2[l3]).fixed || t4.visit(x2(f3));
                for (l3 = -1; ++l3 < T2; ) (f3 = m2[l3]).fixed ? (f3.x = f3.px, f3.y = f3.py) : (f3.x -= (f3.px - (f3.px = f3.x)) * u2, f3.y -= (f3.py - (f3.py = f3.y)) * u2);
                s2.tick({ type: "tick", alpha: r3 });
              }, l2.nodes = function(e4) {
                return arguments.length ? (m2 = e4, l2) : m2;
              }, l2.links = function(e4) {
                return arguments.length ? (y2 = e4, l2) : y2;
              }, l2.size = function(e4) {
                return arguments.length ? (c2 = e4, l2) : c2;
              }, l2.linkDistance = function(e4) {
                return arguments.length ? (f2 = "function" == typeof e4 ? e4 : +e4, l2) : f2;
              }, l2.distance = l2.linkDistance, l2.linkStrength = function(e4) {
                return arguments.length ? (d2 = "function" == typeof e4 ? e4 : +e4, l2) : d2;
              }, l2.friction = function(e4) {
                return arguments.length ? (u2 = +e4, l2) : u2;
              }, l2.charge = function(e4) {
                return arguments.length ? (h2 = "function" == typeof e4 ? e4 : +e4, l2) : h2;
              }, l2.chargeDistance = function(e4) {
                return arguments.length ? (p2 = e4 * e4, l2) : Math.sqrt(p2);
              }, l2.gravity = function(e4) {
                return arguments.length ? (v2 = +e4, l2) : v2;
              }, l2.theta = function(e4) {
                return arguments.length ? (g2 = e4 * e4, l2) : Math.sqrt(g2);
              }, l2.alpha = function(t4) {
                return arguments.length ? (t4 = +t4, r3 ? t4 > 0 ? r3 = t4 : (e3.c = null, e3.t = NaN, e3 = null, s2.end({ type: "end", alpha: r3 = 0 })) : t4 > 0 && (s2.start({ type: "start", alpha: r3 = t4 }), e3 = Mt(l2.tick)), l2) : r3;
              }, l2.start = function() {
                var e4, t4, r4, i2 = m2.length, s3 = y2.length, u3 = c2[0], p3 = c2[1];
                for (e4 = 0; e4 < i2; ++e4) (r4 = m2[e4]).index = e4, r4.weight = 0;
                for (e4 = 0; e4 < s3; ++e4) "number" == typeof (r4 = y2[e4]).source && (r4.source = m2[r4.source]), "number" == typeof r4.target && (r4.target = m2[r4.target]), ++r4.source.weight, ++r4.target.weight;
                for (e4 = 0; e4 < i2; ++e4) r4 = m2[e4], isNaN(r4.x) && (r4.x = v3("x", u3)), isNaN(r4.y) && (r4.y = v3("y", p3)), isNaN(r4.px) && (r4.px = r4.x), isNaN(r4.py) && (r4.py = r4.y);
                if (n2 = [], "function" == typeof f2) for (e4 = 0; e4 < s3; ++e4) n2[e4] = +f2.call(this, y2[e4], e4);
                else for (e4 = 0; e4 < s3; ++e4) n2[e4] = f2;
                if (a2 = [], "function" == typeof d2) for (e4 = 0; e4 < s3; ++e4) a2[e4] = +d2.call(this, y2[e4], e4);
                else for (e4 = 0; e4 < s3; ++e4) a2[e4] = d2;
                if (o2 = [], "function" == typeof h2) for (e4 = 0; e4 < i2; ++e4) o2[e4] = +h2.call(this, m2[e4], e4);
                else for (e4 = 0; e4 < i2; ++e4) o2[e4] = h2;
                function v3(r5, n3) {
                  if (!t4) {
                    for (t4 = new Array(i2), c3 = 0; c3 < i2; ++c3) t4[c3] = [];
                    for (c3 = 0; c3 < s3; ++c3) {
                      var a3 = y2[c3];
                      t4[a3.source.index].push(a3.target), t4[a3.target.index].push(a3.source);
                    }
                  }
                  for (var o3, l3 = t4[e4], c3 = -1, u4 = l3.length; ++c3 < u4; ) if (!isNaN(o3 = l3[c3][r5])) return o3;
                  return Math.random() * n3;
                }
                return l2.resume();
              }, l2.resume = function() {
                return l2.alpha(0.1);
              }, l2.stop = function() {
                return l2.alpha(0);
              }, l2.drag = function() {
                if (t3 || (t3 = i.behavior.drag().origin(E).on("dragstart.force", Wr).on("drag.force", b2).on("dragend.force", Jr)), !arguments.length) return t3;
                this.on("mouseover.force", Xr).on("mouseout.force", Kr).call(t3);
              }, i.rebind(l2, s2, "on");
            };
            var $r = 20, en = 1, tn = 1 / 0;
            function rn(e3, t3) {
              return i.rebind(e3, t3, "sort", "children", "value"), e3.nodes = e3, e3.links = cn, e3;
            }
            function nn(e3, t3) {
              for (var r3 = [e3]; null != (e3 = r3.pop()); ) if (t3(e3), (a2 = e3.children) && (n2 = a2.length)) for (var n2, a2; --n2 >= 0; ) r3.push(a2[n2]);
            }
            function an(e3, t3) {
              for (var r3 = [e3], n2 = []; null != (e3 = r3.pop()); ) if (n2.push(e3), (i2 = e3.children) && (a2 = i2.length)) for (var a2, i2, o2 = -1; ++o2 < a2; ) r3.push(i2[o2]);
              for (; null != (e3 = n2.pop()); ) t3(e3);
            }
            function on(e3) {
              return e3.children;
            }
            function ln(e3) {
              return e3.value;
            }
            function sn(e3, t3) {
              return t3.value - e3.value;
            }
            function cn(e3) {
              return i.merge(e3.map(function(e4) {
                return (e4.children || []).map(function(t3) {
                  return { source: e4, target: t3 };
                });
              }));
            }
            i.layout.hierarchy = function() {
              var e3 = sn, t3 = on, r3 = ln;
              function n2(a2) {
                var i2, o2 = [a2], l2 = [];
                for (a2.depth = 0; null != (i2 = o2.pop()); ) if (l2.push(i2), (c2 = t3.call(n2, i2, i2.depth)) && (s2 = c2.length)) {
                  for (var s2, c2, u2; --s2 >= 0; ) o2.push(u2 = c2[s2]), u2.parent = i2, u2.depth = i2.depth + 1;
                  r3 && (i2.value = 0), i2.children = c2;
                } else r3 && (i2.value = +r3.call(n2, i2, i2.depth) || 0), delete i2.children;
                return an(a2, function(t4) {
                  var n3, a3;
                  e3 && (n3 = t4.children) && n3.sort(e3), r3 && (a3 = t4.parent) && (a3.value += t4.value);
                }), l2;
              }
              return n2.sort = function(t4) {
                return arguments.length ? (e3 = t4, n2) : e3;
              }, n2.children = function(e4) {
                return arguments.length ? (t3 = e4, n2) : t3;
              }, n2.value = function(e4) {
                return arguments.length ? (r3 = e4, n2) : r3;
              }, n2.revalue = function(e4) {
                return r3 && (nn(e4, function(e5) {
                  e5.children && (e5.value = 0);
                }), an(e4, function(e5) {
                  var t4;
                  e5.children || (e5.value = +r3.call(n2, e5, e5.depth) || 0), (t4 = e5.parent) && (t4.value += e5.value);
                })), e4;
              }, n2;
            }, i.layout.partition = function() {
              var e3 = i.layout.hierarchy(), t3 = [1, 1];
              function r3(e4, t4, n3, a3) {
                var i2 = e4.children;
                if (e4.x = t4, e4.y = e4.depth * a3, e4.dx = n3, e4.dy = a3, i2 && (o2 = i2.length)) {
                  var o2, l2, s2, c2 = -1;
                  for (n3 = e4.value ? n3 / e4.value : 0; ++c2 < o2; ) r3(l2 = i2[c2], t4, s2 = l2.value * n3, a3), t4 += s2;
                }
              }
              function n2(e4) {
                var t4 = e4.children, r4 = 0;
                if (t4 && (a3 = t4.length)) for (var a3, i2 = -1; ++i2 < a3; ) r4 = Math.max(r4, n2(t4[i2]));
                return 1 + r4;
              }
              function a2(a3, i2) {
                var o2 = e3.call(this, a3, i2);
                return r3(o2[0], 0, t3[0], t3[1] / n2(o2[0])), o2;
              }
              return a2.size = function(e4) {
                return arguments.length ? (t3 = e4, a2) : t3;
              }, rn(a2, e3);
            }, i.layout.pie = function() {
              var e3 = Number, t3 = un, r3 = 0, n2 = De, a2 = 0;
              function o2(l2) {
                var s2, c2 = l2.length, u2 = l2.map(function(t4, r4) {
                  return +e3.call(o2, t4, r4);
                }), f2 = +("function" == typeof r3 ? r3.apply(this, arguments) : r3), d2 = ("function" == typeof n2 ? n2.apply(this, arguments) : n2) - f2, h2 = Math.min(Math.abs(d2) / c2, +("function" == typeof a2 ? a2.apply(this, arguments) : a2)), p2 = h2 * (d2 < 0 ? -1 : 1), v2 = i.sum(u2), g2 = v2 ? (d2 - c2 * p2) / v2 : 0, m2 = i.range(c2), y2 = [];
                return null != t3 && m2.sort(t3 === un ? function(e4, t4) {
                  return u2[t4] - u2[e4];
                } : function(e4, r4) {
                  return t3(l2[e4], l2[r4]);
                }), m2.forEach(function(e4) {
                  y2[e4] = { data: l2[e4], value: s2 = u2[e4], startAngle: f2, endAngle: f2 += s2 * g2 + p2, padAngle: h2 };
                }), y2;
              }
              return o2.value = function(t4) {
                return arguments.length ? (e3 = t4, o2) : e3;
              }, o2.sort = function(e4) {
                return arguments.length ? (t3 = e4, o2) : t3;
              }, o2.startAngle = function(e4) {
                return arguments.length ? (r3 = e4, o2) : r3;
              }, o2.endAngle = function(e4) {
                return arguments.length ? (n2 = e4, o2) : n2;
              }, o2.padAngle = function(e4) {
                return arguments.length ? (a2 = e4, o2) : a2;
              }, o2;
            };
            var un = {};
            function fn(e3) {
              return e3.x;
            }
            function dn(e3) {
              return e3.y;
            }
            function hn(e3, t3, r3) {
              e3.y0 = t3, e3.y = r3;
            }
            i.layout.stack = function() {
              var e3 = E, t3 = gn, r3 = mn, n2 = hn, a2 = fn, o2 = dn;
              function l2(s2, c2) {
                if (!(h2 = s2.length)) return s2;
                var u2 = s2.map(function(t4, r4) {
                  return e3.call(l2, t4, r4);
                }), f2 = u2.map(function(e4) {
                  return e4.map(function(e5, t4) {
                    return [a2.call(l2, e5, t4), o2.call(l2, e5, t4)];
                  });
                }), d2 = t3.call(l2, f2, c2);
                u2 = i.permute(u2, d2), f2 = i.permute(f2, d2);
                var h2, p2, v2, g2, m2 = r3.call(l2, f2, c2), y2 = u2[0].length;
                for (v2 = 0; v2 < y2; ++v2) for (n2.call(l2, u2[0][v2], g2 = m2[v2], f2[0][v2][1]), p2 = 1; p2 < h2; ++p2) n2.call(l2, u2[p2][v2], g2 += f2[p2 - 1][v2][1], f2[p2][v2][1]);
                return s2;
              }
              return l2.values = function(t4) {
                return arguments.length ? (e3 = t4, l2) : e3;
              }, l2.order = function(e4) {
                return arguments.length ? (t3 = "function" == typeof e4 ? e4 : pn.get(e4) || gn, l2) : t3;
              }, l2.offset = function(e4) {
                return arguments.length ? (r3 = "function" == typeof e4 ? e4 : vn.get(e4) || mn, l2) : r3;
              }, l2.x = function(e4) {
                return arguments.length ? (a2 = e4, l2) : a2;
              }, l2.y = function(e4) {
                return arguments.length ? (o2 = e4, l2) : o2;
              }, l2.out = function(e4) {
                return arguments.length ? (n2 = e4, l2) : n2;
              }, l2;
            };
            var pn = i.map({ "inside-out": function(e3) {
              var t3, r3, n2 = e3.length, a2 = e3.map(yn), o2 = e3.map(xn), l2 = i.range(n2).sort(function(e4, t4) {
                return a2[e4] - a2[t4];
              }), s2 = 0, c2 = 0, u2 = [], f2 = [];
              for (t3 = 0; t3 < n2; ++t3) r3 = l2[t3], s2 < c2 ? (s2 += o2[r3], u2.push(r3)) : (c2 += o2[r3], f2.push(r3));
              return f2.reverse().concat(u2);
            }, reverse: function(e3) {
              return i.range(e3.length).reverse();
            }, default: gn }), vn = i.map({ silhouette: function(e3) {
              var t3, r3, n2, a2 = e3.length, i2 = e3[0].length, o2 = [], l2 = 0, s2 = [];
              for (r3 = 0; r3 < i2; ++r3) {
                for (t3 = 0, n2 = 0; t3 < a2; t3++) n2 += e3[t3][r3][1];
                n2 > l2 && (l2 = n2), o2.push(n2);
              }
              for (r3 = 0; r3 < i2; ++r3) s2[r3] = (l2 - o2[r3]) / 2;
              return s2;
            }, wiggle: function(e3) {
              var t3, r3, n2, a2, i2, o2, l2, s2, c2, u2 = e3.length, f2 = e3[0], d2 = f2.length, h2 = [];
              for (h2[0] = s2 = c2 = 0, r3 = 1; r3 < d2; ++r3) {
                for (t3 = 0, a2 = 0; t3 < u2; ++t3) a2 += e3[t3][r3][1];
                for (t3 = 0, i2 = 0, l2 = f2[r3][0] - f2[r3 - 1][0]; t3 < u2; ++t3) {
                  for (n2 = 0, o2 = (e3[t3][r3][1] - e3[t3][r3 - 1][1]) / (2 * l2); n2 < t3; ++n2) o2 += (e3[n2][r3][1] - e3[n2][r3 - 1][1]) / l2;
                  i2 += o2 * e3[t3][r3][1];
                }
                h2[r3] = s2 -= a2 ? i2 / a2 * l2 : 0, s2 < c2 && (c2 = s2);
              }
              for (r3 = 0; r3 < d2; ++r3) h2[r3] -= c2;
              return h2;
            }, expand: function(e3) {
              var t3, r3, n2, a2 = e3.length, i2 = e3[0].length, o2 = 1 / a2, l2 = [];
              for (r3 = 0; r3 < i2; ++r3) {
                for (t3 = 0, n2 = 0; t3 < a2; t3++) n2 += e3[t3][r3][1];
                if (n2) for (t3 = 0; t3 < a2; t3++) e3[t3][r3][1] /= n2;
                else for (t3 = 0; t3 < a2; t3++) e3[t3][r3][1] = o2;
              }
              for (r3 = 0; r3 < i2; ++r3) l2[r3] = 0;
              return l2;
            }, zero: mn });
            function gn(e3) {
              return i.range(e3.length);
            }
            function mn(e3) {
              for (var t3 = -1, r3 = e3[0].length, n2 = []; ++t3 < r3; ) n2[t3] = 0;
              return n2;
            }
            function yn(e3) {
              for (var t3, r3 = 1, n2 = 0, a2 = e3[0][1], i2 = e3.length; r3 < i2; ++r3) (t3 = e3[r3][1]) > a2 && (n2 = r3, a2 = t3);
              return n2;
            }
            function xn(e3) {
              return e3.reduce(bn, 0);
            }
            function bn(e3, t3) {
              return e3 + t3[1];
            }
            function _n(e3, t3) {
              return wn(e3, Math.ceil(Math.log(t3.length) / Math.LN2 + 1));
            }
            function wn(e3, t3) {
              for (var r3 = -1, n2 = +e3[0], a2 = (e3[1] - n2) / t3, i2 = []; ++r3 <= t3; ) i2[r3] = a2 * r3 + n2;
              return i2;
            }
            function Tn(e3) {
              return [i.min(e3), i.max(e3)];
            }
            function Mn(e3, t3) {
              return e3.value - t3.value;
            }
            function kn(e3, t3) {
              var r3 = e3._pack_next;
              e3._pack_next = t3, t3._pack_prev = e3, t3._pack_next = r3, r3._pack_prev = t3;
            }
            function An(e3, t3) {
              e3._pack_next = t3, t3._pack_prev = e3;
            }
            function Ln(e3, t3) {
              var r3 = t3.x - e3.x, n2 = t3.y - e3.y, a2 = e3.r + t3.r;
              return 0.999 * a2 * a2 > r3 * r3 + n2 * n2;
            }
            function Sn(e3) {
              if ((t3 = e3.children) && (s2 = t3.length)) {
                var t3, r3, n2, a2, i2, o2, l2, s2, c2 = 1 / 0, u2 = -1 / 0, f2 = 1 / 0, d2 = -1 / 0;
                if (t3.forEach(Cn), (r3 = t3[0]).x = -r3.r, r3.y = 0, x2(r3), s2 > 1 && ((n2 = t3[1]).x = n2.r, n2.y = 0, x2(n2), s2 > 2)) for (Pn(r3, n2, a2 = t3[2]), x2(a2), kn(r3, a2), r3._pack_prev = a2, kn(a2, n2), n2 = r3._pack_next, i2 = 3; i2 < s2; i2++) {
                  Pn(r3, n2, a2 = t3[i2]);
                  var h2 = 0, p2 = 1, v2 = 1;
                  for (o2 = n2._pack_next; o2 !== n2; o2 = o2._pack_next, p2++) if (Ln(o2, a2)) {
                    h2 = 1;
                    break;
                  }
                  if (1 == h2) for (l2 = r3._pack_prev; l2 !== o2._pack_prev && !Ln(l2, a2); l2 = l2._pack_prev, v2++) ;
                  h2 ? (p2 < v2 || p2 == v2 && n2.r < r3.r ? An(r3, n2 = o2) : An(r3 = l2, n2), i2--) : (kn(r3, a2), n2 = a2, x2(a2));
                }
                var g2 = (c2 + u2) / 2, m2 = (f2 + d2) / 2, y2 = 0;
                for (i2 = 0; i2 < s2; i2++) (a2 = t3[i2]).x -= g2, a2.y -= m2, y2 = Math.max(y2, a2.r + Math.sqrt(a2.x * a2.x + a2.y * a2.y));
                e3.r = y2, t3.forEach(On);
              }
              function x2(e4) {
                c2 = Math.min(e4.x - e4.r, c2), u2 = Math.max(e4.x + e4.r, u2), f2 = Math.min(e4.y - e4.r, f2), d2 = Math.max(e4.y + e4.r, d2);
              }
            }
            function Cn(e3) {
              e3._pack_next = e3._pack_prev = e3;
            }
            function On(e3) {
              delete e3._pack_next, delete e3._pack_prev;
            }
            function Dn(e3, t3, r3, n2) {
              var a2 = e3.children;
              if (e3.x = t3 += n2 * e3.x, e3.y = r3 += n2 * e3.y, e3.r *= n2, a2) for (var i2 = -1, o2 = a2.length; ++i2 < o2; ) Dn(a2[i2], t3, r3, n2);
            }
            function Pn(e3, t3, r3) {
              var n2 = e3.r + r3.r, a2 = t3.x - e3.x, i2 = t3.y - e3.y;
              if (n2 && (a2 || i2)) {
                var o2 = t3.r + r3.r, l2 = a2 * a2 + i2 * i2, s2 = 0.5 + ((n2 *= n2) - (o2 *= o2)) / (2 * l2), c2 = Math.sqrt(Math.max(0, 2 * o2 * (n2 + l2) - (n2 -= l2) * n2 - o2 * o2)) / (2 * l2);
                r3.x = e3.x + s2 * a2 + c2 * i2, r3.y = e3.y + s2 * i2 - c2 * a2;
              } else r3.x = e3.x + n2, r3.y = e3.y;
            }
            function zn(e3, t3) {
              return e3.parent == t3.parent ? 1 : 2;
            }
            function In(e3) {
              var t3 = e3.children;
              return t3.length ? t3[0] : e3.t;
            }
            function En(e3) {
              var t3, r3 = e3.children;
              return (t3 = r3.length) ? r3[t3 - 1] : e3.t;
            }
            function Rn(e3, t3, r3) {
              var n2 = r3 / (t3.i - e3.i);
              t3.c -= n2, t3.s += r3, e3.c += n2, t3.z += r3, t3.m += r3;
            }
            function Nn(e3, t3, r3) {
              return e3.a.parent === t3.parent ? e3.a : r3;
            }
            function Fn(e3) {
              var t3 = e3.children;
              return t3 && t3.length ? Fn(t3[0]) : e3;
            }
            function Hn(e3) {
              var t3, r3 = e3.children;
              return r3 && (t3 = r3.length) ? Hn(r3[t3 - 1]) : e3;
            }
            function Bn(e3) {
              return { x: e3.x, y: e3.y, dx: e3.dx, dy: e3.dy };
            }
            function jn(e3, t3) {
              var r3 = e3.x + t3[3], n2 = e3.y + t3[0], a2 = e3.dx - t3[1] - t3[3], i2 = e3.dy - t3[0] - t3[2];
              return a2 < 0 && (r3 += a2 / 2, a2 = 0), i2 < 0 && (n2 += i2 / 2, i2 = 0), { x: r3, y: n2, dx: a2, dy: i2 };
            }
            function Yn(e3) {
              var t3 = e3[0], r3 = e3[e3.length - 1];
              return t3 < r3 ? [t3, r3] : [r3, t3];
            }
            function Vn(e3) {
              return e3.rangeExtent ? e3.rangeExtent() : Yn(e3.range());
            }
            function Un(e3, t3, r3, n2) {
              var a2 = r3(e3[0], e3[1]), i2 = n2(t3[0], t3[1]);
              return function(e4) {
                return i2(a2(e4));
              };
            }
            function qn(e3, t3) {
              var r3, n2 = 0, a2 = e3.length - 1, i2 = e3[n2], o2 = e3[a2];
              return o2 < i2 && (r3 = n2, n2 = a2, a2 = r3, r3 = i2, i2 = o2, o2 = r3), e3[n2] = t3.floor(i2), e3[a2] = t3.ceil(o2), e3;
            }
            function Gn(e3) {
              return e3 ? { floor: function(t3) {
                return Math.floor(t3 / e3) * e3;
              }, ceil: function(t3) {
                return Math.ceil(t3 / e3) * e3;
              } } : Zn;
            }
            i.layout.histogram = function() {
              var e3 = true, t3 = Number, r3 = Tn, n2 = _n;
              function a2(a3, o2) {
                for (var l2, s2, c2 = [], u2 = a3.map(t3, this), f2 = r3.call(this, u2, o2), d2 = n2.call(this, f2, u2, o2), h2 = (o2 = -1, u2.length), p2 = d2.length - 1, v2 = e3 ? 1 : 1 / h2; ++o2 < p2; ) (l2 = c2[o2] = []).dx = d2[o2 + 1] - (l2.x = d2[o2]), l2.y = 0;
                if (p2 > 0) for (o2 = -1; ++o2 < h2; ) (s2 = u2[o2]) >= f2[0] && s2 <= f2[1] && ((l2 = c2[i.bisect(d2, s2, 1, p2) - 1]).y += v2, l2.push(a3[o2]));
                return c2;
              }
              return a2.value = function(e4) {
                return arguments.length ? (t3 = e4, a2) : t3;
              }, a2.range = function(e4) {
                return arguments.length ? (r3 = gt(e4), a2) : r3;
              }, a2.bins = function(e4) {
                return arguments.length ? (n2 = "number" == typeof e4 ? function(t4) {
                  return wn(t4, e4);
                } : gt(e4), a2) : n2;
              }, a2.frequency = function(t4) {
                return arguments.length ? (e3 = !!t4, a2) : e3;
              }, a2;
            }, i.layout.pack = function() {
              var e3, t3 = i.layout.hierarchy().sort(Mn), r3 = 0, n2 = [1, 1];
              function a2(a3, i2) {
                var o2 = t3.call(this, a3, i2), l2 = o2[0], s2 = n2[0], c2 = n2[1], u2 = null == e3 ? Math.sqrt : "function" == typeof e3 ? e3 : function() {
                  return e3;
                };
                if (l2.x = l2.y = 0, an(l2, function(e4) {
                  e4.r = +u2(e4.value);
                }), an(l2, Sn), r3) {
                  var f2 = r3 * (e3 ? 1 : Math.max(2 * l2.r / s2, 2 * l2.r / c2)) / 2;
                  an(l2, function(e4) {
                    e4.r += f2;
                  }), an(l2, Sn), an(l2, function(e4) {
                    e4.r -= f2;
                  });
                }
                return Dn(l2, s2 / 2, c2 / 2, e3 ? 1 : 1 / Math.max(2 * l2.r / s2, 2 * l2.r / c2)), o2;
              }
              return a2.size = function(e4) {
                return arguments.length ? (n2 = e4, a2) : n2;
              }, a2.radius = function(t4) {
                return arguments.length ? (e3 = null == t4 || "function" == typeof t4 ? t4 : +t4, a2) : e3;
              }, a2.padding = function(e4) {
                return arguments.length ? (r3 = +e4, a2) : r3;
              }, rn(a2, t3);
            }, i.layout.tree = function() {
              var e3 = i.layout.hierarchy().sort(null).value(null), t3 = zn, r3 = [1, 1], n2 = null;
              function a2(a3, i2) {
                var c2 = e3.call(this, a3, i2), u2 = c2[0], f2 = function(e4) {
                  for (var t4, r4 = { A: null, children: [e4] }, n3 = [r4]; null != (t4 = n3.pop()); ) for (var a4, i3 = t4.children, o3 = 0, l3 = i3.length; o3 < l3; ++o3) n3.push((i3[o3] = a4 = { _: i3[o3], parent: t4, children: (a4 = i3[o3].children) && a4.slice() || [], A: null, a: null, z: 0, m: 0, c: 0, s: 0, t: null, i: o3 }).a = a4);
                  return r4.children[0];
                }(u2);
                if (an(f2, o2), f2.parent.m = -f2.z, nn(f2, l2), n2) nn(u2, s2);
                else {
                  var d2 = u2, h2 = u2, p2 = u2;
                  nn(u2, function(e4) {
                    e4.x < d2.x && (d2 = e4), e4.x > h2.x && (h2 = e4), e4.depth > p2.depth && (p2 = e4);
                  });
                  var v2 = t3(d2, h2) / 2 - d2.x, g2 = r3[0] / (h2.x + t3(h2, d2) / 2 + v2), m2 = r3[1] / (p2.depth || 1);
                  nn(u2, function(e4) {
                    e4.x = (e4.x + v2) * g2, e4.y = e4.depth * m2;
                  });
                }
                return c2;
              }
              function o2(e4) {
                var r4 = e4.children, n3 = e4.parent.children, a3 = e4.i ? n3[e4.i - 1] : null;
                if (r4.length) {
                  !function(e5) {
                    for (var t4, r5 = 0, n4 = 0, a4 = e5.children, i3 = a4.length; --i3 >= 0; ) (t4 = a4[i3]).z += r5, t4.m += r5, r5 += t4.s + (n4 += t4.c);
                  }(e4);
                  var i2 = (r4[0].z + r4[r4.length - 1].z) / 2;
                  a3 ? (e4.z = a3.z + t3(e4._, a3._), e4.m = e4.z - i2) : e4.z = i2;
                } else a3 && (e4.z = a3.z + t3(e4._, a3._));
                e4.parent.A = function(e5, r5, n4) {
                  if (r5) {
                    for (var a4, i3 = e5, o3 = e5, l3 = r5, s3 = i3.parent.children[0], c2 = i3.m, u2 = o3.m, f2 = l3.m, d2 = s3.m; l3 = En(l3), i3 = In(i3), l3 && i3; ) s3 = In(s3), (o3 = En(o3)).a = e5, (a4 = l3.z + f2 - i3.z - c2 + t3(l3._, i3._)) > 0 && (Rn(Nn(l3, e5, n4), e5, a4), c2 += a4, u2 += a4), f2 += l3.m, c2 += i3.m, d2 += s3.m, u2 += o3.m;
                    l3 && !En(o3) && (o3.t = l3, o3.m += f2 - u2), i3 && !In(s3) && (s3.t = i3, s3.m += c2 - d2, n4 = e5);
                  }
                  return n4;
                }(e4, a3, e4.parent.A || n3[0]);
              }
              function l2(e4) {
                e4._.x = e4.z + e4.parent.m, e4.m += e4.parent.m;
              }
              function s2(e4) {
                e4.x *= r3[0], e4.y = e4.depth * r3[1];
              }
              return a2.separation = function(e4) {
                return arguments.length ? (t3 = e4, a2) : t3;
              }, a2.size = function(e4) {
                return arguments.length ? (n2 = null == (r3 = e4) ? s2 : null, a2) : n2 ? null : r3;
              }, a2.nodeSize = function(e4) {
                return arguments.length ? (n2 = null == (r3 = e4) ? null : s2, a2) : n2 ? r3 : null;
              }, rn(a2, e3);
            }, i.layout.cluster = function() {
              var e3 = i.layout.hierarchy().sort(null).value(null), t3 = zn, r3 = [1, 1], n2 = false;
              function a2(a3, o2) {
                var l2, s2 = e3.call(this, a3, o2), c2 = s2[0], u2 = 0;
                an(c2, function(e4) {
                  var r4 = e4.children;
                  r4 && r4.length ? (e4.x = function(e5) {
                    return e5.reduce(function(e6, t4) {
                      return e6 + t4.x;
                    }, 0) / e5.length;
                  }(r4), e4.y = function(e5) {
                    return 1 + i.max(e5, function(e6) {
                      return e6.y;
                    });
                  }(r4)) : (e4.x = l2 ? u2 += t3(e4, l2) : 0, e4.y = 0, l2 = e4);
                });
                var f2 = Fn(c2), d2 = Hn(c2), h2 = f2.x - t3(f2, d2) / 2, p2 = d2.x + t3(d2, f2) / 2;
                return an(c2, n2 ? function(e4) {
                  e4.x = (e4.x - c2.x) * r3[0], e4.y = (c2.y - e4.y) * r3[1];
                } : function(e4) {
                  e4.x = (e4.x - h2) / (p2 - h2) * r3[0], e4.y = (1 - (c2.y ? e4.y / c2.y : 1)) * r3[1];
                }), s2;
              }
              return a2.separation = function(e4) {
                return arguments.length ? (t3 = e4, a2) : t3;
              }, a2.size = function(e4) {
                return arguments.length ? (n2 = null == (r3 = e4), a2) : n2 ? null : r3;
              }, a2.nodeSize = function(e4) {
                return arguments.length ? (n2 = null != (r3 = e4), a2) : n2 ? r3 : null;
              }, rn(a2, e3);
            }, i.layout.treemap = function() {
              var e3, t3 = i.layout.hierarchy(), r3 = Math.round, n2 = [1, 1], a2 = null, o2 = Bn, l2 = false, s2 = "squarify", c2 = 0.5 * (1 + Math.sqrt(5));
              function u2(e4, t4) {
                for (var r4, n3, a3 = -1, i2 = e4.length; ++a3 < i2; ) n3 = (r4 = e4[a3]).value * (t4 < 0 ? 0 : t4), r4.area = isNaN(n3) || n3 <= 0 ? 0 : n3;
              }
              function f2(e4) {
                var t4 = e4.children;
                if (t4 && t4.length) {
                  var r4, n3, a3, i2 = o2(e4), l3 = [], c3 = t4.slice(), d3 = 1 / 0, v3 = "slice" === s2 ? i2.dx : "dice" === s2 ? i2.dy : "slice-dice" === s2 ? 1 & e4.depth ? i2.dy : i2.dx : Math.min(i2.dx, i2.dy);
                  for (u2(c3, i2.dx * i2.dy / e4.value), l3.area = 0; (a3 = c3.length) > 0; ) l3.push(r4 = c3[a3 - 1]), l3.area += r4.area, "squarify" !== s2 || (n3 = h2(l3, v3)) <= d3 ? (c3.pop(), d3 = n3) : (l3.area -= l3.pop().area, p2(l3, v3, i2, false), v3 = Math.min(i2.dx, i2.dy), l3.length = l3.area = 0, d3 = 1 / 0);
                  l3.length && (p2(l3, v3, i2, true), l3.length = l3.area = 0), t4.forEach(f2);
                }
              }
              function d2(e4) {
                var t4 = e4.children;
                if (t4 && t4.length) {
                  var r4, n3 = o2(e4), a3 = t4.slice(), i2 = [];
                  for (u2(a3, n3.dx * n3.dy / e4.value), i2.area = 0; r4 = a3.pop(); ) i2.push(r4), i2.area += r4.area, null != r4.z && (p2(i2, r4.z ? n3.dx : n3.dy, n3, !a3.length), i2.length = i2.area = 0);
                  t4.forEach(d2);
                }
              }
              function h2(e4, t4) {
                for (var r4, n3 = e4.area, a3 = 0, i2 = 1 / 0, o3 = -1, l3 = e4.length; ++o3 < l3; ) (r4 = e4[o3].area) && (r4 < i2 && (i2 = r4), r4 > a3 && (a3 = r4));
                return t4 *= t4, (n3 *= n3) ? Math.max(t4 * a3 * c2 / n3, n3 / (t4 * i2 * c2)) : 1 / 0;
              }
              function p2(e4, t4, n3, a3) {
                var i2, o3 = -1, l3 = e4.length, s3 = n3.x, c3 = n3.y, u3 = t4 ? r3(e4.area / t4) : 0;
                if (t4 == n3.dx) {
                  for ((a3 || u3 > n3.dy) && (u3 = n3.dy); ++o3 < l3; ) (i2 = e4[o3]).x = s3, i2.y = c3, i2.dy = u3, s3 += i2.dx = Math.min(n3.x + n3.dx - s3, u3 ? r3(i2.area / u3) : 0);
                  i2.z = true, i2.dx += n3.x + n3.dx - s3, n3.y += u3, n3.dy -= u3;
                } else {
                  for ((a3 || u3 > n3.dx) && (u3 = n3.dx); ++o3 < l3; ) (i2 = e4[o3]).x = s3, i2.y = c3, i2.dx = u3, c3 += i2.dy = Math.min(n3.y + n3.dy - c3, u3 ? r3(i2.area / u3) : 0);
                  i2.z = false, i2.dy += n3.y + n3.dy - c3, n3.x += u3, n3.dx -= u3;
                }
              }
              function v2(r4) {
                var a3 = e3 || t3(r4), i2 = a3[0];
                return i2.x = i2.y = 0, i2.value ? (i2.dx = n2[0], i2.dy = n2[1]) : i2.dx = i2.dy = 0, e3 && t3.revalue(i2), u2([i2], i2.dx * i2.dy / i2.value), (e3 ? d2 : f2)(i2), l2 && (e3 = a3), a3;
              }
              return v2.size = function(e4) {
                return arguments.length ? (n2 = e4, v2) : n2;
              }, v2.padding = function(e4) {
                if (!arguments.length) return a2;
                function t4(t5) {
                  return jn(t5, e4);
                }
                var r4;
                return o2 = null == (a2 = e4) ? Bn : "function" == (r4 = typeof e4) ? function(t5) {
                  var r5 = e4.call(v2, t5, t5.depth);
                  return null == r5 ? Bn(t5) : jn(t5, "number" == typeof r5 ? [r5, r5, r5, r5] : r5);
                } : "number" === r4 ? (e4 = [e4, e4, e4, e4], t4) : t4, v2;
              }, v2.round = function(e4) {
                return arguments.length ? (r3 = e4 ? Math.round : Number, v2) : r3 != Number;
              }, v2.sticky = function(t4) {
                return arguments.length ? (l2 = t4, e3 = null, v2) : l2;
              }, v2.ratio = function(e4) {
                return arguments.length ? (c2 = e4, v2) : c2;
              }, v2.mode = function(e4) {
                return arguments.length ? (s2 = e4 + "", v2) : s2;
              }, rn(v2, t3);
            }, i.random = { normal: function(e3, t3) {
              var r3 = arguments.length;
              return r3 < 2 && (t3 = 1), r3 < 1 && (e3 = 0), function() {
                var r4, n2, a2;
                do {
                  a2 = (r4 = 2 * Math.random() - 1) * r4 + (n2 = 2 * Math.random() - 1) * n2;
                } while (!a2 || a2 > 1);
                return e3 + t3 * r4 * Math.sqrt(-2 * Math.log(a2) / a2);
              };
            }, logNormal: function() {
              var e3 = i.random.normal.apply(i, arguments);
              return function() {
                return Math.exp(e3());
              };
            }, bates: function(e3) {
              var t3 = i.random.irwinHall(e3);
              return function() {
                return t3() / e3;
              };
            }, irwinHall: function(e3) {
              return function() {
                for (var t3 = 0, r3 = 0; r3 < e3; r3++) t3 += Math.random();
                return t3;
              };
            } }, i.scale = {};
            var Zn = { floor: E, ceil: E };
            function Wn(e3, t3, r3, n2) {
              var a2 = [], o2 = [], l2 = 0, s2 = Math.min(e3.length, t3.length) - 1;
              for (e3[s2] < e3[0] && (e3 = e3.slice().reverse(), t3 = t3.slice().reverse()); ++l2 <= s2; ) a2.push(r3(e3[l2 - 1], e3[l2])), o2.push(n2(t3[l2 - 1], t3[l2]));
              return function(t4) {
                var r4 = i.bisect(e3, t4, 1, s2) - 1;
                return o2[r4](a2[r4](t4));
              };
            }
            function Jn(e3, t3, r3, n2) {
              var a2, i2;
              function o2() {
                var o3 = Math.min(e3.length, t3.length) > 2 ? Wn : Un, s2 = n2 ? qr : Ur;
                return a2 = o3(e3, t3, s2, r3), i2 = o3(t3, e3, s2, Tr), l2;
              }
              function l2(e4) {
                return a2(e4);
              }
              return l2.invert = function(e4) {
                return i2(e4);
              }, l2.domain = function(t4) {
                return arguments.length ? (e3 = t4.map(Number), o2()) : e3;
              }, l2.range = function(e4) {
                return arguments.length ? (t3 = e4, o2()) : t3;
              }, l2.rangeRound = function(e4) {
                return l2.range(e4).interpolate(Nr);
              }, l2.clamp = function(e4) {
                return arguments.length ? (n2 = e4, o2()) : n2;
              }, l2.interpolate = function(e4) {
                return arguments.length ? (r3 = e4, o2()) : r3;
              }, l2.ticks = function(t4) {
                return $n(e3, t4);
              }, l2.tickFormat = function(t4, r4) {
                return d3_scale_linearTickFormat(e3, t4, r4);
              }, l2.nice = function(t4) {
                return Kn(e3, t4), o2();
              }, l2.copy = function() {
                return Jn(e3, t3, r3, n2);
              }, o2();
            }
            function Xn(e3, t3) {
              return i.rebind(e3, t3, "range", "rangeRound", "interpolate", "clamp");
            }
            function Kn(e3, t3) {
              return qn(e3, Gn(Qn(e3, t3)[2])), qn(e3, Gn(Qn(e3, t3)[2])), e3;
            }
            function Qn(e3, t3) {
              null == t3 && (t3 = 10);
              var r3 = Yn(e3), n2 = r3[1] - r3[0], a2 = Math.pow(10, Math.floor(Math.log(n2 / t3) / Math.LN10)), i2 = t3 / n2 * a2;
              return i2 <= 0.15 ? a2 *= 10 : i2 <= 0.35 ? a2 *= 5 : i2 <= 0.75 && (a2 *= 2), r3[0] = Math.ceil(r3[0] / a2) * a2, r3[1] = Math.floor(r3[1] / a2) * a2 + 0.5 * a2, r3[2] = a2, r3;
            }
            function $n(e3, t3) {
              return i.range.apply(i, Qn(e3, t3));
            }
            function ea(e3, t3, r3, n2) {
              function a2(e4) {
                return (r3 ? Math.log(e4 < 0 ? 0 : e4) : -Math.log(e4 > 0 ? 0 : -e4)) / Math.log(t3);
              }
              function i2(e4) {
                return r3 ? Math.pow(t3, e4) : -Math.pow(t3, -e4);
              }
              function o2(t4) {
                return e3(a2(t4));
              }
              return o2.invert = function(t4) {
                return i2(e3.invert(t4));
              }, o2.domain = function(t4) {
                return arguments.length ? (r3 = t4[0] >= 0, e3.domain((n2 = t4.map(Number)).map(a2)), o2) : n2;
              }, o2.base = function(r4) {
                return arguments.length ? (t3 = +r4, e3.domain(n2.map(a2)), o2) : t3;
              }, o2.nice = function() {
                var t4 = qn(n2.map(a2), r3 ? Math : ta);
                return e3.domain(t4), n2 = t4.map(i2), o2;
              }, o2.ticks = function() {
                var e4 = Yn(n2), o3 = [], l2 = e4[0], s2 = e4[1], c2 = Math.floor(a2(l2)), u2 = Math.ceil(a2(s2)), f2 = t3 % 1 ? 2 : t3;
                if (isFinite(u2 - c2)) {
                  if (r3) {
                    for (; c2 < u2; c2++) for (var d2 = 1; d2 < f2; d2++) o3.push(i2(c2) * d2);
                    o3.push(i2(c2));
                  } else for (o3.push(i2(c2)); c2++ < u2; ) for (d2 = f2 - 1; d2 > 0; d2--) o3.push(i2(c2) * d2);
                  for (c2 = 0; o3[c2] < l2; c2++) ;
                  for (u2 = o3.length; o3[u2 - 1] > s2; u2--) ;
                  o3 = o3.slice(c2, u2);
                }
                return o3;
              }, o2.copy = function() {
                return ea(e3.copy(), t3, r3, n2);
              }, Xn(o2, e3);
            }
            i.scale.linear = function() {
              return Jn([0, 1], [0, 1], Tr, false);
            }, i.scale.log = function() {
              return ea(i.scale.linear().domain([0, 1]), 10, true, [1, 10]);
            };
            var ta = { floor: function(e3) {
              return -Math.ceil(-e3);
            }, ceil: function(e3) {
              return -Math.floor(-e3);
            } };
            function ra(e3, t3, r3) {
              var n2 = na(t3), a2 = na(1 / t3);
              function i2(t4) {
                return e3(n2(t4));
              }
              return i2.invert = function(t4) {
                return a2(e3.invert(t4));
              }, i2.domain = function(t4) {
                return arguments.length ? (e3.domain((r3 = t4.map(Number)).map(n2)), i2) : r3;
              }, i2.ticks = function(e4) {
                return $n(r3, e4);
              }, i2.tickFormat = function(e4, t4) {
                return d3_scale_linearTickFormat(r3, e4, t4);
              }, i2.nice = function(e4) {
                return i2.domain(Kn(r3, e4));
              }, i2.exponent = function(o2) {
                return arguments.length ? (n2 = na(t3 = o2), a2 = na(1 / t3), e3.domain(r3.map(n2)), i2) : t3;
              }, i2.copy = function() {
                return ra(e3.copy(), t3, r3);
              }, Xn(i2, e3);
            }
            function na(e3) {
              return function(t3) {
                return t3 < 0 ? -Math.pow(-t3, e3) : Math.pow(t3, e3);
              };
            }
            function aa(e3, t3) {
              var r3, n2, a2;
              function o2(a3) {
                return n2[((r3.get(a3) || ("range" === t3.t ? r3.set(a3, e3.push(a3)) : NaN)) - 1) % n2.length];
              }
              function l2(t4, r4) {
                return i.range(e3.length).map(function(e4) {
                  return t4 + r4 * e4;
                });
              }
              return o2.domain = function(n3) {
                if (!arguments.length) return e3;
                e3 = [], r3 = new M();
                for (var a3, i2 = -1, l3 = n3.length; ++i2 < l3; ) r3.has(a3 = n3[i2]) || r3.set(a3, e3.push(a3));
                return o2[t3.t].apply(o2, t3.a);
              }, o2.range = function(e4) {
                return arguments.length ? (n2 = e4, a2 = 0, t3 = { t: "range", a: arguments }, o2) : n2;
              }, o2.rangePoints = function(r4, i2) {
                arguments.length < 2 && (i2 = 0);
                var s2 = r4[0], c2 = r4[1], u2 = e3.length < 2 ? (s2 = (s2 + c2) / 2, 0) : (c2 - s2) / (e3.length - 1 + i2);
                return n2 = l2(s2 + u2 * i2 / 2, u2), a2 = 0, t3 = { t: "rangePoints", a: arguments }, o2;
              }, o2.rangeRoundPoints = function(r4, i2) {
                arguments.length < 2 && (i2 = 0);
                var s2 = r4[0], c2 = r4[1], u2 = e3.length < 2 ? (s2 = c2 = Math.round((s2 + c2) / 2), 0) : (c2 - s2) / (e3.length - 1 + i2) | 0;
                return n2 = l2(s2 + Math.round(u2 * i2 / 2 + (c2 - s2 - (e3.length - 1 + i2) * u2) / 2), u2), a2 = 0, t3 = { t: "rangeRoundPoints", a: arguments }, o2;
              }, o2.rangeBands = function(r4, i2, s2) {
                arguments.length < 2 && (i2 = 0), arguments.length < 3 && (s2 = i2);
                var c2 = r4[1] < r4[0], u2 = r4[c2 - 0], f2 = (r4[1 - c2] - u2) / (e3.length - i2 + 2 * s2);
                return n2 = l2(u2 + f2 * s2, f2), c2 && n2.reverse(), a2 = f2 * (1 - i2), t3 = { t: "rangeBands", a: arguments }, o2;
              }, o2.rangeRoundBands = function(r4, i2, s2) {
                arguments.length < 2 && (i2 = 0), arguments.length < 3 && (s2 = i2);
                var c2 = r4[1] < r4[0], u2 = r4[c2 - 0], f2 = r4[1 - c2], d2 = Math.floor((f2 - u2) / (e3.length - i2 + 2 * s2));
                return n2 = l2(u2 + Math.round((f2 - u2 - (e3.length - i2) * d2) / 2), d2), c2 && n2.reverse(), a2 = Math.round(d2 * (1 - i2)), t3 = { t: "rangeRoundBands", a: arguments }, o2;
              }, o2.rangeBand = function() {
                return a2;
              }, o2.rangeExtent = function() {
                return Yn(t3.a[0]);
              }, o2.copy = function() {
                return aa(e3, t3);
              }, o2.domain(e3);
            }
            i.scale.pow = function() {
              return ra(i.scale.linear(), 1, [0, 1]);
            }, i.scale.sqrt = function() {
              return i.scale.pow().exponent(0.5);
            }, i.scale.ordinal = function() {
              return aa([], { t: "range", a: [[]] });
            }, i.scale.category10 = function() {
              return i.scale.ordinal().range(ia);
            }, i.scale.category20 = function() {
              return i.scale.ordinal().range(oa);
            }, i.scale.category20b = function() {
              return i.scale.ordinal().range(la);
            }, i.scale.category20c = function() {
              return i.scale.ordinal().range(sa);
            };
            var ia = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(lt), oa = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(lt), la = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(lt), sa = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(lt);
            function ca(e3, t3) {
              var r3;
              function n2() {
                var n3 = 0, o2 = t3.length;
                for (r3 = []; ++n3 < o2; ) r3[n3 - 1] = i.quantile(e3, n3 / o2);
                return a2;
              }
              function a2(e4) {
                if (!isNaN(e4 = +e4)) return t3[i.bisect(r3, e4)];
              }
              return a2.domain = function(t4) {
                return arguments.length ? (e3 = t4.map(m).filter(y).sort(g), n2()) : e3;
              }, a2.range = function(e4) {
                return arguments.length ? (t3 = e4, n2()) : t3;
              }, a2.quantiles = function() {
                return r3;
              }, a2.invertExtent = function(n3) {
                return (n3 = t3.indexOf(n3)) < 0 ? [NaN, NaN] : [n3 > 0 ? r3[n3 - 1] : e3[0], n3 < r3.length ? r3[n3] : e3[e3.length - 1]];
              }, a2.copy = function() {
                return ca(e3, t3);
              }, n2();
            }
            function ua(e3, t3, r3) {
              var n2, a2;
              function i2(t4) {
                return r3[Math.max(0, Math.min(a2, Math.floor(n2 * (t4 - e3))))];
              }
              function o2() {
                return n2 = r3.length / (t3 - e3), a2 = r3.length - 1, i2;
              }
              return i2.domain = function(r4) {
                return arguments.length ? (e3 = +r4[0], t3 = +r4[r4.length - 1], o2()) : [e3, t3];
              }, i2.range = function(e4) {
                return arguments.length ? (r3 = e4, o2()) : r3;
              }, i2.invertExtent = function(t4) {
                return [t4 = (t4 = r3.indexOf(t4)) < 0 ? NaN : t4 / n2 + e3, t4 + 1 / n2];
              }, i2.copy = function() {
                return ua(e3, t3, r3);
              }, o2();
            }
            function fa(e3, t3) {
              function r3(r4) {
                if (r4 <= r4) return t3[i.bisect(e3, r4)];
              }
              return r3.domain = function(t4) {
                return arguments.length ? (e3 = t4, r3) : e3;
              }, r3.range = function(e4) {
                return arguments.length ? (t3 = e4, r3) : t3;
              }, r3.invertExtent = function(r4) {
                return r4 = t3.indexOf(r4), [e3[r4 - 1], e3[r4]];
              }, r3.copy = function() {
                return fa(e3, t3);
              }, r3;
            }
            function da(e3) {
              function t3(e4) {
                return +e4;
              }
              return t3.invert = t3, t3.domain = t3.range = function(r3) {
                return arguments.length ? (e3 = r3.map(t3), t3) : e3;
              }, t3.ticks = function(t4) {
                return $n(e3, t4);
              }, t3.tickFormat = function(t4, r3) {
                return d3_scale_linearTickFormat(e3, t4, r3);
              }, t3.copy = function() {
                return da(e3);
              }, t3;
            }
            function ha() {
              return 0;
            }
            i.scale.quantile = function() {
              return ca([], []);
            }, i.scale.quantize = function() {
              return ua(0, 1, [0, 1]);
            }, i.scale.threshold = function() {
              return fa([0.5], [0, 1]);
            }, i.scale.identity = function() {
              return da([0, 1]);
            }, i.svg = {}, i.svg.arc = function() {
              var e3 = va, t3 = ga, r3 = ha, n2 = pa, a2 = ma, i2 = ya, o2 = xa;
              function l2() {
                var l3 = Math.max(0, +e3.apply(this, arguments)), c2 = Math.max(0, +t3.apply(this, arguments)), u2 = a2.apply(this, arguments) - ze, f2 = i2.apply(this, arguments) - ze, d2 = Math.abs(f2 - u2), h2 = u2 > f2 ? 0 : 1;
                if (c2 < l3 && (p2 = c2, c2 = l3, l3 = p2), d2 >= Pe) return s2(c2, h2) + (l3 ? s2(l3, 1 - h2) : "") + "Z";
                var p2, v2, g2, m2, y2, x2, b2, _2, w2, T2, M2, k2, A2 = 0, L2 = 0, S2 = [];
                if ((m2 = (+o2.apply(this, arguments) || 0) / 2) && (g2 = n2 === pa ? Math.sqrt(l3 * l3 + c2 * c2) : +n2.apply(this, arguments), h2 || (L2 *= -1), c2 && (L2 = Re(g2 / c2 * Math.sin(m2))), l3 && (A2 = Re(g2 / l3 * Math.sin(m2)))), c2) {
                  y2 = c2 * Math.cos(u2 + L2), x2 = c2 * Math.sin(u2 + L2), b2 = c2 * Math.cos(f2 - L2), _2 = c2 * Math.sin(f2 - L2);
                  var C2 = Math.abs(f2 - u2 - 2 * L2) <= Oe ? 0 : 1;
                  if (L2 && ba(y2, x2, b2, _2) === h2 ^ C2) {
                    var O2 = (u2 + f2) / 2;
                    y2 = c2 * Math.cos(O2), x2 = c2 * Math.sin(O2), b2 = _2 = null;
                  }
                } else y2 = x2 = 0;
                if (l3) {
                  w2 = l3 * Math.cos(f2 - A2), T2 = l3 * Math.sin(f2 - A2), M2 = l3 * Math.cos(u2 + A2), k2 = l3 * Math.sin(u2 + A2);
                  var D2 = Math.abs(u2 - f2 + 2 * A2) <= Oe ? 0 : 1;
                  if (A2 && ba(w2, T2, M2, k2) === 1 - h2 ^ D2) {
                    var P2 = (u2 + f2) / 2;
                    w2 = l3 * Math.cos(P2), T2 = l3 * Math.sin(P2), M2 = k2 = null;
                  }
                } else w2 = T2 = 0;
                if (d2 > Se && (p2 = Math.min(Math.abs(c2 - l3) / 2, +r3.apply(this, arguments))) > 1e-3) {
                  v2 = l3 < c2 ^ h2 ? 0 : 1;
                  var z2 = p2, I2 = p2;
                  if (d2 < Oe) {
                    var E2 = null == M2 ? [w2, T2] : null == b2 ? [y2, x2] : It([y2, x2], [M2, k2], [b2, _2], [w2, T2]), R2 = y2 - E2[0], N2 = x2 - E2[1], F2 = b2 - E2[0], H2 = _2 - E2[1], B2 = 1 / Math.sin(Math.acos((R2 * F2 + N2 * H2) / (Math.sqrt(R2 * R2 + N2 * N2) * Math.sqrt(F2 * F2 + H2 * H2))) / 2), j2 = Math.sqrt(E2[0] * E2[0] + E2[1] * E2[1]);
                    I2 = Math.min(p2, (l3 - j2) / (B2 - 1)), z2 = Math.min(p2, (c2 - j2) / (B2 + 1));
                  }
                  if (null != b2) {
                    var Y2 = _a(null == M2 ? [w2, T2] : [M2, k2], [y2, x2], c2, z2, h2), V2 = _a([b2, _2], [w2, T2], c2, z2, h2);
                    p2 === z2 ? S2.push("M", Y2[0], "A", z2, ",", z2, " 0 0,", v2, " ", Y2[1], "A", c2, ",", c2, " 0 ", 1 - h2 ^ ba(Y2[1][0], Y2[1][1], V2[1][0], V2[1][1]), ",", h2, " ", V2[1], "A", z2, ",", z2, " 0 0,", v2, " ", V2[0]) : S2.push("M", Y2[0], "A", z2, ",", z2, " 0 1,", v2, " ", V2[0]);
                  } else S2.push("M", y2, ",", x2);
                  if (null != M2) {
                    var U2 = _a([y2, x2], [M2, k2], l3, -I2, h2), q2 = _a([w2, T2], null == b2 ? [y2, x2] : [b2, _2], l3, -I2, h2);
                    p2 === I2 ? S2.push("L", q2[0], "A", I2, ",", I2, " 0 0,", v2, " ", q2[1], "A", l3, ",", l3, " 0 ", h2 ^ ba(q2[1][0], q2[1][1], U2[1][0], U2[1][1]), ",", 1 - h2, " ", U2[1], "A", I2, ",", I2, " 0 0,", v2, " ", U2[0]) : S2.push("L", q2[0], "A", I2, ",", I2, " 0 0,", v2, " ", U2[0]);
                  } else S2.push("L", w2, ",", T2);
                } else S2.push("M", y2, ",", x2), null != b2 && S2.push("A", c2, ",", c2, " 0 ", C2, ",", h2, " ", b2, ",", _2), S2.push("L", w2, ",", T2), null != M2 && S2.push("A", l3, ",", l3, " 0 ", D2, ",", 1 - h2, " ", M2, ",", k2);
                return S2.push("Z"), S2.join("");
              }
              function s2(e4, t4) {
                return "M0," + e4 + "A" + e4 + "," + e4 + " 0 1," + t4 + " 0," + -e4 + "A" + e4 + "," + e4 + " 0 1," + t4 + " 0," + e4;
              }
              return l2.innerRadius = function(t4) {
                return arguments.length ? (e3 = gt(t4), l2) : e3;
              }, l2.outerRadius = function(e4) {
                return arguments.length ? (t3 = gt(e4), l2) : t3;
              }, l2.cornerRadius = function(e4) {
                return arguments.length ? (r3 = gt(e4), l2) : r3;
              }, l2.padRadius = function(e4) {
                return arguments.length ? (n2 = e4 == pa ? pa : gt(e4), l2) : n2;
              }, l2.startAngle = function(e4) {
                return arguments.length ? (a2 = gt(e4), l2) : a2;
              }, l2.endAngle = function(e4) {
                return arguments.length ? (i2 = gt(e4), l2) : i2;
              }, l2.padAngle = function(e4) {
                return arguments.length ? (o2 = gt(e4), l2) : o2;
              }, l2.centroid = function() {
                var r4 = (+e3.apply(this, arguments) + +t3.apply(this, arguments)) / 2, n3 = (+a2.apply(this, arguments) + +i2.apply(this, arguments)) / 2 - ze;
                return [Math.cos(n3) * r4, Math.sin(n3) * r4];
              }, l2;
            };
            var pa = "auto";
            function va(e3) {
              return e3.innerRadius;
            }
            function ga(e3) {
              return e3.outerRadius;
            }
            function ma(e3) {
              return e3.startAngle;
            }
            function ya(e3) {
              return e3.endAngle;
            }
            function xa(e3) {
              return e3 && e3.padAngle;
            }
            function ba(e3, t3, r3, n2) {
              return (e3 - r3) * t3 - (t3 - n2) * e3 > 0 ? 0 : 1;
            }
            function _a(e3, t3, r3, n2, a2) {
              var i2 = e3[0] - t3[0], o2 = e3[1] - t3[1], l2 = (a2 ? n2 : -n2) / Math.sqrt(i2 * i2 + o2 * o2), s2 = l2 * o2, c2 = -l2 * i2, u2 = e3[0] + s2, f2 = e3[1] + c2, d2 = t3[0] + s2, h2 = t3[1] + c2, p2 = (u2 + d2) / 2, v2 = (f2 + h2) / 2, g2 = d2 - u2, m2 = h2 - f2, y2 = g2 * g2 + m2 * m2, x2 = r3 - n2, b2 = u2 * h2 - d2 * f2, _2 = (m2 < 0 ? -1 : 1) * Math.sqrt(Math.max(0, x2 * x2 * y2 - b2 * b2)), w2 = (b2 * m2 - g2 * _2) / y2, T2 = (-b2 * g2 - m2 * _2) / y2, M2 = (b2 * m2 + g2 * _2) / y2, k2 = (-b2 * g2 + m2 * _2) / y2, A2 = w2 - p2, L2 = T2 - v2, S2 = M2 - p2, C2 = k2 - v2;
              return A2 * A2 + L2 * L2 > S2 * S2 + C2 * C2 && (w2 = M2, T2 = k2), [[w2 - s2, T2 - c2], [w2 * r3 / x2, T2 * r3 / x2]];
            }
            function wa() {
              return true;
            }
            function Ta(e3) {
              var t3 = St, r3 = Ct, n2 = wa, a2 = ka, i2 = a2.key, o2 = 0.7;
              function l2(i3) {
                var l3, s2 = [], c2 = [], u2 = -1, f2 = i3.length, d2 = gt(t3), h2 = gt(r3);
                function p2() {
                  s2.push("M", a2(e3(c2), o2));
                }
                for (; ++u2 < f2; ) n2.call(this, l3 = i3[u2], u2) ? c2.push([+d2.call(this, l3, u2), +h2.call(this, l3, u2)]) : c2.length && (p2(), c2 = []);
                return c2.length && p2(), s2.length ? s2.join("") : null;
              }
              return l2.x = function(e4) {
                return arguments.length ? (t3 = e4, l2) : t3;
              }, l2.y = function(e4) {
                return arguments.length ? (r3 = e4, l2) : r3;
              }, l2.defined = function(e4) {
                return arguments.length ? (n2 = e4, l2) : n2;
              }, l2.interpolate = function(e4) {
                return arguments.length ? (i2 = "function" == typeof e4 ? a2 = e4 : (a2 = Ma.get(e4) || ka).key, l2) : i2;
              }, l2.tension = function(e4) {
                return arguments.length ? (o2 = e4, l2) : o2;
              }, l2;
            }
            i.svg.line = function() {
              return Ta(E);
            };
            var Ma = i.map({ linear: ka, "linear-closed": Aa, step: function(e3) {
              for (var t3 = 0, r3 = e3.length, n2 = e3[0], a2 = [n2[0], ",", n2[1]]; ++t3 < r3; ) a2.push("H", (n2[0] + (n2 = e3[t3])[0]) / 2, "V", n2[1]);
              return r3 > 1 && a2.push("H", n2[0]), a2.join("");
            }, "step-before": La, "step-after": Sa, basis: Da, "basis-open": function(e3) {
              if (e3.length < 4) return ka(e3);
              for (var t3, r3 = [], n2 = -1, a2 = e3.length, i2 = [0], o2 = [0]; ++n2 < 3; ) t3 = e3[n2], i2.push(t3[0]), o2.push(t3[1]);
              for (r3.push(Pa(Ea, i2) + "," + Pa(Ea, o2)), --n2; ++n2 < a2; ) t3 = e3[n2], i2.shift(), i2.push(t3[0]), o2.shift(), o2.push(t3[1]), Ra(r3, i2, o2);
              return r3.join("");
            }, "basis-closed": function(e3) {
              for (var t3, r3, n2 = -1, a2 = e3.length, i2 = a2 + 4, o2 = [], l2 = []; ++n2 < 4; ) r3 = e3[n2 % a2], o2.push(r3[0]), l2.push(r3[1]);
              for (t3 = [Pa(Ea, o2), ",", Pa(Ea, l2)], --n2; ++n2 < i2; ) r3 = e3[n2 % a2], o2.shift(), o2.push(r3[0]), l2.shift(), l2.push(r3[1]), Ra(t3, o2, l2);
              return t3.join("");
            }, bundle: function(e3, t3) {
              var r3 = e3.length - 1;
              if (r3) for (var n2, a2, i2 = e3[0][0], o2 = e3[0][1], l2 = e3[r3][0] - i2, s2 = e3[r3][1] - o2, c2 = -1; ++c2 <= r3; ) a2 = c2 / r3, (n2 = e3[c2])[0] = t3 * n2[0] + (1 - t3) * (i2 + a2 * l2), n2[1] = t3 * n2[1] + (1 - t3) * (o2 + a2 * s2);
              return Da(e3);
            }, cardinal: function(e3, t3) {
              return e3.length < 3 ? ka(e3) : e3[0] + Ca(e3, Oa(e3, t3));
            }, "cardinal-open": function(e3, t3) {
              return e3.length < 4 ? ka(e3) : e3[1] + Ca(e3.slice(1, -1), Oa(e3, t3));
            }, "cardinal-closed": function(e3, t3) {
              return e3.length < 3 ? Aa(e3) : e3[0] + Ca((e3.push(e3[0]), e3), Oa([e3[e3.length - 2]].concat(e3, [e3[1]]), t3));
            }, monotone: function(e3) {
              return e3.length < 3 ? ka(e3) : e3[0] + Ca(e3, function(e4) {
                for (var t3, r3, n2, a2, i2 = [], o2 = function(e5) {
                  for (var t4 = 0, r4 = e5.length - 1, n3 = [], a3 = e5[0], i3 = e5[1], o3 = n3[0] = Na(a3, i3); ++t4 < r4; ) n3[t4] = (o3 + (o3 = Na(a3 = i3, i3 = e5[t4 + 1]))) / 2;
                  return n3[t4] = o3, n3;
                }(e4), l2 = -1, s2 = e4.length - 1; ++l2 < s2; ) t3 = Na(e4[l2], e4[l2 + 1]), w(t3) < Se ? o2[l2] = o2[l2 + 1] = 0 : (a2 = (r3 = o2[l2] / t3) * r3 + (n2 = o2[l2 + 1] / t3) * n2) > 9 && (a2 = 3 * t3 / Math.sqrt(a2), o2[l2] = a2 * r3, o2[l2 + 1] = a2 * n2);
                for (l2 = -1; ++l2 <= s2; ) a2 = (e4[Math.min(s2, l2 + 1)][0] - e4[Math.max(0, l2 - 1)][0]) / (6 * (1 + o2[l2] * o2[l2])), i2.push([a2 || 0, o2[l2] * a2 || 0]);
                return i2;
              }(e3));
            } });
            function ka(e3) {
              return e3.length > 1 ? e3.join("L") : e3 + "Z";
            }
            function Aa(e3) {
              return e3.join("L") + "Z";
            }
            function La(e3) {
              for (var t3 = 0, r3 = e3.length, n2 = e3[0], a2 = [n2[0], ",", n2[1]]; ++t3 < r3; ) a2.push("V", (n2 = e3[t3])[1], "H", n2[0]);
              return a2.join("");
            }
            function Sa(e3) {
              for (var t3 = 0, r3 = e3.length, n2 = e3[0], a2 = [n2[0], ",", n2[1]]; ++t3 < r3; ) a2.push("H", (n2 = e3[t3])[0], "V", n2[1]);
              return a2.join("");
            }
            function Ca(e3, t3) {
              if (t3.length < 1 || e3.length != t3.length && e3.length != t3.length + 2) return ka(e3);
              var r3 = e3.length != t3.length, n2 = "", a2 = e3[0], i2 = e3[1], o2 = t3[0], l2 = o2, s2 = 1;
              if (r3 && (n2 += "Q" + (i2[0] - 2 * o2[0] / 3) + "," + (i2[1] - 2 * o2[1] / 3) + "," + i2[0] + "," + i2[1], a2 = e3[1], s2 = 2), t3.length > 1) {
                l2 = t3[1], i2 = e3[s2], s2++, n2 += "C" + (a2[0] + o2[0]) + "," + (a2[1] + o2[1]) + "," + (i2[0] - l2[0]) + "," + (i2[1] - l2[1]) + "," + i2[0] + "," + i2[1];
                for (var c2 = 2; c2 < t3.length; c2++, s2++) i2 = e3[s2], l2 = t3[c2], n2 += "S" + (i2[0] - l2[0]) + "," + (i2[1] - l2[1]) + "," + i2[0] + "," + i2[1];
              }
              if (r3) {
                var u2 = e3[s2];
                n2 += "Q" + (i2[0] + 2 * l2[0] / 3) + "," + (i2[1] + 2 * l2[1] / 3) + "," + u2[0] + "," + u2[1];
              }
              return n2;
            }
            function Oa(e3, t3) {
              for (var r3, n2 = [], a2 = (1 - t3) / 2, i2 = e3[0], o2 = e3[1], l2 = 1, s2 = e3.length; ++l2 < s2; ) r3 = i2, i2 = o2, o2 = e3[l2], n2.push([a2 * (o2[0] - r3[0]), a2 * (o2[1] - r3[1])]);
              return n2;
            }
            function Da(e3) {
              if (e3.length < 3) return ka(e3);
              var t3 = 1, r3 = e3.length, n2 = e3[0], a2 = n2[0], i2 = n2[1], o2 = [a2, a2, a2, (n2 = e3[1])[0]], l2 = [i2, i2, i2, n2[1]], s2 = [a2, ",", i2, "L", Pa(Ea, o2), ",", Pa(Ea, l2)];
              for (e3.push(e3[r3 - 1]); ++t3 <= r3; ) n2 = e3[t3], o2.shift(), o2.push(n2[0]), l2.shift(), l2.push(n2[1]), Ra(s2, o2, l2);
              return e3.pop(), s2.push("L", n2), s2.join("");
            }
            function Pa(e3, t3) {
              return e3[0] * t3[0] + e3[1] * t3[1] + e3[2] * t3[2] + e3[3] * t3[3];
            }
            Ma.forEach(function(e3, t3) {
              t3.key = e3, t3.closed = /-closed$/.test(e3);
            });
            var za = [0, 2 / 3, 1 / 3, 0], Ia = [0, 1 / 3, 2 / 3, 0], Ea = [0, 1 / 6, 2 / 3, 1 / 6];
            function Ra(e3, t3, r3) {
              e3.push("C", Pa(za, t3), ",", Pa(za, r3), ",", Pa(Ia, t3), ",", Pa(Ia, r3), ",", Pa(Ea, t3), ",", Pa(Ea, r3));
            }
            function Na(e3, t3) {
              return (t3[1] - e3[1]) / (t3[0] - e3[0]);
            }
            function Fa(e3) {
              for (var t3, r3, n2, a2 = -1, i2 = e3.length; ++a2 < i2; ) r3 = (t3 = e3[a2])[0], n2 = t3[1] - ze, t3[0] = r3 * Math.cos(n2), t3[1] = r3 * Math.sin(n2);
              return e3;
            }
            function Ha(e3) {
              var t3 = St, r3 = St, n2 = 0, a2 = Ct, i2 = wa, o2 = ka, l2 = o2.key, s2 = o2, c2 = "L", u2 = 0.7;
              function f2(l3) {
                var f3, d2, h2, p2 = [], v2 = [], g2 = [], m2 = -1, y2 = l3.length, x2 = gt(t3), b2 = gt(n2), _2 = t3 === r3 ? function() {
                  return d2;
                } : gt(r3), w2 = n2 === a2 ? function() {
                  return h2;
                } : gt(a2);
                function T2() {
                  p2.push("M", o2(e3(g2), u2), c2, s2(e3(v2.reverse()), u2), "Z");
                }
                for (; ++m2 < y2; ) i2.call(this, f3 = l3[m2], m2) ? (v2.push([d2 = +x2.call(this, f3, m2), h2 = +b2.call(this, f3, m2)]), g2.push([+_2.call(this, f3, m2), +w2.call(this, f3, m2)])) : v2.length && (T2(), v2 = [], g2 = []);
                return v2.length && T2(), p2.length ? p2.join("") : null;
              }
              return f2.x = function(e4) {
                return arguments.length ? (t3 = r3 = e4, f2) : r3;
              }, f2.x0 = function(e4) {
                return arguments.length ? (t3 = e4, f2) : t3;
              }, f2.x1 = function(e4) {
                return arguments.length ? (r3 = e4, f2) : r3;
              }, f2.y = function(e4) {
                return arguments.length ? (n2 = a2 = e4, f2) : a2;
              }, f2.y0 = function(e4) {
                return arguments.length ? (n2 = e4, f2) : n2;
              }, f2.y1 = function(e4) {
                return arguments.length ? (a2 = e4, f2) : a2;
              }, f2.defined = function(e4) {
                return arguments.length ? (i2 = e4, f2) : i2;
              }, f2.interpolate = function(e4) {
                return arguments.length ? (l2 = "function" == typeof e4 ? o2 = e4 : (o2 = Ma.get(e4) || ka).key, s2 = o2.reverse || o2, c2 = o2.closed ? "M" : "L", f2) : l2;
              }, f2.tension = function(e4) {
                return arguments.length ? (u2 = e4, f2) : u2;
              }, f2;
            }
            function Ba(e3) {
              return e3.source;
            }
            function ja(e3) {
              return e3.target;
            }
            function Ya(e3) {
              return e3.radius;
            }
            function Va(e3) {
              return [e3.x, e3.y];
            }
            function Ua() {
              return 64;
            }
            function qa() {
              return "circle";
            }
            function Ga(e3) {
              var t3 = Math.sqrt(e3 / Oe);
              return "M0," + t3 + "A" + t3 + "," + t3 + " 0 1,1 0," + -t3 + "A" + t3 + "," + t3 + " 0 1,1 0," + t3 + "Z";
            }
            i.svg.line.radial = function() {
              var e3 = Ta(Fa);
              return e3.radius = e3.x, delete e3.x, e3.angle = e3.y, delete e3.y, e3;
            }, La.reverse = Sa, Sa.reverse = La, i.svg.area = function() {
              return Ha(E);
            }, i.svg.area.radial = function() {
              var e3 = Ha(Fa);
              return e3.radius = e3.x, delete e3.x, e3.innerRadius = e3.x0, delete e3.x0, e3.outerRadius = e3.x1, delete e3.x1, e3.angle = e3.y, delete e3.y, e3.startAngle = e3.y0, delete e3.y0, e3.endAngle = e3.y1, delete e3.y1, e3;
            }, i.svg.chord = function() {
              var e3 = Ba, t3 = ja, r3 = Ya, n2 = ma, a2 = ya;
              function i2(r4, n3) {
                var a3, i3, c2 = o2(this, e3, r4, n3), u2 = o2(this, t3, r4, n3);
                return "M" + c2.p0 + l2(c2.r, c2.p1, c2.a1 - c2.a0) + (i3 = u2, ((a3 = c2).a0 == i3.a0 && a3.a1 == i3.a1 ? s2(c2.r, c2.p1, c2.r, c2.p0) : s2(c2.r, c2.p1, u2.r, u2.p0) + l2(u2.r, u2.p1, u2.a1 - u2.a0) + s2(u2.r, u2.p1, c2.r, c2.p0)) + "Z");
              }
              function o2(e4, t4, i3, o3) {
                var l3 = t4.call(e4, i3, o3), s3 = r3.call(e4, l3, o3), c2 = n2.call(e4, l3, o3) - ze, u2 = a2.call(e4, l3, o3) - ze;
                return { r: s3, a0: c2, a1: u2, p0: [s3 * Math.cos(c2), s3 * Math.sin(c2)], p1: [s3 * Math.cos(u2), s3 * Math.sin(u2)] };
              }
              function l2(e4, t4, r4) {
                return "A" + e4 + "," + e4 + " 0 " + +(r4 > Oe) + ",1 " + t4;
              }
              function s2(e4, t4, r4, n3) {
                return "Q 0,0 " + n3;
              }
              return i2.radius = function(e4) {
                return arguments.length ? (r3 = gt(e4), i2) : r3;
              }, i2.source = function(t4) {
                return arguments.length ? (e3 = gt(t4), i2) : e3;
              }, i2.target = function(e4) {
                return arguments.length ? (t3 = gt(e4), i2) : t3;
              }, i2.startAngle = function(e4) {
                return arguments.length ? (n2 = gt(e4), i2) : n2;
              }, i2.endAngle = function(e4) {
                return arguments.length ? (a2 = gt(e4), i2) : a2;
              }, i2;
            }, i.svg.diagonal = function() {
              var e3 = Ba, t3 = ja, r3 = Va;
              function n2(n3, a2) {
                var i2 = e3.call(this, n3, a2), o2 = t3.call(this, n3, a2), l2 = (i2.y + o2.y) / 2, s2 = [i2, { x: i2.x, y: l2 }, { x: o2.x, y: l2 }, o2];
                return "M" + (s2 = s2.map(r3))[0] + "C" + s2[1] + " " + s2[2] + " " + s2[3];
              }
              return n2.source = function(t4) {
                return arguments.length ? (e3 = gt(t4), n2) : e3;
              }, n2.target = function(e4) {
                return arguments.length ? (t3 = gt(e4), n2) : t3;
              }, n2.projection = function(e4) {
                return arguments.length ? (r3 = e4, n2) : r3;
              }, n2;
            }, i.svg.diagonal.radial = function() {
              var e3 = i.svg.diagonal(), t3 = Va, r3 = e3.projection;
              return e3.projection = function(e4) {
                return arguments.length ? r3(/* @__PURE__ */ function(e5) {
                  return function() {
                    var t4 = e5.apply(this, arguments), r4 = t4[0], n2 = t4[1] - ze;
                    return [r4 * Math.cos(n2), r4 * Math.sin(n2)];
                  };
                }(t3 = e4)) : t3;
              }, e3;
            }, i.svg.symbol = function() {
              var e3 = qa, t3 = Ua;
              function r3(r4, n2) {
                return (Za.get(e3.call(this, r4, n2)) || Ga)(t3.call(this, r4, n2));
              }
              return r3.type = function(t4) {
                return arguments.length ? (e3 = gt(t4), r3) : e3;
              }, r3.size = function(e4) {
                return arguments.length ? (t3 = gt(e4), r3) : t3;
              }, r3;
            };
            var Za = i.map({ circle: Ga, cross: function(e3) {
              var t3 = Math.sqrt(e3 / 5) / 2;
              return "M" + -3 * t3 + "," + -t3 + "H" + -t3 + "V" + -3 * t3 + "H" + t3 + "V" + -t3 + "H" + 3 * t3 + "V" + t3 + "H" + t3 + "V" + 3 * t3 + "H" + -t3 + "V" + t3 + "H" + -3 * t3 + "Z";
            }, diamond: function(e3) {
              var t3 = Math.sqrt(e3 / (2 * Ja)), r3 = t3 * Ja;
              return "M0," + -t3 + "L" + r3 + ",0 0," + t3 + " " + -r3 + ",0Z";
            }, square: function(e3) {
              var t3 = Math.sqrt(e3) / 2;
              return "M" + -t3 + "," + -t3 + "L" + t3 + "," + -t3 + " " + t3 + "," + t3 + " " + -t3 + "," + t3 + "Z";
            }, "triangle-down": function(e3) {
              var t3 = Math.sqrt(e3 / Wa), r3 = t3 * Wa / 2;
              return "M0," + r3 + "L" + t3 + "," + -r3 + " " + -t3 + "," + -r3 + "Z";
            }, "triangle-up": function(e3) {
              var t3 = Math.sqrt(e3 / Wa), r3 = t3 * Wa / 2;
              return "M0," + -r3 + "L" + t3 + "," + r3 + " " + -t3 + "," + r3 + "Z";
            } });
            i.svg.symbolTypes = Za.keys();
            var Wa = Math.sqrt(3), Ja = Math.tan(30 * Ie);
            K.transition = function(e3) {
              for (var t3, r3, n2 = $a || ++ri, a2 = ii(e3), i2 = [], o2 = ei || { time: Date.now(), ease: Pr, delay: 0, duration: 250 }, l2 = -1, s2 = this.length; ++l2 < s2; ) {
                i2.push(t3 = []);
                for (var c2 = this[l2], u2 = -1, f2 = c2.length; ++u2 < f2; ) (r3 = c2[u2]) && oi(r3, u2, a2, n2, o2), t3.push(r3);
              }
              return Qa(i2, a2, n2);
            }, K.interrupt = function(e3) {
              return this.each(null == e3 ? Xa : Ka(ii(e3)));
            };
            var Xa = Ka(ii());
            function Ka(e3) {
              return function() {
                var t3, r3, n2;
                (t3 = this[e3]) && (n2 = t3[r3 = t3.active]) && (n2.timer.c = null, n2.timer.t = NaN, --t3.count ? delete t3[r3] : delete this[e3], t3.active += 0.5, n2.event && n2.event.interrupt.call(this, this.__data__, n2.index));
              };
            }
            function Qa(e3, t3, r3) {
              return G(e3, ti), e3.namespace = t3, e3.id = r3, e3;
            }
            var $a, ei, ti = [], ri = 0;
            function ni(e3, t3, r3, n2) {
              var a2 = e3.id, i2 = e3.namespace;
              return ve(e3, "function" == typeof r3 ? function(e4, o2, l2) {
                e4[i2][a2].tween.set(t3, n2(r3.call(e4, e4.__data__, o2, l2)));
              } : (r3 = n2(r3), function(e4) {
                e4[i2][a2].tween.set(t3, r3);
              }));
            }
            function ai(e3) {
              return null == e3 && (e3 = ""), function() {
                this.textContent = e3;
              };
            }
            function ii(e3) {
              return null == e3 ? "__transition__" : "__transition_" + e3 + "__";
            }
            function oi(e3, t3, r3, n2, a2) {
              var i2, o2, l2, s2, c2, u2 = e3[r3] || (e3[r3] = { active: 0, count: 0 }), f2 = u2[n2];
              function d2(r4) {
                var a3 = u2.active, d3 = u2[a3];
                for (var p2 in d3 && (d3.timer.c = null, d3.timer.t = NaN, --u2.count, delete u2[a3], d3.event && d3.event.interrupt.call(e3, e3.__data__, d3.index)), u2) if (+p2 < n2) {
                  var v2 = u2[p2];
                  v2.timer.c = null, v2.timer.t = NaN, --u2.count, delete u2[p2];
                }
                o2.c = h2, Mt(function() {
                  return o2.c && h2(r4 || 1) && (o2.c = null, o2.t = NaN), 1;
                }, 0, i2), u2.active = n2, f2.event && f2.event.start.call(e3, e3.__data__, t3), c2 = [], f2.tween.forEach(function(r5, n3) {
                  (n3 = n3.call(e3, e3.__data__, t3)) && c2.push(n3);
                }), s2 = f2.ease, l2 = f2.duration;
              }
              function h2(a3) {
                for (var i3 = a3 / l2, o3 = s2(i3), d3 = c2.length; d3 > 0; ) c2[--d3].call(e3, o3);
                if (i3 >= 1) return f2.event && f2.event.end.call(e3, e3.__data__, t3), --u2.count ? delete u2[n2] : delete e3[r3], 1;
              }
              f2 || (i2 = a2.time, o2 = Mt(function(e4) {
                var t4 = f2.delay;
                if (o2.t = t4 + i2, t4 <= e4) return d2(e4 - t4);
                o2.c = d2;
              }, 0, i2), f2 = u2[n2] = { tween: new M(), time: i2, timer: o2, delay: a2.delay, duration: a2.duration, ease: a2.ease, index: t3 }, a2 = null, ++u2.count);
            }
            ti.call = K.call, ti.empty = K.empty, ti.node = K.node, ti.size = K.size, i.transition = function(e3, t3) {
              return e3 && e3.transition ? $a ? e3.transition(t3) : e3 : i.selection().transition(e3);
            }, i.transition.prototype = ti, ti.select = function(e3) {
              var t3, r3, n2, a2 = this.id, i2 = this.namespace, o2 = [];
              e3 = Q(e3);
              for (var l2 = -1, s2 = this.length; ++l2 < s2; ) {
                o2.push(t3 = []);
                for (var c2 = this[l2], u2 = -1, f2 = c2.length; ++u2 < f2; ) (n2 = c2[u2]) && (r3 = e3.call(n2, n2.__data__, u2, l2)) ? ("__data__" in n2 && (r3.__data__ = n2.__data__), oi(r3, u2, i2, a2, n2[i2][a2]), t3.push(r3)) : t3.push(null);
              }
              return Qa(o2, i2, a2);
            }, ti.selectAll = function(e3) {
              var t3, r3, n2, a2, i2, o2 = this.id, l2 = this.namespace, s2 = [];
              e3 = $(e3);
              for (var c2 = -1, u2 = this.length; ++c2 < u2; ) for (var f2 = this[c2], d2 = -1, h2 = f2.length; ++d2 < h2; ) if (n2 = f2[d2]) {
                i2 = n2[l2][o2], r3 = e3.call(n2, n2.__data__, d2, c2), s2.push(t3 = []);
                for (var p2 = -1, v2 = r3.length; ++p2 < v2; ) (a2 = r3[p2]) && oi(a2, p2, l2, o2, i2), t3.push(a2);
              }
              return Qa(s2, l2, o2);
            }, ti.filter = function(e3) {
              var t3, r3, n2 = [];
              "function" != typeof e3 && (e3 = he(e3));
              for (var a2 = 0, i2 = this.length; a2 < i2; a2++) {
                n2.push(t3 = []);
                for (var o2, l2 = 0, s2 = (o2 = this[a2]).length; l2 < s2; l2++) (r3 = o2[l2]) && e3.call(r3, r3.__data__, l2, a2) && t3.push(r3);
              }
              return Qa(n2, this.namespace, this.id);
            }, ti.tween = function(e3, t3) {
              var r3 = this.id, n2 = this.namespace;
              return arguments.length < 2 ? this.node()[n2][r3].tween.get(e3) : ve(this, null == t3 ? function(t4) {
                t4[n2][r3].tween.remove(e3);
              } : function(a2) {
                a2[n2][r3].tween.set(e3, t3);
              });
            }, ti.attr = function(e3, t3) {
              if (arguments.length < 2) {
                for (t3 in e3) this.attr(t3, e3[t3]);
                return this;
              }
              var r3 = "transform" == e3 ? Vr : Tr, n2 = i.ns.qualify(e3);
              function a2() {
                this.removeAttribute(n2);
              }
              function o2() {
                this.removeAttributeNS(n2.space, n2.local);
              }
              return ni(this, "attr." + e3, t3, n2.local ? function(e4) {
                return null == e4 ? o2 : (e4 += "", function() {
                  var t4, a3 = this.getAttributeNS(n2.space, n2.local);
                  return a3 !== e4 && (t4 = r3(a3, e4), function(e5) {
                    this.setAttributeNS(n2.space, n2.local, t4(e5));
                  });
                });
              } : function(e4) {
                return null == e4 ? a2 : (e4 += "", function() {
                  var t4, a3 = this.getAttribute(n2);
                  return a3 !== e4 && (t4 = r3(a3, e4), function(e5) {
                    this.setAttribute(n2, t4(e5));
                  });
                });
              });
            }, ti.attrTween = function(e3, t3) {
              var r3 = i.ns.qualify(e3);
              return this.tween("attr." + e3, r3.local ? function(e4, n2) {
                var a2 = t3.call(this, e4, n2, this.getAttributeNS(r3.space, r3.local));
                return a2 && function(e5) {
                  this.setAttributeNS(r3.space, r3.local, a2(e5));
                };
              } : function(e4, n2) {
                var a2 = t3.call(this, e4, n2, this.getAttribute(r3));
                return a2 && function(e5) {
                  this.setAttribute(r3, a2(e5));
                };
              });
            }, ti.style = function(e3, t3, r3) {
              var n2 = arguments.length;
              if (n2 < 3) {
                if ("string" != typeof e3) {
                  for (r3 in n2 < 2 && (t3 = ""), e3) this.style(r3, e3[r3], t3);
                  return this;
                }
                r3 = "";
              }
              function a2() {
                this.style.removeProperty(e3);
              }
              return ni(this, "style." + e3, t3, function(t4) {
                return null == t4 ? a2 : (t4 += "", function() {
                  var n3, a3 = u(this).getComputedStyle(this, null).getPropertyValue(e3);
                  return a3 !== t4 && (n3 = Tr(a3, t4), function(t5) {
                    this.style.setProperty(e3, n3(t5), r3);
                  });
                });
              });
            }, ti.styleTween = function(e3, t3, r3) {
              return arguments.length < 3 && (r3 = ""), this.tween("style." + e3, function(n2, a2) {
                var i2 = t3.call(this, n2, a2, u(this).getComputedStyle(this, null).getPropertyValue(e3));
                return i2 && function(t4) {
                  this.style.setProperty(e3, i2(t4), r3);
                };
              });
            }, ti.text = function(e3) {
              return ni(this, "text", e3, ai);
            }, ti.remove = function() {
              var e3 = this.namespace;
              return this.each("end.transition", function() {
                var t3;
                this[e3].count < 2 && (t3 = this.parentNode) && t3.removeChild(this);
              });
            }, ti.ease = function(e3) {
              var t3 = this.id, r3 = this.namespace;
              return arguments.length < 1 ? this.node()[r3][t3].ease : ("function" != typeof e3 && (e3 = i.ease.apply(i, arguments)), ve(this, function(n2) {
                n2[r3][t3].ease = e3;
              }));
            }, ti.delay = function(e3) {
              var t3 = this.id, r3 = this.namespace;
              return arguments.length < 1 ? this.node()[r3][t3].delay : ve(this, "function" == typeof e3 ? function(n2, a2, i2) {
                n2[r3][t3].delay = +e3.call(n2, n2.__data__, a2, i2);
              } : (e3 = +e3, function(n2) {
                n2[r3][t3].delay = e3;
              }));
            }, ti.duration = function(e3) {
              var t3 = this.id, r3 = this.namespace;
              return arguments.length < 1 ? this.node()[r3][t3].duration : ve(this, "function" == typeof e3 ? function(n2, a2, i2) {
                n2[r3][t3].duration = Math.max(1, e3.call(n2, n2.__data__, a2, i2));
              } : (e3 = Math.max(1, e3), function(n2) {
                n2[r3][t3].duration = e3;
              }));
            }, ti.each = function(e3, t3) {
              var r3 = this.id, n2 = this.namespace;
              if (arguments.length < 2) {
                var a2 = ei, o2 = $a;
                try {
                  $a = r3, ve(this, function(t4, a3, i2) {
                    ei = t4[n2][r3], e3.call(t4, t4.__data__, a3, i2);
                  });
                } finally {
                  ei = a2, $a = o2;
                }
              } else ve(this, function(a3) {
                var o3 = a3[n2][r3];
                (o3.event || (o3.event = i.dispatch("start", "end", "interrupt"))).on(e3, t3);
              });
              return this;
            }, ti.transition = function() {
              for (var e3, t3, r3, n2 = this.id, a2 = ++ri, i2 = this.namespace, o2 = [], l2 = 0, s2 = this.length; l2 < s2; l2++) {
                o2.push(e3 = []);
                for (var c2, u2 = 0, f2 = (c2 = this[l2]).length; u2 < f2; u2++) (t3 = c2[u2]) && oi(t3, u2, i2, a2, { time: (r3 = t3[i2][n2]).time, ease: r3.ease, delay: r3.delay + r3.duration, duration: r3.duration }), e3.push(t3);
              }
              return Qa(o2, i2, a2);
            }, i.svg.axis = function() {
              var e3, t3 = i.scale.linear(), r3 = li, n2 = 6, a2 = 6, o2 = 3, s2 = [10], c2 = null;
              function u2(l2) {
                l2.each(function() {
                  var l3, u3 = i.select(this), f2 = this.__chart__ || t3, d2 = this.__chart__ = t3.copy(), h2 = null == c2 ? d2.ticks ? d2.ticks.apply(d2, s2) : d2.domain() : c2, p2 = null == e3 ? d2.tickFormat ? d2.tickFormat.apply(d2, s2) : E : e3, v2 = u3.selectAll(".tick").data(h2, d2), g2 = v2.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Se), m2 = i.transition(v2.exit()).style("opacity", Se).remove(), y2 = i.transition(v2.order()).style("opacity", 1), x2 = Math.max(n2, 0) + o2, b2 = Vn(d2), _2 = u3.selectAll(".domain").data([0]), w2 = (_2.enter().append("path").attr("class", "domain"), i.transition(_2));
                  g2.append("line"), g2.append("text");
                  var T2, M2, k2, A2, L2 = g2.select("line"), S2 = y2.select("line"), C2 = v2.select("text").text(p2), O2 = g2.select("text"), D2 = y2.select("text"), P2 = "top" === r3 || "left" === r3 ? -1 : 1;
                  if ("bottom" === r3 || "top" === r3 ? (l3 = ci, T2 = "x", k2 = "y", M2 = "x2", A2 = "y2", C2.attr("dy", P2 < 0 ? "0em" : ".71em").style("text-anchor", "middle"), w2.attr("d", "M" + b2[0] + "," + P2 * a2 + "V0H" + b2[1] + "V" + P2 * a2)) : (l3 = ui, T2 = "y", k2 = "x", M2 = "y2", A2 = "x2", C2.attr("dy", ".32em").style("text-anchor", P2 < 0 ? "end" : "start"), w2.attr("d", "M" + P2 * a2 + "," + b2[0] + "H0V" + b2[1] + "H" + P2 * a2)), L2.attr(A2, P2 * n2), O2.attr(k2, P2 * x2), S2.attr(M2, 0).attr(A2, P2 * n2), D2.attr(T2, 0).attr(k2, P2 * x2), d2.rangeBand) {
                    var z2 = d2, I2 = z2.rangeBand() / 2;
                    f2 = d2 = function(e4) {
                      return z2(e4) + I2;
                    };
                  } else f2.rangeBand ? f2 = d2 : m2.call(l3, d2, f2);
                  g2.call(l3, f2, d2), y2.call(l3, d2, d2);
                });
              }
              return u2.scale = function(e4) {
                return arguments.length ? (t3 = e4, u2) : t3;
              }, u2.orient = function(e4) {
                return arguments.length ? (r3 = e4 in si ? e4 + "" : li, u2) : r3;
              }, u2.ticks = function() {
                return arguments.length ? (s2 = l(arguments), u2) : s2;
              }, u2.tickValues = function(e4) {
                return arguments.length ? (c2 = e4, u2) : c2;
              }, u2.tickFormat = function(t4) {
                return arguments.length ? (e3 = t4, u2) : e3;
              }, u2.tickSize = function(e4) {
                var t4 = arguments.length;
                return t4 ? (n2 = +e4, a2 = +arguments[t4 - 1], u2) : n2;
              }, u2.innerTickSize = function(e4) {
                return arguments.length ? (n2 = +e4, u2) : n2;
              }, u2.outerTickSize = function(e4) {
                return arguments.length ? (a2 = +e4, u2) : a2;
              }, u2.tickPadding = function(e4) {
                return arguments.length ? (o2 = +e4, u2) : o2;
              }, u2.tickSubdivide = function() {
                return arguments.length && u2;
              }, u2;
            };
            var li = "bottom", si = { top: 1, right: 1, bottom: 1, left: 1 };
            function ci(e3, t3, r3) {
              e3.attr("transform", function(e4) {
                var n2 = t3(e4);
                return "translate(" + (isFinite(n2) ? n2 : r3(e4)) + ",0)";
              });
            }
            function ui(e3, t3, r3) {
              e3.attr("transform", function(e4) {
                var n2 = t3(e4);
                return "translate(0," + (isFinite(n2) ? n2 : r3(e4)) + ")";
              });
            }
            i.svg.brush = function() {
              var e3, t3, r3 = U(d2, "brushstart", "brush", "brushend"), n2 = null, a2 = null, o2 = [0, 0], l2 = [0, 0], s2 = true, c2 = true, f2 = di[0];
              function d2(e4) {
                e4.each(function() {
                  var e5 = i.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", g2).on("touchstart.brush", g2), t4 = e5.selectAll(".background").data([0]);
                  t4.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), e5.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move");
                  var r4 = e5.selectAll(".resize").data(f2, E);
                  r4.exit().remove(), r4.enter().append("g").attr("class", function(e6) {
                    return "resize " + e6;
                  }).style("cursor", function(e6) {
                    return fi[e6];
                  }).append("rect").attr("x", function(e6) {
                    return /[ew]$/.test(e6) ? -3 : null;
                  }).attr("y", function(e6) {
                    return /^[ns]/.test(e6) ? -3 : null;
                  }).attr("width", 6).attr("height", 6).style("visibility", "hidden"), r4.style("display", d2.empty() ? "none" : null);
                  var o3, l3 = i.transition(e5), s3 = i.transition(t4);
                  n2 && (o3 = Vn(n2), s3.attr("x", o3[0]).attr("width", o3[1] - o3[0]), p2(l3)), a2 && (o3 = Vn(a2), s3.attr("y", o3[0]).attr("height", o3[1] - o3[0]), v2(l3)), h2(l3);
                });
              }
              function h2(e4) {
                e4.selectAll(".resize").attr("transform", function(e5) {
                  return "translate(" + o2[+/e$/.test(e5)] + "," + l2[+/^s/.test(e5)] + ")";
                });
              }
              function p2(e4) {
                e4.select(".extent").attr("x", o2[0]), e4.selectAll(".extent,.n>rect,.s>rect").attr("width", o2[1] - o2[0]);
              }
              function v2(e4) {
                e4.select(".extent").attr("y", l2[0]), e4.selectAll(".extent,.e>rect,.w>rect").attr("height", l2[1] - l2[0]);
              }
              function g2() {
                var f3, g3, m2 = this, y2 = i.select(i.event.target), x2 = r3.of(m2, arguments), b2 = i.select(m2), _2 = y2.datum(), w2 = !/^(n|s)$/.test(_2) && n2, T2 = !/^(e|w)$/.test(_2) && a2, M2 = y2.classed("extent"), k2 = Me(m2), A2 = i.mouse(m2), L2 = i.select(u(m2)).on("keydown.brush", function() {
                  32 == i.event.keyCode && (M2 || (f3 = null, A2[0] -= o2[1], A2[1] -= l2[1], M2 = 2), Y());
                }).on("keyup.brush", function() {
                  32 == i.event.keyCode && 2 == M2 && (A2[0] += o2[1], A2[1] += l2[1], M2 = 0, Y());
                });
                if (i.event.changedTouches ? L2.on("touchmove.brush", O2).on("touchend.brush", P2) : L2.on("mousemove.brush", O2).on("mouseup.brush", P2), b2.interrupt().selectAll("*").interrupt(), M2) A2[0] = o2[0] - A2[0], A2[1] = l2[0] - A2[1];
                else if (_2) {
                  var S2 = +/w$/.test(_2), C2 = +/^n/.test(_2);
                  g3 = [o2[1 - S2] - A2[0], l2[1 - C2] - A2[1]], A2[0] = o2[S2], A2[1] = l2[C2];
                } else i.event.altKey && (f3 = A2.slice());
                function O2() {
                  var e4 = i.mouse(m2), t4 = false;
                  g3 && (e4[0] += g3[0], e4[1] += g3[1]), M2 || (i.event.altKey ? (f3 || (f3 = [(o2[0] + o2[1]) / 2, (l2[0] + l2[1]) / 2]), A2[0] = o2[+(e4[0] < f3[0])], A2[1] = l2[+(e4[1] < f3[1])]) : f3 = null), w2 && D2(e4, n2, 0) && (p2(b2), t4 = true), T2 && D2(e4, a2, 1) && (v2(b2), t4 = true), t4 && (h2(b2), x2({ type: "brush", mode: M2 ? "move" : "resize" }));
                }
                function D2(r4, n3, a3) {
                  var i2, u2, d3 = Vn(n3), h3 = d3[0], p3 = d3[1], v3 = A2[a3], g4 = a3 ? l2 : o2, m3 = g4[1] - g4[0];
                  if (M2 && (h3 -= v3, p3 -= m3 + v3), i2 = (a3 ? c2 : s2) ? Math.max(h3, Math.min(p3, r4[a3])) : r4[a3], M2 ? u2 = (i2 += v3) + m3 : (f3 && (v3 = Math.max(h3, Math.min(p3, 2 * f3[a3] - i2))), v3 < i2 ? (u2 = i2, i2 = v3) : u2 = v3), g4[0] != i2 || g4[1] != u2) return a3 ? t3 = null : e3 = null, g4[0] = i2, g4[1] = u2, true;
                }
                function P2() {
                  O2(), b2.style("pointer-events", "all").selectAll(".resize").style("display", d2.empty() ? "none" : null), i.select("body").style("cursor", null), L2.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null), k2(), x2({ type: "brushend" });
                }
                b2.style("pointer-events", "none").selectAll(".resize").style("display", null), i.select("body").style("cursor", y2.style("cursor")), x2({ type: "brushstart" }), O2();
              }
              return d2.event = function(n3) {
                n3.each(function() {
                  var n4 = r3.of(this, arguments), a3 = { x: o2, y: l2, i: e3, j: t3 }, s3 = this.__chart__ || a3;
                  this.__chart__ = a3, $a ? i.select(this).transition().each("start.brush", function() {
                    e3 = s3.i, t3 = s3.j, o2 = s3.x, l2 = s3.y, n4({ type: "brushstart" });
                  }).tween("brush:brush", function() {
                    var r4 = Mr(o2, a3.x), i2 = Mr(l2, a3.y);
                    return e3 = t3 = null, function(e4) {
                      o2 = a3.x = r4(e4), l2 = a3.y = i2(e4), n4({ type: "brush", mode: "resize" });
                    };
                  }).each("end.brush", function() {
                    e3 = a3.i, t3 = a3.j, n4({ type: "brush", mode: "resize" }), n4({ type: "brushend" });
                  }) : (n4({ type: "brushstart" }), n4({ type: "brush", mode: "resize" }), n4({ type: "brushend" }));
                });
              }, d2.x = function(e4) {
                return arguments.length ? (f2 = di[!(n2 = e4) << 1 | !a2], d2) : n2;
              }, d2.y = function(e4) {
                return arguments.length ? (f2 = di[!n2 << 1 | !(a2 = e4)], d2) : a2;
              }, d2.clamp = function(e4) {
                return arguments.length ? (n2 && a2 ? (s2 = !!e4[0], c2 = !!e4[1]) : n2 ? s2 = !!e4 : a2 && (c2 = !!e4), d2) : n2 && a2 ? [s2, c2] : n2 ? s2 : a2 ? c2 : null;
              }, d2.extent = function(r4) {
                var i2, s3, c3, u2, f3;
                return arguments.length ? (n2 && (i2 = r4[0], s3 = r4[1], a2 && (i2 = i2[0], s3 = s3[0]), e3 = [i2, s3], n2.invert && (i2 = n2(i2), s3 = n2(s3)), s3 < i2 && (f3 = i2, i2 = s3, s3 = f3), i2 == o2[0] && s3 == o2[1] || (o2 = [i2, s3])), a2 && (c3 = r4[0], u2 = r4[1], n2 && (c3 = c3[1], u2 = u2[1]), t3 = [c3, u2], a2.invert && (c3 = a2(c3), u2 = a2(u2)), u2 < c3 && (f3 = c3, c3 = u2, u2 = f3), c3 == l2[0] && u2 == l2[1] || (l2 = [c3, u2])), d2) : (n2 && (e3 ? (i2 = e3[0], s3 = e3[1]) : (i2 = o2[0], s3 = o2[1], n2.invert && (i2 = n2.invert(i2), s3 = n2.invert(s3)), s3 < i2 && (f3 = i2, i2 = s3, s3 = f3))), a2 && (t3 ? (c3 = t3[0], u2 = t3[1]) : (c3 = l2[0], u2 = l2[1], a2.invert && (c3 = a2.invert(c3), u2 = a2.invert(u2)), u2 < c3 && (f3 = c3, c3 = u2, u2 = f3))), n2 && a2 ? [[i2, c3], [s3, u2]] : n2 ? [i2, s3] : a2 && [c3, u2]);
              }, d2.clear = function() {
                return d2.empty() || (o2 = [0, 0], l2 = [0, 0], e3 = t3 = null), d2;
              }, d2.empty = function() {
                return !!n2 && o2[0] == o2[1] || !!a2 && l2[0] == l2[1];
              }, i.rebind(d2, r3, "on");
            };
            var fi = { n: "ns-resize", e: "ew-resize", s: "ns-resize", w: "ew-resize", nw: "nwse-resize", ne: "nesw-resize", se: "nwse-resize", sw: "nesw-resize" }, di = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []];
            function hi(e3) {
              return JSON.parse(e3.responseText);
            }
            function pi(e3) {
              var t3 = s.createRange();
              return t3.selectNode(s.body), t3.createContextualFragment(e3.responseText);
            }
            i.text = mt(function(e3) {
              return e3.responseText;
            }), i.json = function(e3, t3) {
              return yt(e3, "application/json", hi, t3);
            }, i.html = function(e3, t3) {
              return yt(e3, "text/html", pi, t3);
            }, i.xml = mt(function(e3) {
              return e3.responseXML;
            }), void 0 === (a = "function" == typeof (n = i) ? n.call(t2, r2, t2, e2) : n) || (e2.exports = a);
          }).apply(self);
        }, 3229: function(e2, t2, r2) {
          r2.r(t2), r2.d(t2, { decode: function() {
            return l;
          }, encode: function() {
            return o;
          } });
          for (var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", a = "undefined" == typeof Uint8Array ? [] : new Uint8Array(256), i = 0; i < 64; i++) a[n.charCodeAt(i)] = i;
          var o = function(e3) {
            var t3, r3 = new Uint8Array(e3), a2 = r3.length, i2 = "";
            for (t3 = 0; t3 < a2; t3 += 3) i2 += n[r3[t3] >> 2], i2 += n[(3 & r3[t3]) << 4 | r3[t3 + 1] >> 4], i2 += n[(15 & r3[t3 + 1]) << 2 | r3[t3 + 2] >> 6], i2 += n[63 & r3[t3 + 2]];
            return a2 % 3 == 2 ? i2 = i2.substring(0, i2.length - 1) + "=" : a2 % 3 == 1 && (i2 = i2.substring(0, i2.length - 2) + "=="), i2;
          }, l = function(e3) {
            var t3, r3, n2, i2, o2, l2 = 0.75 * e3.length, s = e3.length, c = 0;
            "=" === e3[e3.length - 1] && (l2--, "=" === e3[e3.length - 2] && l2--);
            var u = new ArrayBuffer(l2), f = new Uint8Array(u);
            for (t3 = 0; t3 < s; t3 += 4) r3 = a[e3.charCodeAt(t3)], n2 = a[e3.charCodeAt(t3 + 1)], i2 = a[e3.charCodeAt(t3 + 2)], o2 = a[e3.charCodeAt(t3 + 3)], f[c++] = r3 << 2 | n2 >> 4, f[c++] = (15 & n2) << 4 | i2 >> 2, f[c++] = (3 & i2) << 6 | 63 & o2;
            return u;
          };
        }, 1070: function(e2) {
          e2.exports = function(e3) {
            var t2 = [];
            return t2.toString = function() {
              return this.map(function(t3) {
                var r2 = "", n = void 0 !== t3[5];
                return t3[4] && (r2 += "@supports (".concat(t3[4], ") {")), t3[2] && (r2 += "@media ".concat(t3[2], " {")), n && (r2 += "@layer".concat(t3[5].length > 0 ? " ".concat(t3[5]) : "", " {")), r2 += e3(t3), n && (r2 += "}"), t3[2] && (r2 += "}"), t3[4] && (r2 += "}"), r2;
              }).join("");
            }, t2.i = function(e4, r2, n, a, i) {
              "string" == typeof e4 && (e4 = [[null, e4, void 0]]);
              var o = {};
              if (n) for (var l = 0; l < this.length; l++) {
                var s = this[l][0];
                null != s && (o[s] = true);
              }
              for (var c = 0; c < e4.length; c++) {
                var u = [].concat(e4[c]);
                n && o[u[0]] || (void 0 !== i && (void 0 === u[5] || (u[1] = "@layer".concat(u[5].length > 0 ? " ".concat(u[5]) : "", " {").concat(u[1], "}")), u[5] = i), r2 && (u[2] ? (u[1] = "@media ".concat(u[2], " {").concat(u[1], "}"), u[2] = r2) : u[2] = r2), a && (u[4] ? (u[1] = "@supports (".concat(u[4], ") {").concat(u[1], "}"), u[4] = a) : u[4] = "".concat(a)), t2.push(u));
              }
            }, t2;
          };
        }, 2133: function(e2) {
          e2.exports = function(e3, t2) {
            return t2 || (t2 = {}), e3 ? (e3 = String(e3.__esModule ? e3.default : e3), /^['"].*['"]$/.test(e3) && (e3 = e3.slice(1, -1)), t2.hash && (e3 += t2.hash), /["'() \t\n]|(%20)/.test(e3) || t2.needQuotes ? '"'.concat(e3.replace(/"/g, '\\"').replace(/\n/g, "\\n"), '"') : e3) : e3;
          };
        }, 2413: function(e2) {
          e2.exports = function(e3) {
            return e3[1];
          };
        }, 6464: function(e2, t2, r2) {
          function n(e3, t3) {
            if ((r3 = (e3 = t3 ? e3.toExponential(t3 - 1) : e3.toExponential()).indexOf("e")) < 0) return null;
            var r3, n2 = e3.slice(0, r3);
            return [n2.length > 1 ? n2[0] + n2.slice(2) : n2, +e3.slice(r3 + 1)];
          }
          r2.d(t2, { GP: function() {
            return d;
          }, OE: function() {
            return v;
          } });
          var a, i = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
          function o(e3) {
            if (!(t3 = i.exec(e3))) throw new Error("invalid format: " + e3);
            var t3;
            return new l({ fill: t3[1], align: t3[2], sign: t3[3], symbol: t3[4], zero: t3[5], width: t3[6], comma: t3[7], precision: t3[8] && t3[8].slice(1), trim: t3[9], type: t3[10] });
          }
          function l(e3) {
            this.fill = void 0 === e3.fill ? " " : e3.fill + "", this.align = void 0 === e3.align ? ">" : e3.align + "", this.sign = void 0 === e3.sign ? "-" : e3.sign + "", this.symbol = void 0 === e3.symbol ? "" : e3.symbol + "", this.zero = !!e3.zero, this.width = void 0 === e3.width ? void 0 : +e3.width, this.comma = !!e3.comma, this.precision = void 0 === e3.precision ? void 0 : +e3.precision, this.trim = !!e3.trim, this.type = void 0 === e3.type ? "" : e3.type + "";
          }
          function s(e3, t3) {
            var r3 = n(e3, t3);
            if (!r3) return e3 + "";
            var a2 = r3[0], i2 = r3[1];
            return i2 < 0 ? "0." + new Array(-i2).join("0") + a2 : a2.length > i2 + 1 ? a2.slice(0, i2 + 1) + "." + a2.slice(i2 + 1) : a2 + new Array(i2 - a2.length + 2).join("0");
          }
          o.prototype = l.prototype, l.prototype.toString = function() {
            return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (void 0 === this.width ? "" : Math.max(1, 0 | this.width)) + (this.comma ? "," : "") + (void 0 === this.precision ? "" : "." + Math.max(0, 0 | this.precision)) + (this.trim ? "~" : "") + this.type;
          };
          var c = { "%": function(e3, t3) {
            return (100 * e3).toFixed(t3);
          }, b: function(e3) {
            return Math.round(e3).toString(2);
          }, c: function(e3) {
            return e3 + "";
          }, d: function(e3) {
            return Math.abs(e3 = Math.round(e3)) >= 1e21 ? e3.toLocaleString("en").replace(/,/g, "") : e3.toString(10);
          }, e: function(e3, t3) {
            return e3.toExponential(t3);
          }, f: function(e3, t3) {
            return e3.toFixed(t3);
          }, g: function(e3, t3) {
            return e3.toPrecision(t3);
          }, o: function(e3) {
            return Math.round(e3).toString(8);
          }, p: function(e3, t3) {
            return s(100 * e3, t3);
          }, r: s, s: function(e3, t3) {
            var r3 = n(e3, t3);
            if (!r3) return e3 + "";
            var i2 = r3[0], o2 = r3[1], l2 = o2 - (a = 3 * Math.max(-8, Math.min(8, Math.floor(o2 / 3)))) + 1, s2 = i2.length;
            return l2 === s2 ? i2 : l2 > s2 ? i2 + new Array(l2 - s2 + 1).join("0") : l2 > 0 ? i2.slice(0, l2) + "." + i2.slice(l2) : "0." + new Array(1 - l2).join("0") + n(e3, Math.max(0, t3 + l2 - 1))[0];
          }, X: function(e3) {
            return Math.round(e3).toString(16).toUpperCase();
          }, x: function(e3) {
            return Math.round(e3).toString(16);
          } };
          function u(e3) {
            return e3;
          }
          var f, d, h = Array.prototype.map, p = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
          function v(e3) {
            var t3, r3, i2 = void 0 === e3.grouping || void 0 === e3.thousands ? u : (t3 = h.call(e3.grouping, Number), r3 = e3.thousands + "", function(e4, n2) {
              for (var a2 = e4.length, i3 = [], o2 = 0, l3 = t3[0], s3 = 0; a2 > 0 && l3 > 0 && (s3 + l3 + 1 > n2 && (l3 = Math.max(1, n2 - s3)), i3.push(e4.substring(a2 -= l3, a2 + l3)), !((s3 += l3 + 1) > n2)); ) l3 = t3[o2 = (o2 + 1) % t3.length];
              return i3.reverse().join(r3);
            }), l2 = void 0 === e3.currency ? "" : e3.currency[0] + "", s2 = void 0 === e3.currency ? "" : e3.currency[1] + "", f2 = void 0 === e3.decimal ? "." : e3.decimal + "", d2 = void 0 === e3.numerals ? u : /* @__PURE__ */ function(e4) {
              return function(t4) {
                return t4.replace(/[0-9]/g, function(t5) {
                  return e4[+t5];
                });
              };
            }(h.call(e3.numerals, String)), v2 = void 0 === e3.percent ? "%" : e3.percent + "", g = void 0 === e3.minus ? "-" : e3.minus + "", m = void 0 === e3.nan ? "NaN" : e3.nan + "";
            function y(e4) {
              var t4 = (e4 = o(e4)).fill, r4 = e4.align, n2 = e4.sign, u2 = e4.symbol, h2 = e4.zero, y2 = e4.width, x = e4.comma, b = e4.precision, _ = e4.trim, w = e4.type;
              "n" === w ? (x = true, w = "g") : c[w] || (void 0 === b && (b = 12), _ = true, w = "g"), (h2 || "0" === t4 && "=" === r4) && (h2 = true, t4 = "0", r4 = "=");
              var T = "$" === u2 ? l2 : "#" === u2 && /[boxX]/.test(w) ? "0" + w.toLowerCase() : "", M = "$" === u2 ? s2 : /[%p]/.test(w) ? v2 : "", k = c[w], A = /[defgprs%]/.test(w);
              function L(e5) {
                var o2, l3, s3, c2 = T, u3 = M;
                if ("c" === w) u3 = k(e5) + u3, e5 = "";
                else {
                  var v3 = (e5 = +e5) < 0 || 1 / e5 < 0;
                  if (e5 = isNaN(e5) ? m : k(Math.abs(e5), b), _ && (e5 = function(e6) {
                    e: for (var t5, r5 = e6.length, n3 = 1, a2 = -1; n3 < r5; ++n3) switch (e6[n3]) {
                      case ".":
                        a2 = t5 = n3;
                        break;
                      case "0":
                        0 === a2 && (a2 = n3), t5 = n3;
                        break;
                      default:
                        if (!+e6[n3]) break e;
                        a2 > 0 && (a2 = 0);
                    }
                    return a2 > 0 ? e6.slice(0, a2) + e6.slice(t5 + 1) : e6;
                  }(e5)), v3 && 0 == +e5 && "+" !== n2 && (v3 = false), c2 = (v3 ? "(" === n2 ? n2 : g : "-" === n2 || "(" === n2 ? "" : n2) + c2, u3 = ("s" === w ? p[8 + a / 3] : "") + u3 + (v3 && "(" === n2 ? ")" : ""), A) {
                    for (o2 = -1, l3 = e5.length; ++o2 < l3; ) if (48 > (s3 = e5.charCodeAt(o2)) || s3 > 57) {
                      u3 = (46 === s3 ? f2 + e5.slice(o2 + 1) : e5.slice(o2)) + u3, e5 = e5.slice(0, o2);
                      break;
                    }
                  }
                }
                x && !h2 && (e5 = i2(e5, 1 / 0));
                var L2 = c2.length + e5.length + u3.length, S = L2 < y2 ? new Array(y2 - L2 + 1).join(t4) : "";
                switch (x && h2 && (e5 = i2(S + e5, S.length ? y2 - u3.length : 1 / 0), S = ""), r4) {
                  case "<":
                    e5 = c2 + e5 + u3 + S;
                    break;
                  case "=":
                    e5 = c2 + S + e5 + u3;
                    break;
                  case "^":
                    e5 = S.slice(0, L2 = S.length >> 1) + c2 + e5 + u3 + S.slice(L2);
                    break;
                  default:
                    e5 = S + c2 + e5 + u3;
                }
                return d2(e5);
              }
              return b = void 0 === b ? 6 : /[gprs]/.test(w) ? Math.max(1, Math.min(21, b)) : Math.max(0, Math.min(20, b)), L.toString = function() {
                return e4 + "";
              }, L;
            }
            return { format: y, formatPrefix: function(e4, t4) {
              var r4, a2 = y(((e4 = o(e4)).type = "f", e4)), i3 = 3 * Math.max(-8, Math.min(8, Math.floor((r4 = t4, ((r4 = n(Math.abs(r4))) ? r4[1] : NaN) / 3)))), l3 = Math.pow(10, -i3), s3 = p[8 + i3 / 3];
              return function(e5) {
                return a2(l3 * e5) + s3;
              };
            } };
          }
          f = v({ decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""], minus: "-" }), d = f.format, f.formatPrefix;
        }, 2696: function(e2, t2, r2) {
          r2.d(t2, { DC: function() {
            return p;
          }, de: function() {
            return d;
          }, aL: function() {
            return v;
          } });
          var n = r2(1681), a = r2(2543), i = r2(5735), o = r2(7265), l = r2(9830), s = r2(9764);
          function c(e3) {
            if (0 <= e3.y && e3.y < 100) {
              var t3 = new Date(-1, e3.m, e3.d, e3.H, e3.M, e3.S, e3.L);
              return t3.setFullYear(e3.y), t3;
            }
            return new Date(e3.y, e3.m, e3.d, e3.H, e3.M, e3.S, e3.L);
          }
          function u(e3) {
            if (0 <= e3.y && e3.y < 100) {
              var t3 = new Date(Date.UTC(-1, e3.m, e3.d, e3.H, e3.M, e3.S, e3.L));
              return t3.setUTCFullYear(e3.y), t3;
            }
            return new Date(Date.UTC(e3.y, e3.m, e3.d, e3.H, e3.M, e3.S, e3.L));
          }
          function f(e3, t3, r3) {
            return { y: e3, m: t3, d: r3, H: 0, M: 0, S: 0, L: 0 };
          }
          function d(e3) {
            var t3 = e3.dateTime, r3 = e3.date, l2 = e3.time, s2 = e3.periods, d2 = e3.days, h2 = e3.shortDays, p2 = e3.months, v2 = e3.shortMonths, m2 = w(s2), y2 = T(s2), x2 = w(d2), b2 = T(d2), _2 = w(h2), Le = T(h2), Se = w(p2), Ce = T(p2), Oe = w(v2), De = T(v2), Pe = { a: function(e4) {
              return h2[e4.getDay()];
            }, A: function(e4) {
              return d2[e4.getDay()];
            }, b: function(e4) {
              return v2[e4.getMonth()];
            }, B: function(e4) {
              return p2[e4.getMonth()];
            }, c: null, d: U, e: U, f: J, H: q, I: G, j: Z, L: W, m: X, M: K, p: function(e4) {
              return s2[+(e4.getHours() >= 12)];
            }, q: function(e4) {
              return 1 + ~~(e4.getMonth() / 3);
            }, Q: ke, s: Ae, S: Q, u: $, U: ee, V: te, w: re, W: ne, x: null, X: null, y: ae, Y: ie, Z: oe, "%": Me }, ze = { a: function(e4) {
              return h2[e4.getUTCDay()];
            }, A: function(e4) {
              return d2[e4.getUTCDay()];
            }, b: function(e4) {
              return v2[e4.getUTCMonth()];
            }, B: function(e4) {
              return p2[e4.getUTCMonth()];
            }, c: null, d: le, e: le, f: de, H: se, I: ce, j: ue, L: fe, m: he, M: pe, p: function(e4) {
              return s2[+(e4.getUTCHours() >= 12)];
            }, q: function(e4) {
              return 1 + ~~(e4.getUTCMonth() / 3);
            }, Q: ke, s: Ae, S: ve, u: ge, U: me, V: ye, w: xe, W: be, x: null, X: null, y: _e, Y: we, Z: Te, "%": Me }, Ie = { a: function(e4, t4, r4) {
              var n2 = _2.exec(t4.slice(r4));
              return n2 ? (e4.w = Le[n2[0].toLowerCase()], r4 + n2[0].length) : -1;
            }, A: function(e4, t4, r4) {
              var n2 = x2.exec(t4.slice(r4));
              return n2 ? (e4.w = b2[n2[0].toLowerCase()], r4 + n2[0].length) : -1;
            }, b: function(e4, t4, r4) {
              var n2 = Oe.exec(t4.slice(r4));
              return n2 ? (e4.m = De[n2[0].toLowerCase()], r4 + n2[0].length) : -1;
            }, B: function(e4, t4, r4) {
              var n2 = Se.exec(t4.slice(r4));
              return n2 ? (e4.m = Ce[n2[0].toLowerCase()], r4 + n2[0].length) : -1;
            }, c: function(e4, r4, n2) {
              return Ne(e4, t3, r4, n2);
            }, d: I, e: I, f: B, H: R, I: R, j: E, L: H, m: z, M: N, p: function(e4, t4, r4) {
              var n2 = m2.exec(t4.slice(r4));
              return n2 ? (e4.p = y2[n2[0].toLowerCase()], r4 + n2[0].length) : -1;
            }, q: P, Q: Y, s: V, S: F, u: k, U: A, V: L, w: M, W: S, x: function(e4, t4, n2) {
              return Ne(e4, r3, t4, n2);
            }, X: function(e4, t4, r4) {
              return Ne(e4, l2, t4, r4);
            }, y: O, Y: C, Z: D, "%": j };
            function Ee(e4, t4) {
              return function(r4) {
                var n2, a2, i2, o2 = [], l3 = -1, s3 = 0, c2 = e4.length;
                for (r4 instanceof Date || (r4 = /* @__PURE__ */ new Date(+r4)); ++l3 < c2; ) 37 === e4.charCodeAt(l3) && (o2.push(e4.slice(s3, l3)), null != (a2 = g[n2 = e4.charAt(++l3)]) ? n2 = e4.charAt(++l3) : a2 = "e" === n2 ? " " : "0", (i2 = t4[n2]) && (n2 = i2(r4, a2)), o2.push(n2), s3 = l3 + 1);
                return o2.push(e4.slice(s3, l3)), o2.join("");
              };
            }
            function Re(e4, t4) {
              return function(r4) {
                var l3, s3, d3 = f(1900, void 0, 1);
                if (Ne(d3, e4, r4 += "", 0) != r4.length) return null;
                if ("Q" in d3) return new Date(d3.Q);
                if ("s" in d3) return new Date(1e3 * d3.s + ("L" in d3 ? d3.L : 0));
                if (t4 && !("Z" in d3) && (d3.Z = 0), "p" in d3 && (d3.H = d3.H % 12 + 12 * d3.p), void 0 === d3.m && (d3.m = "q" in d3 ? d3.q : 0), "V" in d3) {
                  if (d3.V < 1 || d3.V > 53) return null;
                  "w" in d3 || (d3.w = 1), "Z" in d3 ? (s3 = (l3 = u(f(d3.y, 0, 1))).getUTCDay(), l3 = s3 > 4 || 0 === s3 ? n.rt.ceil(l3) : (0, n.rt)(l3), l3 = a.A.offset(l3, 7 * (d3.V - 1)), d3.y = l3.getUTCFullYear(), d3.m = l3.getUTCMonth(), d3.d = l3.getUTCDate() + (d3.w + 6) % 7) : (s3 = (l3 = c(f(d3.y, 0, 1))).getDay(), l3 = s3 > 4 || 0 === s3 ? i.By.ceil(l3) : (0, i.By)(l3), l3 = o.A.offset(l3, 7 * (d3.V - 1)), d3.y = l3.getFullYear(), d3.m = l3.getMonth(), d3.d = l3.getDate() + (d3.w + 6) % 7);
                } else ("W" in d3 || "U" in d3) && ("w" in d3 || (d3.w = "u" in d3 ? d3.u % 7 : "W" in d3 ? 1 : 0), s3 = "Z" in d3 ? u(f(d3.y, 0, 1)).getUTCDay() : c(f(d3.y, 0, 1)).getDay(), d3.m = 0, d3.d = "W" in d3 ? (d3.w + 6) % 7 + 7 * d3.W - (s3 + 5) % 7 : d3.w + 7 * d3.U - (s3 + 6) % 7);
                return "Z" in d3 ? (d3.H += d3.Z / 100 | 0, d3.M += d3.Z % 100, u(d3)) : c(d3);
              };
            }
            function Ne(e4, t4, r4, n2) {
              for (var a2, i2, o2 = 0, l3 = t4.length, s3 = r4.length; o2 < l3; ) {
                if (n2 >= s3) return -1;
                if (37 === (a2 = t4.charCodeAt(o2++))) {
                  if (a2 = t4.charAt(o2++), !(i2 = Ie[a2 in g ? t4.charAt(o2++) : a2]) || (n2 = i2(e4, r4, n2)) < 0) return -1;
                } else if (a2 != r4.charCodeAt(n2++)) return -1;
              }
              return n2;
            }
            return Pe.x = Ee(r3, Pe), Pe.X = Ee(l2, Pe), Pe.c = Ee(t3, Pe), ze.x = Ee(r3, ze), ze.X = Ee(l2, ze), ze.c = Ee(t3, ze), { format: function(e4) {
              var t4 = Ee(e4 += "", Pe);
              return t4.toString = function() {
                return e4;
              }, t4;
            }, parse: function(e4) {
              var t4 = Re(e4 += "", false);
              return t4.toString = function() {
                return e4;
              }, t4;
            }, utcFormat: function(e4) {
              var t4 = Ee(e4 += "", ze);
              return t4.toString = function() {
                return e4;
              }, t4;
            }, utcParse: function(e4) {
              var t4 = Re(e4 += "", true);
              return t4.toString = function() {
                return e4;
              }, t4;
            } };
          }
          var h, p, v, g = { "-": "", _: " ", 0: "0" }, m = /^\s*\d+/, y = /^%/, x = /[\\^$*+?|[\]().{}]/g;
          function b(e3, t3, r3) {
            var n2 = e3 < 0 ? "-" : "", a2 = (n2 ? -e3 : e3) + "", i2 = a2.length;
            return n2 + (i2 < r3 ? new Array(r3 - i2 + 1).join(t3) + a2 : a2);
          }
          function _(e3) {
            return e3.replace(x, "\\$&");
          }
          function w(e3) {
            return new RegExp("^(?:" + e3.map(_).join("|") + ")", "i");
          }
          function T(e3) {
            for (var t3 = {}, r3 = -1, n2 = e3.length; ++r3 < n2; ) t3[e3[r3].toLowerCase()] = r3;
            return t3;
          }
          function M(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 1));
            return n2 ? (e3.w = +n2[0], r3 + n2[0].length) : -1;
          }
          function k(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 1));
            return n2 ? (e3.u = +n2[0], r3 + n2[0].length) : -1;
          }
          function A(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.U = +n2[0], r3 + n2[0].length) : -1;
          }
          function L(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.V = +n2[0], r3 + n2[0].length) : -1;
          }
          function S(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.W = +n2[0], r3 + n2[0].length) : -1;
          }
          function C(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 4));
            return n2 ? (e3.y = +n2[0], r3 + n2[0].length) : -1;
          }
          function O(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.y = +n2[0] + (+n2[0] > 68 ? 1900 : 2e3), r3 + n2[0].length) : -1;
          }
          function D(e3, t3, r3) {
            var n2 = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t3.slice(r3, r3 + 6));
            return n2 ? (e3.Z = n2[1] ? 0 : -(n2[2] + (n2[3] || "00")), r3 + n2[0].length) : -1;
          }
          function P(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 1));
            return n2 ? (e3.q = 3 * n2[0] - 3, r3 + n2[0].length) : -1;
          }
          function z(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.m = n2[0] - 1, r3 + n2[0].length) : -1;
          }
          function I(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.d = +n2[0], r3 + n2[0].length) : -1;
          }
          function E(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 3));
            return n2 ? (e3.m = 0, e3.d = +n2[0], r3 + n2[0].length) : -1;
          }
          function R(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.H = +n2[0], r3 + n2[0].length) : -1;
          }
          function N(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.M = +n2[0], r3 + n2[0].length) : -1;
          }
          function F(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 2));
            return n2 ? (e3.S = +n2[0], r3 + n2[0].length) : -1;
          }
          function H(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 3));
            return n2 ? (e3.L = +n2[0], r3 + n2[0].length) : -1;
          }
          function B(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3, r3 + 6));
            return n2 ? (e3.L = Math.floor(n2[0] / 1e3), r3 + n2[0].length) : -1;
          }
          function j(e3, t3, r3) {
            var n2 = y.exec(t3.slice(r3, r3 + 1));
            return n2 ? r3 + n2[0].length : -1;
          }
          function Y(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3));
            return n2 ? (e3.Q = +n2[0], r3 + n2[0].length) : -1;
          }
          function V(e3, t3, r3) {
            var n2 = m.exec(t3.slice(r3));
            return n2 ? (e3.s = +n2[0], r3 + n2[0].length) : -1;
          }
          function U(e3, t3) {
            return b(e3.getDate(), t3, 2);
          }
          function q(e3, t3) {
            return b(e3.getHours(), t3, 2);
          }
          function G(e3, t3) {
            return b(e3.getHours() % 12 || 12, t3, 2);
          }
          function Z(e3, t3) {
            return b(1 + o.A.count((0, l.A)(e3), e3), t3, 3);
          }
          function W(e3, t3) {
            return b(e3.getMilliseconds(), t3, 3);
          }
          function J(e3, t3) {
            return W(e3, t3) + "000";
          }
          function X(e3, t3) {
            return b(e3.getMonth() + 1, t3, 2);
          }
          function K(e3, t3) {
            return b(e3.getMinutes(), t3, 2);
          }
          function Q(e3, t3) {
            return b(e3.getSeconds(), t3, 2);
          }
          function $(e3) {
            var t3 = e3.getDay();
            return 0 === t3 ? 7 : t3;
          }
          function ee(e3, t3) {
            return b(i.fz.count((0, l.A)(e3) - 1, e3), t3, 2);
          }
          function te(e3, t3) {
            var r3 = e3.getDay();
            return e3 = r3 >= 4 || 0 === r3 ? (0, i.dt)(e3) : i.dt.ceil(e3), b(i.dt.count((0, l.A)(e3), e3) + (4 === (0, l.A)(e3).getDay()), t3, 2);
          }
          function re(e3) {
            return e3.getDay();
          }
          function ne(e3, t3) {
            return b(i.By.count((0, l.A)(e3) - 1, e3), t3, 2);
          }
          function ae(e3, t3) {
            return b(e3.getFullYear() % 100, t3, 2);
          }
          function ie(e3, t3) {
            return b(e3.getFullYear() % 1e4, t3, 4);
          }
          function oe(e3) {
            var t3 = e3.getTimezoneOffset();
            return (t3 > 0 ? "-" : (t3 *= -1, "+")) + b(t3 / 60 | 0, "0", 2) + b(t3 % 60, "0", 2);
          }
          function le(e3, t3) {
            return b(e3.getUTCDate(), t3, 2);
          }
          function se(e3, t3) {
            return b(e3.getUTCHours(), t3, 2);
          }
          function ce(e3, t3) {
            return b(e3.getUTCHours() % 12 || 12, t3, 2);
          }
          function ue(e3, t3) {
            return b(1 + a.A.count((0, s.A)(e3), e3), t3, 3);
          }
          function fe(e3, t3) {
            return b(e3.getUTCMilliseconds(), t3, 3);
          }
          function de(e3, t3) {
            return fe(e3, t3) + "000";
          }
          function he(e3, t3) {
            return b(e3.getUTCMonth() + 1, t3, 2);
          }
          function pe(e3, t3) {
            return b(e3.getUTCMinutes(), t3, 2);
          }
          function ve(e3, t3) {
            return b(e3.getUTCSeconds(), t3, 2);
          }
          function ge(e3) {
            var t3 = e3.getUTCDay();
            return 0 === t3 ? 7 : t3;
          }
          function me(e3, t3) {
            return b(n.Hl.count((0, s.A)(e3) - 1, e3), t3, 2);
          }
          function ye(e3, t3) {
            var r3 = e3.getUTCDay();
            return e3 = r3 >= 4 || 0 === r3 ? (0, n.pT)(e3) : n.pT.ceil(e3), b(n.pT.count((0, s.A)(e3), e3) + (4 === (0, s.A)(e3).getUTCDay()), t3, 2);
          }
          function xe(e3) {
            return e3.getUTCDay();
          }
          function be(e3, t3) {
            return b(n.rt.count((0, s.A)(e3) - 1, e3), t3, 2);
          }
          function _e(e3, t3) {
            return b(e3.getUTCFullYear() % 100, t3, 2);
          }
          function we(e3, t3) {
            return b(e3.getUTCFullYear() % 1e4, t3, 4);
          }
          function Te() {
            return "+0000";
          }
          function Me() {
            return "%";
          }
          function ke(e3) {
            return +e3;
          }
          function Ae(e3) {
            return Math.floor(+e3 / 1e3);
          }
          h = d({ dateTime: "%x, %X", date: "%-m/%-d/%Y", time: "%-I:%M:%S %p", periods: ["AM", "PM"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }), p = h.format, h.parse, v = h.utcFormat, h.utcParse;
        }, 7265: function(e2, t2, r2) {
          r2.d(t2, { _: function() {
            return o;
          } });
          var n = r2(3398), a = r2(6291), i = (0, n.A)(function(e3) {
            e3.setHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setDate(e3.getDate() + t3);
          }, function(e3, t3) {
            return (t3 - e3 - (t3.getTimezoneOffset() - e3.getTimezoneOffset()) * a.rR) / a.Nm;
          }, function(e3) {
            return e3.getDate() - 1;
          });
          t2.A = i;
          var o = i.range;
        }, 6291: function(e2, t2, r2) {
          r2.d(t2, { Fq: function() {
            return l;
          }, JJ: function() {
            return i;
          }, Nm: function() {
            return o;
          }, Tt: function() {
            return n;
          }, rR: function() {
            return a;
          } });
          var n = 1e3, a = 6e4, i = 36e5, o = 864e5, l = 6048e5;
        }, 936: function(e2, t2, r2) {
          r2.r(t2), r2.d(t2, { timeDay: function() {
            return m.A;
          }, timeDays: function() {
            return m._;
          }, timeFriday: function() {
            return y.Sh;
          }, timeFridays: function() {
            return y.tz;
          }, timeHour: function() {
            return v;
          }, timeHours: function() {
            return g;
          }, timeInterval: function() {
            return n.A;
          }, timeMillisecond: function() {
            return i;
          }, timeMilliseconds: function() {
            return o;
          }, timeMinute: function() {
            return d;
          }, timeMinutes: function() {
            return h;
          }, timeMonday: function() {
            return y.By;
          }, timeMondays: function() {
            return y.KP;
          }, timeMonth: function() {
            return b;
          }, timeMonths: function() {
            return _;
          }, timeSaturday: function() {
            return y.kS;
          }, timeSaturdays: function() {
            return y.t$;
          }, timeSecond: function() {
            return c;
          }, timeSeconds: function() {
            return u;
          }, timeSunday: function() {
            return y.fz;
          }, timeSundays: function() {
            return y.se;
          }, timeThursday: function() {
            return y.dt;
          }, timeThursdays: function() {
            return y.Q$;
          }, timeTuesday: function() {
            return y.eQ;
          }, timeTuesdays: function() {
            return y.yW;
          }, timeWednesday: function() {
            return y.l3;
          }, timeWednesdays: function() {
            return y.gf;
          }, timeWeek: function() {
            return y.fz;
          }, timeWeeks: function() {
            return y.se;
          }, timeYear: function() {
            return w.A;
          }, timeYears: function() {
            return w.V;
          }, utcDay: function() {
            return C.A;
          }, utcDays: function() {
            return C.o;
          }, utcFriday: function() {
            return O.a1;
          }, utcFridays: function() {
            return O.Zn;
          }, utcHour: function() {
            return L;
          }, utcHours: function() {
            return S;
          }, utcMillisecond: function() {
            return i;
          }, utcMilliseconds: function() {
            return o;
          }, utcMinute: function() {
            return M;
          }, utcMinutes: function() {
            return k;
          }, utcMonday: function() {
            return O.rt;
          }, utcMondays: function() {
            return O.ON;
          }, utcMonth: function() {
            return P;
          }, utcMonths: function() {
            return z;
          }, utcSaturday: function() {
            return O.c8;
          }, utcSaturdays: function() {
            return O.Xo;
          }, utcSecond: function() {
            return c;
          }, utcSeconds: function() {
            return u;
          }, utcSunday: function() {
            return O.Hl;
          }, utcSundays: function() {
            return O.aZ;
          }, utcThursday: function() {
            return O.pT;
          }, utcThursdays: function() {
            return O.wr;
          }, utcTuesday: function() {
            return O.sr;
          }, utcTuesdays: function() {
            return O.jN;
          }, utcWednesday: function() {
            return O.z2;
          }, utcWednesdays: function() {
            return O.G6;
          }, utcWeek: function() {
            return O.Hl;
          }, utcWeeks: function() {
            return O.aZ;
          }, utcYear: function() {
            return I.A;
          }, utcYears: function() {
            return I.j;
          } });
          var n = r2(3398), a = (0, n.A)(function() {
          }, function(e3, t3) {
            e3.setTime(+e3 + t3);
          }, function(e3, t3) {
            return t3 - e3;
          });
          a.every = function(e3) {
            return e3 = Math.floor(e3), isFinite(e3) && e3 > 0 ? e3 > 1 ? (0, n.A)(function(t3) {
              t3.setTime(Math.floor(t3 / e3) * e3);
            }, function(t3, r3) {
              t3.setTime(+t3 + r3 * e3);
            }, function(t3, r3) {
              return (r3 - t3) / e3;
            }) : a : null;
          };
          var i = a, o = a.range, l = r2(6291), s = (0, n.A)(function(e3) {
            e3.setTime(e3 - e3.getMilliseconds());
          }, function(e3, t3) {
            e3.setTime(+e3 + t3 * l.Tt);
          }, function(e3, t3) {
            return (t3 - e3) / l.Tt;
          }, function(e3) {
            return e3.getUTCSeconds();
          }), c = s, u = s.range, f = (0, n.A)(function(e3) {
            e3.setTime(e3 - e3.getMilliseconds() - e3.getSeconds() * l.Tt);
          }, function(e3, t3) {
            e3.setTime(+e3 + t3 * l.rR);
          }, function(e3, t3) {
            return (t3 - e3) / l.rR;
          }, function(e3) {
            return e3.getMinutes();
          }), d = f, h = f.range, p = (0, n.A)(function(e3) {
            e3.setTime(e3 - e3.getMilliseconds() - e3.getSeconds() * l.Tt - e3.getMinutes() * l.rR);
          }, function(e3, t3) {
            e3.setTime(+e3 + t3 * l.JJ);
          }, function(e3, t3) {
            return (t3 - e3) / l.JJ;
          }, function(e3) {
            return e3.getHours();
          }), v = p, g = p.range, m = r2(7265), y = r2(5735), x = (0, n.A)(function(e3) {
            e3.setDate(1), e3.setHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setMonth(e3.getMonth() + t3);
          }, function(e3, t3) {
            return t3.getMonth() - e3.getMonth() + 12 * (t3.getFullYear() - e3.getFullYear());
          }, function(e3) {
            return e3.getMonth();
          }), b = x, _ = x.range, w = r2(9830), T = (0, n.A)(function(e3) {
            e3.setUTCSeconds(0, 0);
          }, function(e3, t3) {
            e3.setTime(+e3 + t3 * l.rR);
          }, function(e3, t3) {
            return (t3 - e3) / l.rR;
          }, function(e3) {
            return e3.getUTCMinutes();
          }), M = T, k = T.range, A = (0, n.A)(function(e3) {
            e3.setUTCMinutes(0, 0, 0);
          }, function(e3, t3) {
            e3.setTime(+e3 + t3 * l.JJ);
          }, function(e3, t3) {
            return (t3 - e3) / l.JJ;
          }, function(e3) {
            return e3.getUTCHours();
          }), L = A, S = A.range, C = r2(2543), O = r2(1681), D = (0, n.A)(function(e3) {
            e3.setUTCDate(1), e3.setUTCHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setUTCMonth(e3.getUTCMonth() + t3);
          }, function(e3, t3) {
            return t3.getUTCMonth() - e3.getUTCMonth() + 12 * (t3.getUTCFullYear() - e3.getUTCFullYear());
          }, function(e3) {
            return e3.getUTCMonth();
          }), P = D, z = D.range, I = r2(9764);
        }, 3398: function(e2, t2, r2) {
          r2.d(t2, { A: function() {
            return i;
          } });
          var n = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
          function i(e3, t3, r3, o) {
            function l(t4) {
              return e3(t4 = 0 === arguments.length ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+t4)), t4;
            }
            return l.floor = function(t4) {
              return e3(t4 = /* @__PURE__ */ new Date(+t4)), t4;
            }, l.ceil = function(r4) {
              return e3(r4 = new Date(r4 - 1)), t3(r4, 1), e3(r4), r4;
            }, l.round = function(e4) {
              var t4 = l(e4), r4 = l.ceil(e4);
              return e4 - t4 < r4 - e4 ? t4 : r4;
            }, l.offset = function(e4, r4) {
              return t3(e4 = /* @__PURE__ */ new Date(+e4), null == r4 ? 1 : Math.floor(r4)), e4;
            }, l.range = function(r4, n2, a2) {
              var i2, o2 = [];
              if (r4 = l.ceil(r4), a2 = null == a2 ? 1 : Math.floor(a2), !(r4 < n2 && a2 > 0)) return o2;
              do {
                o2.push(i2 = /* @__PURE__ */ new Date(+r4)), t3(r4, a2), e3(r4);
              } while (i2 < r4 && r4 < n2);
              return o2;
            }, l.filter = function(r4) {
              return i(function(t4) {
                if (t4 >= t4) for (; e3(t4), !r4(t4); ) t4.setTime(t4 - 1);
              }, function(e4, n2) {
                if (e4 >= e4) if (n2 < 0) for (; ++n2 <= 0; ) for (; t3(e4, -1), !r4(e4); ) ;
                else for (; --n2 >= 0; ) for (; t3(e4, 1), !r4(e4); ) ;
              });
            }, r3 && (l.count = function(t4, i2) {
              return n.setTime(+t4), a.setTime(+i2), e3(n), e3(a), Math.floor(r3(n, a));
            }, l.every = function(e4) {
              return e4 = Math.floor(e4), isFinite(e4) && e4 > 0 ? e4 > 1 ? l.filter(o ? function(t4) {
                return o(t4) % e4 == 0;
              } : function(t4) {
                return l.count(0, t4) % e4 == 0;
              }) : l : null;
            }), l;
          }
        }, 2543: function(e2, t2, r2) {
          r2.d(t2, { o: function() {
            return o;
          } });
          var n = r2(3398), a = r2(6291), i = (0, n.A)(function(e3) {
            e3.setUTCHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setUTCDate(e3.getUTCDate() + t3);
          }, function(e3, t3) {
            return (t3 - e3) / a.Nm;
          }, function(e3) {
            return e3.getUTCDate() - 1;
          });
          t2.A = i;
          var o = i.range;
        }, 1681: function(e2, t2, r2) {
          r2.d(t2, { G6: function() {
            return g;
          }, Hl: function() {
            return o;
          }, ON: function() {
            return p;
          }, Xo: function() {
            return x;
          }, Zn: function() {
            return y;
          }, a1: function() {
            return f;
          }, aZ: function() {
            return h;
          }, c8: function() {
            return d;
          }, jN: function() {
            return v;
          }, pT: function() {
            return u;
          }, rt: function() {
            return l;
          }, sr: function() {
            return s;
          }, wr: function() {
            return m;
          }, z2: function() {
            return c;
          } });
          var n = r2(3398), a = r2(6291);
          function i(e3) {
            return (0, n.A)(function(t3) {
              t3.setUTCDate(t3.getUTCDate() - (t3.getUTCDay() + 7 - e3) % 7), t3.setUTCHours(0, 0, 0, 0);
            }, function(e4, t3) {
              e4.setUTCDate(e4.getUTCDate() + 7 * t3);
            }, function(e4, t3) {
              return (t3 - e4) / a.Fq;
            });
          }
          var o = i(0), l = i(1), s = i(2), c = i(3), u = i(4), f = i(5), d = i(6), h = o.range, p = l.range, v = s.range, g = c.range, m = u.range, y = f.range, x = d.range;
        }, 9764: function(e2, t2, r2) {
          r2.d(t2, { j: function() {
            return i;
          } });
          var n = r2(3398), a = (0, n.A)(function(e3) {
            e3.setUTCMonth(0, 1), e3.setUTCHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setUTCFullYear(e3.getUTCFullYear() + t3);
          }, function(e3, t3) {
            return t3.getUTCFullYear() - e3.getUTCFullYear();
          }, function(e3) {
            return e3.getUTCFullYear();
          });
          a.every = function(e3) {
            return isFinite(e3 = Math.floor(e3)) && e3 > 0 ? (0, n.A)(function(t3) {
              t3.setUTCFullYear(Math.floor(t3.getUTCFullYear() / e3) * e3), t3.setUTCMonth(0, 1), t3.setUTCHours(0, 0, 0, 0);
            }, function(t3, r3) {
              t3.setUTCFullYear(t3.getUTCFullYear() + r3 * e3);
            }) : null;
          }, t2.A = a;
          var i = a.range;
        }, 5735: function(e2, t2, r2) {
          r2.d(t2, { By: function() {
            return l;
          }, KP: function() {
            return p;
          }, Q$: function() {
            return m;
          }, Sh: function() {
            return f;
          }, dt: function() {
            return u;
          }, eQ: function() {
            return s;
          }, fz: function() {
            return o;
          }, gf: function() {
            return g;
          }, kS: function() {
            return d;
          }, l3: function() {
            return c;
          }, se: function() {
            return h;
          }, t$: function() {
            return x;
          }, tz: function() {
            return y;
          }, yW: function() {
            return v;
          } });
          var n = r2(3398), a = r2(6291);
          function i(e3) {
            return (0, n.A)(function(t3) {
              t3.setDate(t3.getDate() - (t3.getDay() + 7 - e3) % 7), t3.setHours(0, 0, 0, 0);
            }, function(e4, t3) {
              e4.setDate(e4.getDate() + 7 * t3);
            }, function(e4, t3) {
              return (t3 - e4 - (t3.getTimezoneOffset() - e4.getTimezoneOffset()) * a.rR) / a.Fq;
            });
          }
          var o = i(0), l = i(1), s = i(2), c = i(3), u = i(4), f = i(5), d = i(6), h = o.range, p = l.range, v = s.range, g = c.range, m = u.range, y = f.range, x = d.range;
        }, 9830: function(e2, t2, r2) {
          r2.d(t2, { V: function() {
            return i;
          } });
          var n = r2(3398), a = (0, n.A)(function(e3) {
            e3.setMonth(0, 1), e3.setHours(0, 0, 0, 0);
          }, function(e3, t3) {
            e3.setFullYear(e3.getFullYear() + t3);
          }, function(e3, t3) {
            return t3.getFullYear() - e3.getFullYear();
          }, function(e3) {
            return e3.getFullYear();
          });
          a.every = function(e3) {
            return isFinite(e3 = Math.floor(e3)) && e3 > 0 ? (0, n.A)(function(t3) {
              t3.setFullYear(Math.floor(t3.getFullYear() / e3) * e3), t3.setMonth(0, 1), t3.setHours(0, 0, 0, 0);
            }, function(t3, r3) {
              t3.setFullYear(t3.getFullYear() + r3 * e3);
            }) : null;
          }, t2.A = a;
          var i = a.range;
        }, 7683: function(e2) {
          var t2, r2 = "object" == typeof Reflect ? Reflect : null, n = r2 && "function" == typeof r2.apply ? r2.apply : function(e3, t3, r3) {
            return Function.prototype.apply.call(e3, t3, r3);
          };
          t2 = r2 && "function" == typeof r2.ownKeys ? r2.ownKeys : Object.getOwnPropertySymbols ? function(e3) {
            return Object.getOwnPropertyNames(e3).concat(Object.getOwnPropertySymbols(e3));
          } : function(e3) {
            return Object.getOwnPropertyNames(e3);
          };
          var a = Number.isNaN || function(e3) {
            return e3 != e3;
          };
          function i() {
            i.init.call(this);
          }
          e2.exports = i, e2.exports.once = function(e3, t3) {
            return new Promise(function(r3, n2) {
              function a2(r4) {
                e3.removeListener(t3, i2), n2(r4);
              }
              function i2() {
                "function" == typeof e3.removeListener && e3.removeListener("error", a2), r3([].slice.call(arguments));
              }
              v(e3, t3, i2, { once: true }), "error" !== t3 && function(e4, t4, r4) {
                "function" == typeof e4.on && v(e4, "error", t4, { once: true });
              }(e3, a2);
            });
          }, i.EventEmitter = i, i.prototype._events = void 0, i.prototype._eventsCount = 0, i.prototype._maxListeners = void 0;
          var o = 10;
          function l(e3) {
            if ("function" != typeof e3) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e3);
          }
          function s(e3) {
            return void 0 === e3._maxListeners ? i.defaultMaxListeners : e3._maxListeners;
          }
          function c(e3, t3, r3, n2) {
            var a2, i2, o2, c2;
            if (l(r3), void 0 === (i2 = e3._events) ? (i2 = e3._events = /* @__PURE__ */ Object.create(null), e3._eventsCount = 0) : (void 0 !== i2.newListener && (e3.emit("newListener", t3, r3.listener ? r3.listener : r3), i2 = e3._events), o2 = i2[t3]), void 0 === o2) o2 = i2[t3] = r3, ++e3._eventsCount;
            else if ("function" == typeof o2 ? o2 = i2[t3] = n2 ? [r3, o2] : [o2, r3] : n2 ? o2.unshift(r3) : o2.push(r3), (a2 = s(e3)) > 0 && o2.length > a2 && !o2.warned) {
              o2.warned = true;
              var u2 = new Error("Possible EventEmitter memory leak detected. " + o2.length + " " + String(t3) + " listeners added. Use emitter.setMaxListeners() to increase limit");
              u2.name = "MaxListenersExceededWarning", u2.emitter = e3, u2.type = t3, u2.count = o2.length, c2 = u2, console && console.warn && console.warn(c2);
            }
            return e3;
          }
          function u() {
            if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
          }
          function f(e3, t3, r3) {
            var n2 = { fired: false, wrapFn: void 0, target: e3, type: t3, listener: r3 }, a2 = u.bind(n2);
            return a2.listener = r3, n2.wrapFn = a2, a2;
          }
          function d(e3, t3, r3) {
            var n2 = e3._events;
            if (void 0 === n2) return [];
            var a2 = n2[t3];
            return void 0 === a2 ? [] : "function" == typeof a2 ? r3 ? [a2.listener || a2] : [a2] : r3 ? function(e4) {
              for (var t4 = new Array(e4.length), r4 = 0; r4 < t4.length; ++r4) t4[r4] = e4[r4].listener || e4[r4];
              return t4;
            }(a2) : p(a2, a2.length);
          }
          function h(e3) {
            var t3 = this._events;
            if (void 0 !== t3) {
              var r3 = t3[e3];
              if ("function" == typeof r3) return 1;
              if (void 0 !== r3) return r3.length;
            }
            return 0;
          }
          function p(e3, t3) {
            for (var r3 = new Array(t3), n2 = 0; n2 < t3; ++n2) r3[n2] = e3[n2];
            return r3;
          }
          function v(e3, t3, r3, n2) {
            if ("function" == typeof e3.on) n2.once ? e3.once(t3, r3) : e3.on(t3, r3);
            else {
              if ("function" != typeof e3.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e3);
              e3.addEventListener(t3, function a2(i2) {
                n2.once && e3.removeEventListener(t3, a2), r3(i2);
              });
            }
          }
          Object.defineProperty(i, "defaultMaxListeners", { enumerable: true, get: function() {
            return o;
          }, set: function(e3) {
            if ("number" != typeof e3 || e3 < 0 || a(e3)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e3 + ".");
            o = e3;
          } }), i.init = function() {
            void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
          }, i.prototype.setMaxListeners = function(e3) {
            if ("number" != typeof e3 || e3 < 0 || a(e3)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e3 + ".");
            return this._maxListeners = e3, this;
          }, i.prototype.getMaxListeners = function() {
            return s(this);
          }, i.prototype.emit = function(e3) {
            for (var t3 = [], r3 = 1; r3 < arguments.length; r3++) t3.push(arguments[r3]);
            var a2 = "error" === e3, i2 = this._events;
            if (void 0 !== i2) a2 = a2 && void 0 === i2.error;
            else if (!a2) return false;
            if (a2) {
              var o2;
              if (t3.length > 0 && (o2 = t3[0]), o2 instanceof Error) throw o2;
              var l2 = new Error("Unhandled error." + (o2 ? " (" + o2.message + ")" : ""));
              throw l2.context = o2, l2;
            }
            var s2 = i2[e3];
            if (void 0 === s2) return false;
            if ("function" == typeof s2) n(s2, this, t3);
            else {
              var c2 = s2.length, u2 = p(s2, c2);
              for (r3 = 0; r3 < c2; ++r3) n(u2[r3], this, t3);
            }
            return true;
          }, i.prototype.addListener = function(e3, t3) {
            return c(this, e3, t3, false);
          }, i.prototype.on = i.prototype.addListener, i.prototype.prependListener = function(e3, t3) {
            return c(this, e3, t3, true);
          }, i.prototype.once = function(e3, t3) {
            return l(t3), this.on(e3, f(this, e3, t3)), this;
          }, i.prototype.prependOnceListener = function(e3, t3) {
            return l(t3), this.prependListener(e3, f(this, e3, t3)), this;
          }, i.prototype.removeListener = function(e3, t3) {
            var r3, n2, a2, i2, o2;
            if (l(t3), void 0 === (n2 = this._events)) return this;
            if (void 0 === (r3 = n2[e3])) return this;
            if (r3 === t3 || r3.listener === t3) 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete n2[e3], n2.removeListener && this.emit("removeListener", e3, r3.listener || t3));
            else if ("function" != typeof r3) {
              for (a2 = -1, i2 = r3.length - 1; i2 >= 0; i2--) if (r3[i2] === t3 || r3[i2].listener === t3) {
                o2 = r3[i2].listener, a2 = i2;
                break;
              }
              if (a2 < 0) return this;
              0 === a2 ? r3.shift() : function(e4, t4) {
                for (; t4 + 1 < e4.length; t4++) e4[t4] = e4[t4 + 1];
                e4.pop();
              }(r3, a2), 1 === r3.length && (n2[e3] = r3[0]), void 0 !== n2.removeListener && this.emit("removeListener", e3, o2 || t3);
            }
            return this;
          }, i.prototype.off = i.prototype.removeListener, i.prototype.removeAllListeners = function(e3) {
            var t3, r3, n2;
            if (void 0 === (r3 = this._events)) return this;
            if (void 0 === r3.removeListener) return 0 === arguments.length ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : void 0 !== r3[e3] && (0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : delete r3[e3]), this;
            if (0 === arguments.length) {
              var a2, i2 = Object.keys(r3);
              for (n2 = 0; n2 < i2.length; ++n2) "removeListener" !== (a2 = i2[n2]) && this.removeAllListeners(a2);
              return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
            }
            if ("function" == typeof (t3 = r3[e3])) this.removeListener(e3, t3);
            else if (void 0 !== t3) for (n2 = t3.length - 1; n2 >= 0; n2--) this.removeListener(e3, t3[n2]);
            return this;
          }, i.prototype.listeners = function(e3) {
            return d(this, e3, true);
          }, i.prototype.rawListeners = function(e3) {
            return d(this, e3, false);
          }, i.listenerCount = function(e3, t3) {
            return "function" == typeof e3.listenerCount ? e3.listenerCount(t3) : h.call(e3, t3);
          }, i.prototype.listenerCount = h, i.prototype.eventNames = function() {
            return this._eventsCount > 0 ? t2(this._events) : [];
          };
        }, 721: function(e2, t2, r2) {
          var n = r2(9914);
          e2.exports = function(e3) {
            var t3 = typeof e3;
            if ("string" === t3) {
              var r3 = e3;
              if (0 == (e3 = +e3) && n(r3)) return false;
            } else if ("number" !== t3) return false;
            return e3 - e3 < 1;
          };
        }, 4840: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = t2[0], n = t2[1], a = t2[2], i = t2[3], o = t2[4], l = t2[5], s = t2[6], c = t2[7], u = t2[8], f = t2[9], d = t2[10], h = t2[11], p = t2[12], v = t2[13], g = t2[14], m = t2[15];
            return e3[0] = l * (d * m - h * g) - f * (s * m - c * g) + v * (s * h - c * d), e3[1] = -(n * (d * m - h * g) - f * (a * m - i * g) + v * (a * h - i * d)), e3[2] = n * (s * m - c * g) - l * (a * m - i * g) + v * (a * c - i * s), e3[3] = -(n * (s * h - c * d) - l * (a * h - i * d) + f * (a * c - i * s)), e3[4] = -(o * (d * m - h * g) - u * (s * m - c * g) + p * (s * h - c * d)), e3[5] = r2 * (d * m - h * g) - u * (a * m - i * g) + p * (a * h - i * d), e3[6] = -(r2 * (s * m - c * g) - o * (a * m - i * g) + p * (a * c - i * s)), e3[7] = r2 * (s * h - c * d) - o * (a * h - i * d) + u * (a * c - i * s), e3[8] = o * (f * m - h * v) - u * (l * m - c * v) + p * (l * h - c * f), e3[9] = -(r2 * (f * m - h * v) - u * (n * m - i * v) + p * (n * h - i * f)), e3[10] = r2 * (l * m - c * v) - o * (n * m - i * v) + p * (n * c - i * l), e3[11] = -(r2 * (l * h - c * f) - o * (n * h - i * f) + u * (n * c - i * l)), e3[12] = -(o * (f * g - d * v) - u * (l * g - s * v) + p * (l * d - s * f)), e3[13] = r2 * (f * g - d * v) - u * (n * g - a * v) + p * (n * d - a * f), e3[14] = -(r2 * (l * g - s * v) - o * (n * g - a * v) + p * (n * s - a * l)), e3[15] = r2 * (l * d - s * f) - o * (n * d - a * f) + u * (n * s - a * l), e3;
          };
        }, 9698: function(e2) {
          e2.exports = function(e3) {
            var t2 = new Float32Array(16);
            return t2[0] = e3[0], t2[1] = e3[1], t2[2] = e3[2], t2[3] = e3[3], t2[4] = e3[4], t2[5] = e3[5], t2[6] = e3[6], t2[7] = e3[7], t2[8] = e3[8], t2[9] = e3[9], t2[10] = e3[10], t2[11] = e3[11], t2[12] = e3[12], t2[13] = e3[13], t2[14] = e3[14], t2[15] = e3[15], t2;
          };
        }, 7938: function(e2) {
          e2.exports = function(e3, t2) {
            return e3[0] = t2[0], e3[1] = t2[1], e3[2] = t2[2], e3[3] = t2[3], e3[4] = t2[4], e3[5] = t2[5], e3[6] = t2[6], e3[7] = t2[7], e3[8] = t2[8], e3[9] = t2[9], e3[10] = t2[10], e3[11] = t2[11], e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15], e3;
          };
        }, 7519: function(e2) {
          e2.exports = function() {
            var e3 = new Float32Array(16);
            return e3[0] = 1, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = 1, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = 1, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 6900: function(e2) {
          e2.exports = function(e3) {
            var t2 = e3[0], r2 = e3[1], n = e3[2], a = e3[3], i = e3[4], o = e3[5], l = e3[6], s = e3[7], c = e3[8], u = e3[9], f = e3[10], d = e3[11], h = e3[12], p = e3[13], v = e3[14], g = e3[15];
            return (t2 * o - r2 * i) * (f * g - d * v) - (t2 * l - n * i) * (u * g - d * p) + (t2 * s - a * i) * (u * v - f * p) + (r2 * l - n * o) * (c * g - d * h) - (r2 * s - a * o) * (c * v - f * h) + (n * s - a * l) * (c * p - u * h);
          };
        }, 6472: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = t2[0], n = t2[1], a = t2[2], i = t2[3], o = r2 + r2, l = n + n, s = a + a, c = r2 * o, u = n * o, f = n * l, d = a * o, h = a * l, p = a * s, v = i * o, g = i * l, m = i * s;
            return e3[0] = 1 - f - p, e3[1] = u + m, e3[2] = d - g, e3[3] = 0, e3[4] = u - m, e3[5] = 1 - c - p, e3[6] = h + v, e3[7] = 0, e3[8] = d + g, e3[9] = h - v, e3[10] = 1 - c - f, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 3061: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n, a, i, o = r2[0], l = r2[1], s = r2[2], c = Math.sqrt(o * o + l * l + s * s);
            return Math.abs(c) < 1e-6 ? null : (o *= c = 1 / c, l *= c, s *= c, n = Math.sin(t2), i = 1 - (a = Math.cos(t2)), e3[0] = o * o * i + a, e3[1] = l * o * i + s * n, e3[2] = s * o * i - l * n, e3[3] = 0, e3[4] = o * l * i - s * n, e3[5] = l * l * i + a, e3[6] = s * l * i + o * n, e3[7] = 0, e3[8] = o * s * i + l * n, e3[9] = l * s * i - o * n, e3[10] = s * s * i + a, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3);
          };
        }, 3606: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = t2[0], a = t2[1], i = t2[2], o = t2[3], l = n + n, s = a + a, c = i + i, u = n * l, f = n * s, d = n * c, h = a * s, p = a * c, v = i * c, g = o * l, m = o * s, y = o * c;
            return e3[0] = 1 - (h + v), e3[1] = f + y, e3[2] = d - m, e3[3] = 0, e3[4] = f - y, e3[5] = 1 - (u + v), e3[6] = p + g, e3[7] = 0, e3[8] = d + m, e3[9] = p - g, e3[10] = 1 - (u + h), e3[11] = 0, e3[12] = r2[0], e3[13] = r2[1], e3[14] = r2[2], e3[15] = 1, e3;
          };
        }, 8698: function(e2) {
          e2.exports = function(e3, t2) {
            return e3[0] = t2[0], e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = t2[1], e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = t2[2], e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 6924: function(e2) {
          e2.exports = function(e3, t2) {
            return e3[0] = 1, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = 1, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = 1, e3[11] = 0, e3[12] = t2[0], e3[13] = t2[1], e3[14] = t2[2], e3[15] = 1, e3;
          };
        }, 1181: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = Math.sin(t2), n = Math.cos(t2);
            return e3[0] = 1, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = n, e3[6] = r2, e3[7] = 0, e3[8] = 0, e3[9] = -r2, e3[10] = n, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 5258: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = Math.sin(t2), n = Math.cos(t2);
            return e3[0] = n, e3[1] = 0, e3[2] = -r2, e3[3] = 0, e3[4] = 0, e3[5] = 1, e3[6] = 0, e3[7] = 0, e3[8] = r2, e3[9] = 0, e3[10] = n, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 4815: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = Math.sin(t2), n = Math.cos(t2);
            return e3[0] = n, e3[1] = r2, e3[2] = 0, e3[3] = 0, e3[4] = -r2, e3[5] = n, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = 1, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 7301: function(e2) {
          e2.exports = function(e3, t2, r2, n, a, i, o) {
            var l = 1 / (r2 - t2), s = 1 / (a - n), c = 1 / (i - o);
            return e3[0] = 2 * i * l, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = 2 * i * s, e3[6] = 0, e3[7] = 0, e3[8] = (r2 + t2) * l, e3[9] = (a + n) * s, e3[10] = (o + i) * c, e3[11] = -1, e3[12] = 0, e3[13] = 0, e3[14] = o * i * 2 * c, e3[15] = 0, e3;
          };
        }, 7193: function(e2) {
          e2.exports = function(e3) {
            return e3[0] = 1, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = 1, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = 1, e3[11] = 0, e3[12] = 0, e3[13] = 0, e3[14] = 0, e3[15] = 1, e3;
          };
        }, 1191: function(e2, t2, r2) {
          e2.exports = { create: r2(7519), clone: r2(9698), copy: r2(7938), identity: r2(7193), transpose: r2(256), invert: r2(6559), adjoint: r2(4840), determinant: r2(6900), multiply: r2(4787), translate: r2(4165), scale: r2(8697), rotate: r2(2416), rotateX: r2(1066), rotateY: r2(4201), rotateZ: r2(3920), fromRotation: r2(3061), fromRotationTranslation: r2(3606), fromScaling: r2(8698), fromTranslation: r2(6924), fromXRotation: r2(1181), fromYRotation: r2(5258), fromZRotation: r2(4815), fromQuat: r2(6472), frustum: r2(7301), perspective: r2(5313), perspectiveFromFieldOfView: r2(2253), ortho: r2(4633), lookAt: r2(6645), str: r2(6992) };
        }, 6559: function(e2) {
          e2.exports = function(e3, t2) {
            var r2 = t2[0], n = t2[1], a = t2[2], i = t2[3], o = t2[4], l = t2[5], s = t2[6], c = t2[7], u = t2[8], f = t2[9], d = t2[10], h = t2[11], p = t2[12], v = t2[13], g = t2[14], m = t2[15], y = r2 * l - n * o, x = r2 * s - a * o, b = r2 * c - i * o, _ = n * s - a * l, w = n * c - i * l, T = a * c - i * s, M = u * v - f * p, k = u * g - d * p, A = u * m - h * p, L = f * g - d * v, S = f * m - h * v, C = d * m - h * g, O = y * C - x * S + b * L + _ * A - w * k + T * M;
            return O ? (O = 1 / O, e3[0] = (l * C - s * S + c * L) * O, e3[1] = (a * S - n * C - i * L) * O, e3[2] = (v * T - g * w + m * _) * O, e3[3] = (d * w - f * T - h * _) * O, e3[4] = (s * A - o * C - c * k) * O, e3[5] = (r2 * C - a * A + i * k) * O, e3[6] = (g * b - p * T - m * x) * O, e3[7] = (u * T - d * b + h * x) * O, e3[8] = (o * S - l * A + c * M) * O, e3[9] = (n * A - r2 * S - i * M) * O, e3[10] = (p * w - v * b + m * y) * O, e3[11] = (f * b - u * w - h * y) * O, e3[12] = (l * k - o * L - s * M) * O, e3[13] = (r2 * L - n * k + a * M) * O, e3[14] = (v * x - p * _ - g * y) * O, e3[15] = (u * _ - f * x + d * y) * O, e3) : null;
          };
        }, 6645: function(e2, t2, r2) {
          var n = r2(7193);
          e2.exports = function(e3, t3, r3, a) {
            var i, o, l, s, c, u, f, d, h, p, v = t3[0], g = t3[1], m = t3[2], y = a[0], x = a[1], b = a[2], _ = r3[0], w = r3[1], T = r3[2];
            return Math.abs(v - _) < 1e-6 && Math.abs(g - w) < 1e-6 && Math.abs(m - T) < 1e-6 ? n(e3) : (f = v - _, d = g - w, h = m - T, i = x * (h *= p = 1 / Math.sqrt(f * f + d * d + h * h)) - b * (d *= p), o = b * (f *= p) - y * h, l = y * d - x * f, (p = Math.sqrt(i * i + o * o + l * l)) ? (i *= p = 1 / p, o *= p, l *= p) : (i = 0, o = 0, l = 0), s = d * l - h * o, c = h * i - f * l, u = f * o - d * i, (p = Math.sqrt(s * s + c * c + u * u)) ? (s *= p = 1 / p, c *= p, u *= p) : (s = 0, c = 0, u = 0), e3[0] = i, e3[1] = s, e3[2] = f, e3[3] = 0, e3[4] = o, e3[5] = c, e3[6] = d, e3[7] = 0, e3[8] = l, e3[9] = u, e3[10] = h, e3[11] = 0, e3[12] = -(i * v + o * g + l * m), e3[13] = -(s * v + c * g + u * m), e3[14] = -(f * v + d * g + h * m), e3[15] = 1, e3);
          };
        }, 4787: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = t2[0], a = t2[1], i = t2[2], o = t2[3], l = t2[4], s = t2[5], c = t2[6], u = t2[7], f = t2[8], d = t2[9], h = t2[10], p = t2[11], v = t2[12], g = t2[13], m = t2[14], y = t2[15], x = r2[0], b = r2[1], _ = r2[2], w = r2[3];
            return e3[0] = x * n + b * l + _ * f + w * v, e3[1] = x * a + b * s + _ * d + w * g, e3[2] = x * i + b * c + _ * h + w * m, e3[3] = x * o + b * u + _ * p + w * y, x = r2[4], b = r2[5], _ = r2[6], w = r2[7], e3[4] = x * n + b * l + _ * f + w * v, e3[5] = x * a + b * s + _ * d + w * g, e3[6] = x * i + b * c + _ * h + w * m, e3[7] = x * o + b * u + _ * p + w * y, x = r2[8], b = r2[9], _ = r2[10], w = r2[11], e3[8] = x * n + b * l + _ * f + w * v, e3[9] = x * a + b * s + _ * d + w * g, e3[10] = x * i + b * c + _ * h + w * m, e3[11] = x * o + b * u + _ * p + w * y, x = r2[12], b = r2[13], _ = r2[14], w = r2[15], e3[12] = x * n + b * l + _ * f + w * v, e3[13] = x * a + b * s + _ * d + w * g, e3[14] = x * i + b * c + _ * h + w * m, e3[15] = x * o + b * u + _ * p + w * y, e3;
          };
        }, 4633: function(e2) {
          e2.exports = function(e3, t2, r2, n, a, i, o) {
            var l = 1 / (t2 - r2), s = 1 / (n - a), c = 1 / (i - o);
            return e3[0] = -2 * l, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = -2 * s, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = 2 * c, e3[11] = 0, e3[12] = (t2 + r2) * l, e3[13] = (a + n) * s, e3[14] = (o + i) * c, e3[15] = 1, e3;
          };
        }, 5313: function(e2) {
          e2.exports = function(e3, t2, r2, n, a) {
            var i = 1 / Math.tan(t2 / 2), o = 1 / (n - a);
            return e3[0] = i / r2, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = i, e3[6] = 0, e3[7] = 0, e3[8] = 0, e3[9] = 0, e3[10] = (a + n) * o, e3[11] = -1, e3[12] = 0, e3[13] = 0, e3[14] = 2 * a * n * o, e3[15] = 0, e3;
          };
        }, 2253: function(e2) {
          e2.exports = function(e3, t2, r2, n) {
            var a = Math.tan(t2.upDegrees * Math.PI / 180), i = Math.tan(t2.downDegrees * Math.PI / 180), o = Math.tan(t2.leftDegrees * Math.PI / 180), l = Math.tan(t2.rightDegrees * Math.PI / 180), s = 2 / (o + l), c = 2 / (a + i);
            return e3[0] = s, e3[1] = 0, e3[2] = 0, e3[3] = 0, e3[4] = 0, e3[5] = c, e3[6] = 0, e3[7] = 0, e3[8] = -(o - l) * s * 0.5, e3[9] = (a - i) * c * 0.5, e3[10] = n / (r2 - n), e3[11] = -1, e3[12] = 0, e3[13] = 0, e3[14] = n * r2 / (r2 - n), e3[15] = 0, e3;
          };
        }, 2416: function(e2) {
          e2.exports = function(e3, t2, r2, n) {
            var a, i, o, l, s, c, u, f, d, h, p, v, g, m, y, x, b, _, w, T, M, k, A, L, S = n[0], C = n[1], O = n[2], D = Math.sqrt(S * S + C * C + O * O);
            return Math.abs(D) < 1e-6 ? null : (S *= D = 1 / D, C *= D, O *= D, a = Math.sin(r2), o = 1 - (i = Math.cos(r2)), l = t2[0], s = t2[1], c = t2[2], u = t2[3], f = t2[4], d = t2[5], h = t2[6], p = t2[7], v = t2[8], g = t2[9], m = t2[10], y = t2[11], x = S * S * o + i, b = C * S * o + O * a, _ = O * S * o - C * a, w = S * C * o - O * a, T = C * C * o + i, M = O * C * o + S * a, k = S * O * o + C * a, A = C * O * o - S * a, L = O * O * o + i, e3[0] = l * x + f * b + v * _, e3[1] = s * x + d * b + g * _, e3[2] = c * x + h * b + m * _, e3[3] = u * x + p * b + y * _, e3[4] = l * w + f * T + v * M, e3[5] = s * w + d * T + g * M, e3[6] = c * w + h * T + m * M, e3[7] = u * w + p * T + y * M, e3[8] = l * k + f * A + v * L, e3[9] = s * k + d * A + g * L, e3[10] = c * k + h * A + m * L, e3[11] = u * k + p * A + y * L, t2 !== e3 && (e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15]), e3);
          };
        }, 1066: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = Math.sin(r2), a = Math.cos(r2), i = t2[4], o = t2[5], l = t2[6], s = t2[7], c = t2[8], u = t2[9], f = t2[10], d = t2[11];
            return t2 !== e3 && (e3[0] = t2[0], e3[1] = t2[1], e3[2] = t2[2], e3[3] = t2[3], e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15]), e3[4] = i * a + c * n, e3[5] = o * a + u * n, e3[6] = l * a + f * n, e3[7] = s * a + d * n, e3[8] = c * a - i * n, e3[9] = u * a - o * n, e3[10] = f * a - l * n, e3[11] = d * a - s * n, e3;
          };
        }, 4201: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = Math.sin(r2), a = Math.cos(r2), i = t2[0], o = t2[1], l = t2[2], s = t2[3], c = t2[8], u = t2[9], f = t2[10], d = t2[11];
            return t2 !== e3 && (e3[4] = t2[4], e3[5] = t2[5], e3[6] = t2[6], e3[7] = t2[7], e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15]), e3[0] = i * a - c * n, e3[1] = o * a - u * n, e3[2] = l * a - f * n, e3[3] = s * a - d * n, e3[8] = i * n + c * a, e3[9] = o * n + u * a, e3[10] = l * n + f * a, e3[11] = s * n + d * a, e3;
          };
        }, 3920: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = Math.sin(r2), a = Math.cos(r2), i = t2[0], o = t2[1], l = t2[2], s = t2[3], c = t2[4], u = t2[5], f = t2[6], d = t2[7];
            return t2 !== e3 && (e3[8] = t2[8], e3[9] = t2[9], e3[10] = t2[10], e3[11] = t2[11], e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15]), e3[0] = i * a + c * n, e3[1] = o * a + u * n, e3[2] = l * a + f * n, e3[3] = s * a + d * n, e3[4] = c * a - i * n, e3[5] = u * a - o * n, e3[6] = f * a - l * n, e3[7] = d * a - s * n, e3;
          };
        }, 8697: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = r2[0], a = r2[1], i = r2[2];
            return e3[0] = t2[0] * n, e3[1] = t2[1] * n, e3[2] = t2[2] * n, e3[3] = t2[3] * n, e3[4] = t2[4] * a, e3[5] = t2[5] * a, e3[6] = t2[6] * a, e3[7] = t2[7] * a, e3[8] = t2[8] * i, e3[9] = t2[9] * i, e3[10] = t2[10] * i, e3[11] = t2[11] * i, e3[12] = t2[12], e3[13] = t2[13], e3[14] = t2[14], e3[15] = t2[15], e3;
          };
        }, 6992: function(e2) {
          e2.exports = function(e3) {
            return "mat4(" + e3[0] + ", " + e3[1] + ", " + e3[2] + ", " + e3[3] + ", " + e3[4] + ", " + e3[5] + ", " + e3[6] + ", " + e3[7] + ", " + e3[8] + ", " + e3[9] + ", " + e3[10] + ", " + e3[11] + ", " + e3[12] + ", " + e3[13] + ", " + e3[14] + ", " + e3[15] + ")";
          };
        }, 4165: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n, a, i, o, l, s, c, u, f, d, h, p, v = r2[0], g = r2[1], m = r2[2];
            return t2 === e3 ? (e3[12] = t2[0] * v + t2[4] * g + t2[8] * m + t2[12], e3[13] = t2[1] * v + t2[5] * g + t2[9] * m + t2[13], e3[14] = t2[2] * v + t2[6] * g + t2[10] * m + t2[14], e3[15] = t2[3] * v + t2[7] * g + t2[11] * m + t2[15]) : (n = t2[0], a = t2[1], i = t2[2], o = t2[3], l = t2[4], s = t2[5], c = t2[6], u = t2[7], f = t2[8], d = t2[9], h = t2[10], p = t2[11], e3[0] = n, e3[1] = a, e3[2] = i, e3[3] = o, e3[4] = l, e3[5] = s, e3[6] = c, e3[7] = u, e3[8] = f, e3[9] = d, e3[10] = h, e3[11] = p, e3[12] = n * v + l * g + f * m + t2[12], e3[13] = a * v + s * g + d * m + t2[13], e3[14] = i * v + c * g + h * m + t2[14], e3[15] = o * v + u * g + p * m + t2[15]), e3;
          };
        }, 256: function(e2) {
          e2.exports = function(e3, t2) {
            if (e3 === t2) {
              var r2 = t2[1], n = t2[2], a = t2[3], i = t2[6], o = t2[7], l = t2[11];
              e3[1] = t2[4], e3[2] = t2[8], e3[3] = t2[12], e3[4] = r2, e3[6] = t2[9], e3[7] = t2[13], e3[8] = n, e3[9] = i, e3[11] = t2[14], e3[12] = a, e3[13] = o, e3[14] = l;
            } else e3[0] = t2[0], e3[1] = t2[4], e3[2] = t2[8], e3[3] = t2[12], e3[4] = t2[1], e3[5] = t2[5], e3[6] = t2[9], e3[7] = t2[13], e3[8] = t2[2], e3[9] = t2[6], e3[10] = t2[10], e3[11] = t2[14], e3[12] = t2[3], e3[13] = t2[7], e3[14] = t2[11], e3[15] = t2[15];
            return e3;
          };
        }, 9784: function(e2, t2, r2) {
          var n, a = r2(8253);
          n = "function" == typeof r2.g.matchMedia ? !r2.g.matchMedia("(hover: none)").matches : a, e2.exports = n;
        }, 4043: function(e2, t2, r2) {
          var n = r2(8253);
          e2.exports = n && function() {
            var e3 = false;
            try {
              var t3 = Object.defineProperty({}, "passive", { get: function() {
                e3 = true;
              } });
              window.addEventListener("test", null, t3), window.removeEventListener("test", null, t3);
            } catch (t4) {
              e3 = false;
            }
            return e3;
          }();
        }, 8253: function(e2) {
          e2.exports = true;
        }, 9914: function(e2) {
          e2.exports = function(e3) {
            for (var t2, r2 = e3.length, n = 0; n < r2; n++) if (((t2 = e3.charCodeAt(n)) < 9 || t2 > 13) && 32 !== t2 && 133 !== t2 && 160 !== t2 && 5760 !== t2 && 6158 !== t2 && (t2 < 8192 || t2 > 8205) && 8232 !== t2 && 8233 !== t2 && 8239 !== t2 && 8287 !== t2 && 8288 !== t2 && 12288 !== t2 && 65279 !== t2) return false;
            return true;
          };
        }, 4039: function(e2) {
          var t2 = { left: 0, top: 0 };
          e2.exports = function(e3, r2, n) {
            r2 = r2 || e3.currentTarget || e3.srcElement, Array.isArray(n) || (n = [0, 0]);
            var a, i = e3.clientX || 0, o = e3.clientY || 0, l = (a = r2) === window || a === document || a === document.body ? t2 : a.getBoundingClientRect();
            return n[0] = i - l.left, n[1] = o - l.top, n;
          };
        }, 1116: function(e2, t2, r2) {
          var n, a, i, o;
          a = "Promise", o = function() {
            var e3, t3, r3, n2 = Object.prototype.toString, a2 = "undefined" != typeof setImmediate ? function(e4) {
              return setImmediate(e4);
            } : setTimeout;
            try {
              Object.defineProperty({}, "x", {}), e3 = function(e4, t4, r4, n3) {
                return Object.defineProperty(e4, t4, { value: r4, writable: true, configurable: false !== n3 });
              };
            } catch (t4) {
              e3 = function(e4, t5, r4) {
                return e4[t5] = r4, e4;
              };
            }
            function i2(e4, n3) {
              r3.add(e4, n3), t3 || (t3 = a2(r3.drain));
            }
            function o2(e4) {
              var t4, r4 = typeof e4;
              return null == e4 || "object" != r4 && "function" != r4 || (t4 = e4.then), "function" == typeof t4 && t4;
            }
            function l() {
              for (var e4 = 0; e4 < this.chain.length; e4++) s(this, 1 === this.state ? this.chain[e4].success : this.chain[e4].failure, this.chain[e4]);
              this.chain.length = 0;
            }
            function s(e4, t4, r4) {
              var n3, a3;
              try {
                false === t4 ? r4.reject(e4.msg) : (n3 = true === t4 ? e4.msg : t4.call(void 0, e4.msg)) === r4.promise ? r4.reject(TypeError("Promise-chain cycle")) : (a3 = o2(n3)) ? a3.call(n3, r4.resolve, r4.reject) : r4.resolve(n3);
              } catch (e5) {
                r4.reject(e5);
              }
            }
            function c(e4) {
              var t4, r4 = this;
              if (!r4.triggered) {
                r4.triggered = true, r4.def && (r4 = r4.def);
                try {
                  (t4 = o2(e4)) ? i2(function() {
                    var n3 = new d(r4);
                    try {
                      t4.call(e4, function() {
                        c.apply(n3, arguments);
                      }, function() {
                        u.apply(n3, arguments);
                      });
                    } catch (e5) {
                      u.call(n3, e5);
                    }
                  }) : (r4.msg = e4, r4.state = 1, r4.chain.length > 0 && i2(l, r4));
                } catch (e5) {
                  u.call(new d(r4), e5);
                }
              }
            }
            function u(e4) {
              var t4 = this;
              t4.triggered || (t4.triggered = true, t4.def && (t4 = t4.def), t4.msg = e4, t4.state = 2, t4.chain.length > 0 && i2(l, t4));
            }
            function f(e4, t4, r4, n3) {
              for (var a3 = 0; a3 < t4.length; a3++) !function(a4) {
                e4.resolve(t4[a4]).then(function(e5) {
                  r4(a4, e5);
                }, n3);
              }(a3);
            }
            function d(e4) {
              this.def = e4, this.triggered = false;
            }
            function h(e4) {
              this.promise = e4, this.state = 0, this.triggered = false, this.chain = [], this.msg = void 0;
            }
            function p(e4) {
              if ("function" != typeof e4) throw TypeError("Not a function");
              if (0 !== this.__NPO__) throw TypeError("Not a promise");
              this.__NPO__ = 1;
              var t4 = new h(this);
              this.then = function(e5, r4) {
                var n3 = { success: "function" != typeof e5 || e5, failure: "function" == typeof r4 && r4 };
                return n3.promise = new this.constructor(function(e6, t5) {
                  if ("function" != typeof e6 || "function" != typeof t5) throw TypeError("Not a function");
                  n3.resolve = e6, n3.reject = t5;
                }), t4.chain.push(n3), 0 !== t4.state && i2(l, t4), n3.promise;
              }, this.catch = function(e5) {
                return this.then(void 0, e5);
              };
              try {
                e4.call(void 0, function(e5) {
                  c.call(t4, e5);
                }, function(e5) {
                  u.call(t4, e5);
                });
              } catch (e5) {
                u.call(t4, e5);
              }
            }
            r3 = /* @__PURE__ */ function() {
              var e4, r4, n3;
              function a3(e5, t4) {
                this.fn = e5, this.self = t4, this.next = void 0;
              }
              return { add: function(t4, i3) {
                n3 = new a3(t4, i3), r4 ? r4.next = n3 : e4 = n3, r4 = n3, n3 = void 0;
              }, drain: function() {
                var n4 = e4;
                for (e4 = r4 = t3 = void 0; n4; ) n4.fn.call(n4.self), n4 = n4.next;
              } };
            }();
            var v = e3({}, "constructor", p, false);
            return p.prototype = v, e3(v, "__NPO__", 0, false), e3(p, "resolve", function(e4) {
              return e4 && "object" == typeof e4 && 1 === e4.__NPO__ ? e4 : new this(function(t4, r4) {
                if ("function" != typeof t4 || "function" != typeof r4) throw TypeError("Not a function");
                t4(e4);
              });
            }), e3(p, "reject", function(e4) {
              return new this(function(t4, r4) {
                if ("function" != typeof t4 || "function" != typeof r4) throw TypeError("Not a function");
                r4(e4);
              });
            }), e3(p, "all", function(e4) {
              var t4 = this;
              return "[object Array]" != n2.call(e4) ? t4.reject(TypeError("Not an array")) : 0 === e4.length ? t4.resolve([]) : new t4(function(r4, n3) {
                if ("function" != typeof r4 || "function" != typeof n3) throw TypeError("Not a function");
                var a3 = e4.length, i3 = Array(a3), o3 = 0;
                f(t4, e4, function(e5, t5) {
                  i3[e5] = t5, ++o3 === a3 && r4(i3);
                }, n3);
              });
            }), e3(p, "race", function(e4) {
              var t4 = this;
              return "[object Array]" != n2.call(e4) ? t4.reject(TypeError("Not an array")) : new t4(function(r4, n3) {
                if ("function" != typeof r4 || "function" != typeof n3) throw TypeError("Not a function");
                f(t4, e4, function(e5, t5) {
                  r4(t5);
                }, n3);
              });
            }), p;
          }, (i = void 0 !== r2.g ? r2.g : this)[a] = i[a] || o(), e2.exports ? e2.exports = i[a] : void 0 === (n = (function() {
            return i[a];
          }).call(t2, r2, t2, e2)) || (e2.exports = n);
        }, 7976: function(e2) {
          var t2 = Object.getOwnPropertySymbols, r2 = Object.prototype.hasOwnProperty, n = Object.prototype.propertyIsEnumerable;
          e2.exports = function() {
            try {
              if (!Object.assign) return false;
              var e3 = new String("abc");
              if (e3[5] = "de", "5" === Object.getOwnPropertyNames(e3)[0]) return false;
              for (var t3 = {}, r3 = 0; r3 < 10; r3++) t3["_" + String.fromCharCode(r3)] = r3;
              if ("0123456789" !== Object.getOwnPropertyNames(t3).map(function(e4) {
                return t3[e4];
              }).join("")) return false;
              var n2 = {};
              return "abcdefghijklmnopqrst".split("").forEach(function(e4) {
                n2[e4] = e4;
              }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, n2)).join("");
            } catch (e4) {
              return false;
            }
          }() ? Object.assign : function(e3, a) {
            for (var i, o, l = function(e4) {
              if (null == e4) throw new TypeError("Object.assign cannot be called with null or undefined");
              return Object(e4);
            }(e3), s = 1; s < arguments.length; s++) {
              for (var c in i = Object(arguments[s])) r2.call(i, c) && (l[c] = i[c]);
              if (t2) {
                o = t2(i);
                for (var u = 0; u < o.length; u++) n.call(i, o[u]) && (l[o[u]] = i[o[u]]);
              }
            }
            return l;
          };
        }, 6953: function(e2) {
          e2.exports = function(e3) {
            var a = [];
            return e3.replace(r2, function(e4, r3, i) {
              var o = r3.toLowerCase();
              for (i = function(e5) {
                var t3 = e5.match(n);
                return t3 ? t3.map(Number) : [];
              }(i), "m" == o && i.length > 2 && (a.push([r3].concat(i.splice(0, 2))), o = "l", r3 = "m" == r3 ? "l" : "L"); ; ) {
                if (i.length == t2[o]) return i.unshift(r3), a.push(i);
                if (i.length < t2[o]) throw new Error("malformed path data");
                a.push([r3].concat(i.splice(0, t2[o])));
              }
            }), a;
          };
          var t2 = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, r2 = /([astvzqmhlc])([^astvzqmhlc]*)/gi, n = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;
        }, 2773: function(e2) {
          e2.exports = function(e3, t2, r2, n) {
            var a = e3[0], i = e3[1], o = false;
            void 0 === r2 && (r2 = 0), void 0 === n && (n = t2.length);
            for (var l = n - r2, s = 0, c = l - 1; s < l; c = s++) {
              var u = t2[s + r2][0], f = t2[s + r2][1], d = t2[c + r2][0], h = t2[c + r2][1];
              f > i != h > i && a < (d - u) * (i - f) / (h - f) + u && (o = !o);
            }
            return o;
          };
        }, 1516: function(e2, t2, r2) {
          var n, a = r2(2391), i = r2(2990), o = r2(6202), l = r2(2222), s = r2(7527), c = r2(4491), u = false, f = i();
          function d(e3, t3, r3) {
            var a2 = n.segments(e3), i2 = n.segments(t3), o2 = r3(n.combine(a2, i2));
            return n.polygon(o2);
          }
          n = { buildLog: function(e3) {
            return true === e3 ? u = a() : false === e3 && (u = false), false !== u && u.list;
          }, epsilon: function(e3) {
            return f.epsilon(e3);
          }, segments: function(e3) {
            var t3 = o(true, f, u);
            return e3.regions.forEach(t3.addRegion), { segments: t3.calculate(e3.inverted), inverted: e3.inverted };
          }, combine: function(e3, t3) {
            return { combined: o(false, f, u).calculate(e3.segments, e3.inverted, t3.segments, t3.inverted), inverted1: e3.inverted, inverted2: t3.inverted };
          }, selectUnion: function(e3) {
            return { segments: s.union(e3.combined, u), inverted: e3.inverted1 || e3.inverted2 };
          }, selectIntersect: function(e3) {
            return { segments: s.intersect(e3.combined, u), inverted: e3.inverted1 && e3.inverted2 };
          }, selectDifference: function(e3) {
            return { segments: s.difference(e3.combined, u), inverted: e3.inverted1 && !e3.inverted2 };
          }, selectDifferenceRev: function(e3) {
            return { segments: s.differenceRev(e3.combined, u), inverted: !e3.inverted1 && e3.inverted2 };
          }, selectXor: function(e3) {
            return { segments: s.xor(e3.combined, u), inverted: e3.inverted1 !== e3.inverted2 };
          }, polygon: function(e3) {
            return { regions: l(e3.segments, f, u), inverted: e3.inverted };
          }, polygonFromGeoJSON: function(e3) {
            return c.toPolygon(n, e3);
          }, polygonToGeoJSON: function(e3) {
            return c.fromPolygon(n, f, e3);
          }, union: function(e3, t3) {
            return d(e3, t3, n.selectUnion);
          }, intersect: function(e3, t3) {
            return d(e3, t3, n.selectIntersect);
          }, difference: function(e3, t3) {
            return d(e3, t3, n.selectDifference);
          }, differenceRev: function(e3, t3) {
            return d(e3, t3, n.selectDifferenceRev);
          }, xor: function(e3, t3) {
            return d(e3, t3, n.selectXor);
          } }, "object" == typeof window && (window.PolyBool = n), e2.exports = n;
        }, 2391: function(e2) {
          e2.exports = function() {
            var e3, t2 = 0, r2 = false;
            function n(t3, r3) {
              return e3.list.push({ type: t3, data: r3 ? JSON.parse(JSON.stringify(r3)) : void 0 }), e3;
            }
            return e3 = { list: [], segmentId: function() {
              return t2++;
            }, checkIntersection: function(e4, t3) {
              return n("check", { seg1: e4, seg2: t3 });
            }, segmentChop: function(e4, t3) {
              return n("div_seg", { seg: e4, pt: t3 }), n("chop", { seg: e4, pt: t3 });
            }, statusRemove: function(e4) {
              return n("pop_seg", { seg: e4 });
            }, segmentUpdate: function(e4) {
              return n("seg_update", { seg: e4 });
            }, segmentNew: function(e4, t3) {
              return n("new_seg", { seg: e4, primary: t3 });
            }, segmentRemove: function(e4) {
              return n("rem_seg", { seg: e4 });
            }, tempStatus: function(e4, t3, r3) {
              return n("temp_status", { seg: e4, above: t3, below: r3 });
            }, rewind: function(e4) {
              return n("rewind", { seg: e4 });
            }, status: function(e4, t3, r3) {
              return n("status", { seg: e4, above: t3, below: r3 });
            }, vert: function(t3) {
              return t3 === r2 ? e3 : (r2 = t3, n("vert", { x: t3 }));
            }, log: function(e4) {
              return "string" != typeof e4 && (e4 = JSON.stringify(e4, false, "  ")), n("log", { txt: e4 });
            }, reset: function() {
              return n("reset");
            }, selected: function(e4) {
              return n("selected", { segs: e4 });
            }, chainStart: function(e4) {
              return n("chain_start", { seg: e4 });
            }, chainRemoveHead: function(e4, t3) {
              return n("chain_rem_head", { index: e4, pt: t3 });
            }, chainRemoveTail: function(e4, t3) {
              return n("chain_rem_tail", { index: e4, pt: t3 });
            }, chainNew: function(e4, t3) {
              return n("chain_new", { pt1: e4, pt2: t3 });
            }, chainMatch: function(e4) {
              return n("chain_match", { index: e4 });
            }, chainClose: function(e4) {
              return n("chain_close", { index: e4 });
            }, chainAddHead: function(e4, t3) {
              return n("chain_add_head", { index: e4, pt: t3 });
            }, chainAddTail: function(e4, t3) {
              return n("chain_add_tail", { index: e4, pt: t3 });
            }, chainConnect: function(e4, t3) {
              return n("chain_con", { index1: e4, index2: t3 });
            }, chainReverse: function(e4) {
              return n("chain_rev", { index: e4 });
            }, chainJoin: function(e4, t3) {
              return n("chain_join", { index1: e4, index2: t3 });
            }, done: function() {
              return n("done");
            } };
          };
        }, 2990: function(e2) {
          e2.exports = function(e3) {
            "number" != typeof e3 && (e3 = 1e-10);
            var t2 = { epsilon: function(t3) {
              return "number" == typeof t3 && (e3 = t3), e3;
            }, pointAboveOrOnLine: function(t3, r2, n) {
              var a = r2[0], i = r2[1], o = n[0], l = n[1], s = t3[0];
              return (o - a) * (t3[1] - i) - (l - i) * (s - a) >= -e3;
            }, pointBetween: function(t3, r2, n) {
              var a = t3[1] - r2[1], i = n[0] - r2[0], o = t3[0] - r2[0], l = n[1] - r2[1], s = o * i + a * l;
              return !(s < e3 || s - (i * i + l * l) > -e3);
            }, pointsSameX: function(t3, r2) {
              return Math.abs(t3[0] - r2[0]) < e3;
            }, pointsSameY: function(t3, r2) {
              return Math.abs(t3[1] - r2[1]) < e3;
            }, pointsSame: function(e4, r2) {
              return t2.pointsSameX(e4, r2) && t2.pointsSameY(e4, r2);
            }, pointsCompare: function(e4, r2) {
              return t2.pointsSameX(e4, r2) ? t2.pointsSameY(e4, r2) ? 0 : e4[1] < r2[1] ? -1 : 1 : e4[0] < r2[0] ? -1 : 1;
            }, pointsCollinear: function(t3, r2, n) {
              var a = t3[0] - r2[0], i = t3[1] - r2[1], o = r2[0] - n[0], l = r2[1] - n[1];
              return Math.abs(a * l - o * i) < e3;
            }, linesIntersect: function(t3, r2, n, a) {
              var i = r2[0] - t3[0], o = r2[1] - t3[1], l = a[0] - n[0], s = a[1] - n[1], c = i * s - o * l;
              if (Math.abs(c) < e3) return false;
              var u = t3[0] - n[0], f = t3[1] - n[1], d = (l * f - s * u) / c, h = (i * f - o * u) / c, p = { alongA: 0, alongB: 0, pt: [t3[0] + d * i, t3[1] + d * o] };
              return p.alongA = d <= -e3 ? -2 : d < e3 ? -1 : d - 1 <= -e3 ? 0 : d - 1 < e3 ? 1 : 2, p.alongB = h <= -e3 ? -2 : h < e3 ? -1 : h - 1 <= -e3 ? 0 : h - 1 < e3 ? 1 : 2, p;
            }, pointInsideRegion: function(t3, r2) {
              for (var n = t3[0], a = t3[1], i = r2[r2.length - 1][0], o = r2[r2.length - 1][1], l = false, s = 0; s < r2.length; s++) {
                var c = r2[s][0], u = r2[s][1];
                u - a > e3 != o - a > e3 && (i - c) * (a - u) / (o - u) + c - n > e3 && (l = !l), i = c, o = u;
              }
              return l;
            } };
            return t2;
          };
        }, 4491: function(e2) {
          var t2 = { toPolygon: function(e3, t3) {
            function r2(t4) {
              if (t4.length <= 0) return e3.segments({ inverted: false, regions: [] });
              function r3(t5) {
                var r4 = t5.slice(0, t5.length - 1);
                return e3.segments({ inverted: false, regions: [r4] });
              }
              for (var n2 = r3(t4[0]), a2 = 1; a2 < t4.length; a2++) n2 = e3.selectDifference(e3.combine(n2, r3(t4[a2])));
              return n2;
            }
            if ("Polygon" === t3.type) return e3.polygon(r2(t3.coordinates));
            if ("MultiPolygon" === t3.type) {
              for (var n = e3.segments({ inverted: false, regions: [] }), a = 0; a < t3.coordinates.length; a++) n = e3.selectUnion(e3.combine(n, r2(t3.coordinates[a])));
              return e3.polygon(n);
            }
            throw new Error("PolyBool: Cannot convert GeoJSON object to PolyBool polygon");
          }, fromPolygon: function(e3, t3, r2) {
            function n(e4, r3) {
              return t3.pointInsideRegion([0.5 * (e4[0][0] + e4[1][0]), 0.5 * (e4[0][1] + e4[1][1])], r3);
            }
            function a(e4) {
              return { region: e4, children: [] };
            }
            r2 = e3.polygon(e3.segments(r2));
            var i = a(null);
            function o(e4, t4) {
              for (var r3 = 0; r3 < e4.children.length; r3++) if (n(t4, (l2 = e4.children[r3]).region)) return void o(l2, t4);
              var i2 = a(t4);
              for (r3 = 0; r3 < e4.children.length; r3++) {
                var l2;
                n((l2 = e4.children[r3]).region, t4) && (i2.children.push(l2), e4.children.splice(r3, 1), r3--);
              }
              e4.children.push(i2);
            }
            for (var l = 0; l < r2.regions.length; l++) {
              var s = r2.regions[l];
              s.length < 3 || o(i, s);
            }
            function c(e4, t4) {
              for (var r3 = 0, n2 = e4[e4.length - 1][0], a2 = e4[e4.length - 1][1], i2 = [], o2 = 0; o2 < e4.length; o2++) {
                var l2 = e4[o2][0], s2 = e4[o2][1];
                i2.push([l2, s2]), r3 += s2 * n2 - l2 * a2, n2 = l2, a2 = s2;
              }
              return r3 < 0 !== t4 && i2.reverse(), i2.push([i2[0][0], i2[0][1]]), i2;
            }
            var u = [];
            function f(e4) {
              var t4 = [c(e4.region, false)];
              u.push(t4);
              for (var r3 = 0; r3 < e4.children.length; r3++) t4.push(d(e4.children[r3]));
            }
            function d(e4) {
              for (var t4 = 0; t4 < e4.children.length; t4++) f(e4.children[t4]);
              return c(e4.region, true);
            }
            for (l = 0; l < i.children.length; l++) f(i.children[l]);
            return u.length <= 0 ? { type: "Polygon", coordinates: [] } : 1 == u.length ? { type: "Polygon", coordinates: u[0] } : { type: "MultiPolygon", coordinates: u };
          } };
          e2.exports = t2;
        }, 6202: function(e2, t2, r2) {
          var n = r2(8916);
          e2.exports = function(e3, t3, r3) {
            function a(e4, t4, n2) {
              return { id: r3 ? r3.segmentId() : -1, start: e4, end: t4, myFill: { above: n2.myFill.above, below: n2.myFill.below }, otherFill: null };
            }
            var i = n.create();
            function o(e4, r4) {
              i.insertBefore(e4, function(n2) {
                return a2 = e4.isStart, i2 = e4.pt, o2 = r4, l2 = n2.isStart, s2 = n2.pt, c2 = n2.other.pt, (0 !== (u = t3.pointsCompare(i2, s2)) ? u : t3.pointsSame(o2, c2) ? 0 : a2 !== l2 ? a2 ? 1 : -1 : t3.pointAboveOrOnLine(o2, l2 ? s2 : c2, l2 ? c2 : s2) ? 1 : -1) < 0;
                var a2, i2, o2, l2, s2, c2, u;
              });
            }
            function l(e4, t4) {
              var r4 = function(e5, t5) {
                var r5 = n.node({ isStart: true, pt: e5.start, seg: e5, primary: t5, other: null, status: null });
                return o(r5, e5.end), r5;
              }(e4, t4);
              return function(e5, t5, r5) {
                var a2 = n.node({ isStart: false, pt: t5.end, seg: t5, primary: r5, other: e5, status: null });
                e5.other = a2, o(a2, e5.pt);
              }(r4, e4, t4), r4;
            }
            function s(e4, t4) {
              var n2 = a(t4, e4.seg.end, e4.seg);
              return function(e5, t5) {
                r3 && r3.segmentChop(e5.seg, t5), e5.other.remove(), e5.seg.end = t5, e5.other.pt = t5, o(e5.other, e5.pt);
              }(e4, t4), l(n2, e4.primary);
            }
            function c(a2, o2) {
              var l2 = n.create();
              function c2(e4) {
                return l2.findTransition(function(r4) {
                  var n2, a3, i2, o3, l3, s2;
                  return n2 = e4, a3 = r4.ev, i2 = n2.seg.start, o3 = n2.seg.end, l3 = a3.seg.start, s2 = a3.seg.end, (t3.pointsCollinear(i2, l3, s2) ? t3.pointsCollinear(o3, l3, s2) || t3.pointAboveOrOnLine(o3, l3, s2) ? 1 : -1 : t3.pointAboveOrOnLine(i2, l3, s2) ? 1 : -1) > 0;
                });
              }
              function u(e4, n2) {
                var a3 = e4.seg, i2 = n2.seg, o3 = a3.start, l3 = a3.end, c3 = i2.start, u2 = i2.end;
                r3 && r3.checkIntersection(a3, i2);
                var f2 = t3.linesIntersect(o3, l3, c3, u2);
                if (false === f2) {
                  if (!t3.pointsCollinear(o3, l3, c3)) return false;
                  if (t3.pointsSame(o3, u2) || t3.pointsSame(l3, c3)) return false;
                  var d2 = t3.pointsSame(o3, c3), h2 = t3.pointsSame(l3, u2);
                  if (d2 && h2) return n2;
                  var p2 = !d2 && t3.pointBetween(o3, c3, u2), v2 = !h2 && t3.pointBetween(l3, c3, u2);
                  if (d2) return v2 ? s(n2, l3) : s(e4, u2), n2;
                  p2 && (h2 || (v2 ? s(n2, l3) : s(e4, u2)), s(n2, o3));
                } else 0 === f2.alongA && (-1 === f2.alongB ? s(e4, c3) : 0 === f2.alongB ? s(e4, f2.pt) : 1 === f2.alongB && s(e4, u2)), 0 === f2.alongB && (-1 === f2.alongA ? s(n2, o3) : 0 === f2.alongA ? s(n2, f2.pt) : 1 === f2.alongA && s(n2, l3));
                return false;
              }
              for (var f = []; !i.isEmpty(); ) {
                var d = i.getHead();
                if (r3 && r3.vert(d.pt[0]), d.isStart) {
                  let g = function() {
                    if (p) {
                      var e4 = u(d, p);
                      if (e4) return e4;
                    }
                    return !!v && u(d, v);
                  };
                  r3 && r3.segmentNew(d.seg, d.primary);
                  var h = c2(d), p = h.before ? h.before.ev : null, v = h.after ? h.after.ev : null;
                  r3 && r3.tempStatus(d.seg, !!p && p.seg, !!v && v.seg);
                  var m, y, x = g();
                  if (x) e3 ? (y = null === d.seg.myFill.below || d.seg.myFill.above !== d.seg.myFill.below) && (x.seg.myFill.above = !x.seg.myFill.above) : x.seg.otherFill = d.seg.myFill, r3 && r3.segmentUpdate(x.seg), d.other.remove(), d.remove();
                  if (i.getHead() !== d) {
                    r3 && r3.rewind(d.seg);
                    continue;
                  }
                  e3 ? (y = null === d.seg.myFill.below || d.seg.myFill.above !== d.seg.myFill.below, d.seg.myFill.below = v ? v.seg.myFill.above : a2, d.seg.myFill.above = y ? !d.seg.myFill.below : d.seg.myFill.below) : null === d.seg.otherFill && (m = v ? d.primary === v.primary ? v.seg.otherFill.above : v.seg.myFill.above : d.primary ? o2 : a2, d.seg.otherFill = { above: m, below: m }), r3 && r3.status(d.seg, !!p && p.seg, !!v && v.seg), d.other.status = h.insert(n.node({ ev: d }));
                } else {
                  var b = d.status;
                  if (null === b) throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");
                  if (l2.exists(b.prev) && l2.exists(b.next) && u(b.prev.ev, b.next.ev), r3 && r3.statusRemove(b.ev.seg), b.remove(), !d.primary) {
                    var _ = d.seg.myFill;
                    d.seg.myFill = d.seg.otherFill, d.seg.otherFill = _;
                  }
                  f.push(d.seg);
                }
                i.getHead().remove();
              }
              return r3 && r3.done(), f;
            }
            return e3 ? { addRegion: function(e4) {
              for (var n2, a2, i2, o2 = e4[e4.length - 1], s2 = 0; s2 < e4.length; s2++) {
                n2 = o2, o2 = e4[s2];
                var c2 = t3.pointsCompare(n2, o2);
                0 !== c2 && l((a2 = c2 < 0 ? n2 : o2, i2 = c2 < 0 ? o2 : n2, { id: r3 ? r3.segmentId() : -1, start: a2, end: i2, myFill: { above: null, below: null }, otherFill: null }), true);
              }
            }, calculate: function(e4) {
              return c(e4, false);
            } } : { calculate: function(e4, t4, r4, n2) {
              return e4.forEach(function(e5) {
                l(a(e5.start, e5.end, e5), true);
              }), r4.forEach(function(e5) {
                l(a(e5.start, e5.end, e5), false);
              }), c(t4, n2);
            } };
          };
        }, 8916: function(e2) {
          e2.exports = { create: function() {
            var e3 = { root: { root: true, next: null }, exists: function(t2) {
              return null !== t2 && t2 !== e3.root;
            }, isEmpty: function() {
              return null === e3.root.next;
            }, getHead: function() {
              return e3.root.next;
            }, insertBefore: function(t2, r2) {
              for (var n = e3.root, a = e3.root.next; null !== a; ) {
                if (r2(a)) return t2.prev = a.prev, t2.next = a, a.prev.next = t2, void (a.prev = t2);
                n = a, a = a.next;
              }
              n.next = t2, t2.prev = n, t2.next = null;
            }, findTransition: function(t2) {
              for (var r2 = e3.root, n = e3.root.next; null !== n && !t2(n); ) r2 = n, n = n.next;
              return { before: r2 === e3.root ? null : r2, after: n, insert: function(e4) {
                return e4.prev = r2, e4.next = n, r2.next = e4, null !== n && (n.prev = e4), e4;
              } };
            } };
            return e3;
          }, node: function(e3) {
            return e3.prev = null, e3.next = null, e3.remove = function() {
              e3.prev.next = e3.next, e3.next && (e3.next.prev = e3.prev), e3.prev = null, e3.next = null;
            }, e3;
          } };
        }, 2222: function(e2) {
          e2.exports = function(e3, t2, r2) {
            var n = [], a = [];
            return e3.forEach(function(e4) {
              var i = e4.start, o = e4.end;
              if (t2.pointsSame(i, o)) console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");
              else {
                r2 && r2.chainStart(e4);
                for (var l = { index: 0, matches_head: false, matches_pt1: false }, s = { index: 0, matches_head: false, matches_pt1: false }, c = l, u = 0; u < n.length; u++) {
                  var f = (g = n[u])[0], d = (g[1], g[g.length - 1]);
                  if (g[g.length - 2], t2.pointsSame(f, i)) {
                    if (M(u, true, true)) break;
                  } else if (t2.pointsSame(f, o)) {
                    if (M(u, true, false)) break;
                  } else if (t2.pointsSame(d, i)) {
                    if (M(u, false, true)) break;
                  } else if (t2.pointsSame(d, o) && M(u, false, false)) break;
                }
                if (c === l) return n.push([i, o]), void (r2 && r2.chainNew(i, o));
                if (c === s) {
                  r2 && r2.chainMatch(l.index);
                  var h = l.index, p = l.matches_pt1 ? o : i, v = l.matches_head, g = n[h], m = v ? g[0] : g[g.length - 1], y = v ? g[1] : g[g.length - 2], x = v ? g[g.length - 1] : g[0], b = v ? g[g.length - 2] : g[1];
                  return t2.pointsCollinear(y, m, p) && (v ? (r2 && r2.chainRemoveHead(l.index, p), g.shift()) : (r2 && r2.chainRemoveTail(l.index, p), g.pop()), m = y), t2.pointsSame(x, p) ? (n.splice(h, 1), t2.pointsCollinear(b, x, m) && (v ? (r2 && r2.chainRemoveTail(l.index, m), g.pop()) : (r2 && r2.chainRemoveHead(l.index, m), g.shift())), r2 && r2.chainClose(l.index), void a.push(g)) : void (v ? (r2 && r2.chainAddHead(l.index, p), g.unshift(p)) : (r2 && r2.chainAddTail(l.index, p), g.push(p)));
                }
                var _ = l.index, w = s.index;
                r2 && r2.chainConnect(_, w);
                var T = n[_].length < n[w].length;
                l.matches_head ? s.matches_head ? T ? (k(_), A(_, w)) : (k(w), A(w, _)) : A(w, _) : s.matches_head ? A(_, w) : T ? (k(_), A(w, _)) : (k(w), A(_, w));
              }
              function M(e5, t3, r3) {
                return c.index = e5, c.matches_head = t3, c.matches_pt1 = r3, c === l ? (c = s, false) : (c = null, true);
              }
              function k(e5) {
                r2 && r2.chainReverse(e5), n[e5].reverse();
              }
              function A(e5, a2) {
                var i2 = n[e5], o2 = n[a2], l2 = i2[i2.length - 1], s2 = i2[i2.length - 2], c2 = o2[0], u2 = o2[1];
                t2.pointsCollinear(s2, l2, c2) && (r2 && r2.chainRemoveTail(e5, l2), i2.pop(), l2 = s2), t2.pointsCollinear(l2, c2, u2) && (r2 && r2.chainRemoveHead(a2, c2), o2.shift()), r2 && r2.chainJoin(e5, a2), n[e5] = i2.concat(o2), n.splice(a2, 1);
              }
            }), a;
          };
        }, 7527: function(e2) {
          function t2(e3, t3, r3) {
            var n = [];
            return e3.forEach(function(e4) {
              var a = (e4.myFill.above ? 8 : 0) + (e4.myFill.below ? 4 : 0) + (e4.otherFill && e4.otherFill.above ? 2 : 0) + (e4.otherFill && e4.otherFill.below ? 1 : 0);
              0 !== t3[a] && n.push({ id: r3 ? r3.segmentId() : -1, start: e4.start, end: e4.end, myFill: { above: 1 === t3[a], below: 2 === t3[a] }, otherFill: null });
            }), r3 && r3.selected(n), n;
          }
          var r2 = { union: function(e3, r3) {
            return t2(e3, [0, 2, 1, 0, 2, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], r3);
          }, intersect: function(e3, r3) {
            return t2(e3, [0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 1, 1, 0, 2, 1, 0], r3);
          }, difference: function(e3, r3) {
            return t2(e3, [0, 0, 0, 0, 2, 0, 2, 0, 1, 1, 0, 0, 0, 1, 2, 0], r3);
          }, differenceRev: function(e3, r3) {
            return t2(e3, [0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 0, 2, 0, 0, 0, 0], r3);
          }, xor: function(e3, r3) {
            return t2(e3, [0, 2, 1, 0, 2, 0, 0, 1, 1, 0, 0, 2, 0, 1, 2, 0], r3);
          } };
          e2.exports = r2;
        }, 5657: function(e2, t2, r2) {
          var n;
          !function(a) {
            var i = /^\s+/, o = /\s+$/, l = 0, s = a.round, c = a.min, u = a.max, f = a.random;
            function d(e3, t3) {
              if (t3 = t3 || {}, (e3 = e3 || "") instanceof d) return e3;
              if (!(this instanceof d)) return new d(e3, t3);
              var r3 = function(e4) {
                var t4, r4, n2, l2 = { r: 0, g: 0, b: 0 }, s2 = 1, f2 = null, d2 = null, h2 = null, p2 = false, v2 = false;
                return "string" == typeof e4 && (e4 = function(e5) {
                  e5 = e5.replace(i, "").replace(o, "").toLowerCase();
                  var t5, r5 = false;
                  if (O[e5]) e5 = O[e5], r5 = true;
                  else if ("transparent" == e5) return { r: 0, g: 0, b: 0, a: 0, format: "name" };
                  return (t5 = V.rgb.exec(e5)) ? { r: t5[1], g: t5[2], b: t5[3] } : (t5 = V.rgba.exec(e5)) ? { r: t5[1], g: t5[2], b: t5[3], a: t5[4] } : (t5 = V.hsl.exec(e5)) ? { h: t5[1], s: t5[2], l: t5[3] } : (t5 = V.hsla.exec(e5)) ? { h: t5[1], s: t5[2], l: t5[3], a: t5[4] } : (t5 = V.hsv.exec(e5)) ? { h: t5[1], s: t5[2], v: t5[3] } : (t5 = V.hsva.exec(e5)) ? { h: t5[1], s: t5[2], v: t5[3], a: t5[4] } : (t5 = V.hex8.exec(e5)) ? { r: E(t5[1]), g: E(t5[2]), b: E(t5[3]), a: H(t5[4]), format: r5 ? "name" : "hex8" } : (t5 = V.hex6.exec(e5)) ? { r: E(t5[1]), g: E(t5[2]), b: E(t5[3]), format: r5 ? "name" : "hex" } : (t5 = V.hex4.exec(e5)) ? { r: E(t5[1] + "" + t5[1]), g: E(t5[2] + "" + t5[2]), b: E(t5[3] + "" + t5[3]), a: H(t5[4] + "" + t5[4]), format: r5 ? "name" : "hex8" } : !!(t5 = V.hex3.exec(e5)) && { r: E(t5[1] + "" + t5[1]), g: E(t5[2] + "" + t5[2]), b: E(t5[3] + "" + t5[3]), format: r5 ? "name" : "hex" };
                }(e4)), "object" == typeof e4 && (U(e4.r) && U(e4.g) && U(e4.b) ? (t4 = e4.r, r4 = e4.g, n2 = e4.b, l2 = { r: 255 * z(t4, 255), g: 255 * z(r4, 255), b: 255 * z(n2, 255) }, p2 = true, v2 = "%" === String(e4.r).substr(-1) ? "prgb" : "rgb") : U(e4.h) && U(e4.s) && U(e4.v) ? (f2 = N(e4.s), d2 = N(e4.v), l2 = function(e5, t5, r5) {
                  e5 = 6 * z(e5, 360), t5 = z(t5, 100), r5 = z(r5, 100);
                  var n3 = a.floor(e5), i2 = e5 - n3, o2 = r5 * (1 - t5), l3 = r5 * (1 - i2 * t5), s3 = r5 * (1 - (1 - i2) * t5), c2 = n3 % 6;
                  return { r: 255 * [r5, l3, o2, o2, s3, r5][c2], g: 255 * [s3, r5, r5, l3, o2, o2][c2], b: 255 * [o2, o2, s3, r5, r5, l3][c2] };
                }(e4.h, f2, d2), p2 = true, v2 = "hsv") : U(e4.h) && U(e4.s) && U(e4.l) && (f2 = N(e4.s), h2 = N(e4.l), l2 = function(e5, t5, r5) {
                  var n3, a2, i2;
                  function o2(e6, t6, r6) {
                    return r6 < 0 && (r6 += 1), r6 > 1 && (r6 -= 1), r6 < 1 / 6 ? e6 + 6 * (t6 - e6) * r6 : r6 < 0.5 ? t6 : r6 < 2 / 3 ? e6 + (t6 - e6) * (2 / 3 - r6) * 6 : e6;
                  }
                  if (e5 = z(e5, 360), t5 = z(t5, 100), r5 = z(r5, 100), 0 === t5) n3 = a2 = i2 = r5;
                  else {
                    var l3 = r5 < 0.5 ? r5 * (1 + t5) : r5 + t5 - r5 * t5, s3 = 2 * r5 - l3;
                    n3 = o2(s3, l3, e5 + 1 / 3), a2 = o2(s3, l3, e5), i2 = o2(s3, l3, e5 - 1 / 3);
                  }
                  return { r: 255 * n3, g: 255 * a2, b: 255 * i2 };
                }(e4.h, f2, h2), p2 = true, v2 = "hsl"), e4.hasOwnProperty("a") && (s2 = e4.a)), s2 = P(s2), { ok: p2, format: e4.format || v2, r: c(255, u(l2.r, 0)), g: c(255, u(l2.g, 0)), b: c(255, u(l2.b, 0)), a: s2 };
              }(e3);
              this._originalInput = e3, this._r = r3.r, this._g = r3.g, this._b = r3.b, this._a = r3.a, this._roundA = s(100 * this._a) / 100, this._format = t3.format || r3.format, this._gradientType = t3.gradientType, this._r < 1 && (this._r = s(this._r)), this._g < 1 && (this._g = s(this._g)), this._b < 1 && (this._b = s(this._b)), this._ok = r3.ok, this._tc_id = l++;
            }
            function h(e3, t3, r3) {
              e3 = z(e3, 255), t3 = z(t3, 255), r3 = z(r3, 255);
              var n2, a2, i2 = u(e3, t3, r3), o2 = c(e3, t3, r3), l2 = (i2 + o2) / 2;
              if (i2 == o2) n2 = a2 = 0;
              else {
                var s2 = i2 - o2;
                switch (a2 = l2 > 0.5 ? s2 / (2 - i2 - o2) : s2 / (i2 + o2), i2) {
                  case e3:
                    n2 = (t3 - r3) / s2 + (t3 < r3 ? 6 : 0);
                    break;
                  case t3:
                    n2 = (r3 - e3) / s2 + 2;
                    break;
                  case r3:
                    n2 = (e3 - t3) / s2 + 4;
                }
                n2 /= 6;
              }
              return { h: n2, s: a2, l: l2 };
            }
            function p(e3, t3, r3) {
              e3 = z(e3, 255), t3 = z(t3, 255), r3 = z(r3, 255);
              var n2, a2, i2 = u(e3, t3, r3), o2 = c(e3, t3, r3), l2 = i2, s2 = i2 - o2;
              if (a2 = 0 === i2 ? 0 : s2 / i2, i2 == o2) n2 = 0;
              else {
                switch (i2) {
                  case e3:
                    n2 = (t3 - r3) / s2 + (t3 < r3 ? 6 : 0);
                    break;
                  case t3:
                    n2 = (r3 - e3) / s2 + 2;
                    break;
                  case r3:
                    n2 = (e3 - t3) / s2 + 4;
                }
                n2 /= 6;
              }
              return { h: n2, s: a2, v: l2 };
            }
            function v(e3, t3, r3, n2) {
              var a2 = [R(s(e3).toString(16)), R(s(t3).toString(16)), R(s(r3).toString(16))];
              return n2 && a2[0].charAt(0) == a2[0].charAt(1) && a2[1].charAt(0) == a2[1].charAt(1) && a2[2].charAt(0) == a2[2].charAt(1) ? a2[0].charAt(0) + a2[1].charAt(0) + a2[2].charAt(0) : a2.join("");
            }
            function g(e3, t3, r3, n2) {
              return [R(F(n2)), R(s(e3).toString(16)), R(s(t3).toString(16)), R(s(r3).toString(16))].join("");
            }
            function m(e3, t3) {
              t3 = 0 === t3 ? 0 : t3 || 10;
              var r3 = d(e3).toHsl();
              return r3.s -= t3 / 100, r3.s = I(r3.s), d(r3);
            }
            function y(e3, t3) {
              t3 = 0 === t3 ? 0 : t3 || 10;
              var r3 = d(e3).toHsl();
              return r3.s += t3 / 100, r3.s = I(r3.s), d(r3);
            }
            function x(e3) {
              return d(e3).desaturate(100);
            }
            function b(e3, t3) {
              t3 = 0 === t3 ? 0 : t3 || 10;
              var r3 = d(e3).toHsl();
              return r3.l += t3 / 100, r3.l = I(r3.l), d(r3);
            }
            function _(e3, t3) {
              t3 = 0 === t3 ? 0 : t3 || 10;
              var r3 = d(e3).toRgb();
              return r3.r = u(0, c(255, r3.r - s(-t3 / 100 * 255))), r3.g = u(0, c(255, r3.g - s(-t3 / 100 * 255))), r3.b = u(0, c(255, r3.b - s(-t3 / 100 * 255))), d(r3);
            }
            function w(e3, t3) {
              t3 = 0 === t3 ? 0 : t3 || 10;
              var r3 = d(e3).toHsl();
              return r3.l -= t3 / 100, r3.l = I(r3.l), d(r3);
            }
            function T(e3, t3) {
              var r3 = d(e3).toHsl(), n2 = (r3.h + t3) % 360;
              return r3.h = n2 < 0 ? 360 + n2 : n2, d(r3);
            }
            function M(e3) {
              var t3 = d(e3).toHsl();
              return t3.h = (t3.h + 180) % 360, d(t3);
            }
            function k(e3) {
              var t3 = d(e3).toHsl(), r3 = t3.h;
              return [d(e3), d({ h: (r3 + 120) % 360, s: t3.s, l: t3.l }), d({ h: (r3 + 240) % 360, s: t3.s, l: t3.l })];
            }
            function A(e3) {
              var t3 = d(e3).toHsl(), r3 = t3.h;
              return [d(e3), d({ h: (r3 + 90) % 360, s: t3.s, l: t3.l }), d({ h: (r3 + 180) % 360, s: t3.s, l: t3.l }), d({ h: (r3 + 270) % 360, s: t3.s, l: t3.l })];
            }
            function L(e3) {
              var t3 = d(e3).toHsl(), r3 = t3.h;
              return [d(e3), d({ h: (r3 + 72) % 360, s: t3.s, l: t3.l }), d({ h: (r3 + 216) % 360, s: t3.s, l: t3.l })];
            }
            function S(e3, t3, r3) {
              t3 = t3 || 6, r3 = r3 || 30;
              var n2 = d(e3).toHsl(), a2 = 360 / r3, i2 = [d(e3)];
              for (n2.h = (n2.h - (a2 * t3 >> 1) + 720) % 360; --t3; ) n2.h = (n2.h + a2) % 360, i2.push(d(n2));
              return i2;
            }
            function C(e3, t3) {
              t3 = t3 || 6;
              for (var r3 = d(e3).toHsv(), n2 = r3.h, a2 = r3.s, i2 = r3.v, o2 = [], l2 = 1 / t3; t3--; ) o2.push(d({ h: n2, s: a2, v: i2 })), i2 = (i2 + l2) % 1;
              return o2;
            }
            d.prototype = { isDark: function() {
              return this.getBrightness() < 128;
            }, isLight: function() {
              return !this.isDark();
            }, isValid: function() {
              return this._ok;
            }, getOriginalInput: function() {
              return this._originalInput;
            }, getFormat: function() {
              return this._format;
            }, getAlpha: function() {
              return this._a;
            }, getBrightness: function() {
              var e3 = this.toRgb();
              return (299 * e3.r + 587 * e3.g + 114 * e3.b) / 1e3;
            }, getLuminance: function() {
              var e3, t3, r3, n2 = this.toRgb();
              return e3 = n2.r / 255, t3 = n2.g / 255, r3 = n2.b / 255, 0.2126 * (e3 <= 0.03928 ? e3 / 12.92 : a.pow((e3 + 0.055) / 1.055, 2.4)) + 0.7152 * (t3 <= 0.03928 ? t3 / 12.92 : a.pow((t3 + 0.055) / 1.055, 2.4)) + 0.0722 * (r3 <= 0.03928 ? r3 / 12.92 : a.pow((r3 + 0.055) / 1.055, 2.4));
            }, setAlpha: function(e3) {
              return this._a = P(e3), this._roundA = s(100 * this._a) / 100, this;
            }, toHsv: function() {
              var e3 = p(this._r, this._g, this._b);
              return { h: 360 * e3.h, s: e3.s, v: e3.v, a: this._a };
            }, toHsvString: function() {
              var e3 = p(this._r, this._g, this._b), t3 = s(360 * e3.h), r3 = s(100 * e3.s), n2 = s(100 * e3.v);
              return 1 == this._a ? "hsv(" + t3 + ", " + r3 + "%, " + n2 + "%)" : "hsva(" + t3 + ", " + r3 + "%, " + n2 + "%, " + this._roundA + ")";
            }, toHsl: function() {
              var e3 = h(this._r, this._g, this._b);
              return { h: 360 * e3.h, s: e3.s, l: e3.l, a: this._a };
            }, toHslString: function() {
              var e3 = h(this._r, this._g, this._b), t3 = s(360 * e3.h), r3 = s(100 * e3.s), n2 = s(100 * e3.l);
              return 1 == this._a ? "hsl(" + t3 + ", " + r3 + "%, " + n2 + "%)" : "hsla(" + t3 + ", " + r3 + "%, " + n2 + "%, " + this._roundA + ")";
            }, toHex: function(e3) {
              return v(this._r, this._g, this._b, e3);
            }, toHexString: function(e3) {
              return "#" + this.toHex(e3);
            }, toHex8: function(e3) {
              return function(e4, t3, r3, n2, a2) {
                var i2 = [R(s(e4).toString(16)), R(s(t3).toString(16)), R(s(r3).toString(16)), R(F(n2))];
                return a2 && i2[0].charAt(0) == i2[0].charAt(1) && i2[1].charAt(0) == i2[1].charAt(1) && i2[2].charAt(0) == i2[2].charAt(1) && i2[3].charAt(0) == i2[3].charAt(1) ? i2[0].charAt(0) + i2[1].charAt(0) + i2[2].charAt(0) + i2[3].charAt(0) : i2.join("");
              }(this._r, this._g, this._b, this._a, e3);
            }, toHex8String: function(e3) {
              return "#" + this.toHex8(e3);
            }, toRgb: function() {
              return { r: s(this._r), g: s(this._g), b: s(this._b), a: this._a };
            }, toRgbString: function() {
              return 1 == this._a ? "rgb(" + s(this._r) + ", " + s(this._g) + ", " + s(this._b) + ")" : "rgba(" + s(this._r) + ", " + s(this._g) + ", " + s(this._b) + ", " + this._roundA + ")";
            }, toPercentageRgb: function() {
              return { r: s(100 * z(this._r, 255)) + "%", g: s(100 * z(this._g, 255)) + "%", b: s(100 * z(this._b, 255)) + "%", a: this._a };
            }, toPercentageRgbString: function() {
              return 1 == this._a ? "rgb(" + s(100 * z(this._r, 255)) + "%, " + s(100 * z(this._g, 255)) + "%, " + s(100 * z(this._b, 255)) + "%)" : "rgba(" + s(100 * z(this._r, 255)) + "%, " + s(100 * z(this._g, 255)) + "%, " + s(100 * z(this._b, 255)) + "%, " + this._roundA + ")";
            }, toName: function() {
              return 0 === this._a ? "transparent" : !(this._a < 1) && (D[v(this._r, this._g, this._b, true)] || false);
            }, toFilter: function(e3) {
              var t3 = "#" + g(this._r, this._g, this._b, this._a), r3 = t3, n2 = this._gradientType ? "GradientType = 1, " : "";
              if (e3) {
                var a2 = d(e3);
                r3 = "#" + g(a2._r, a2._g, a2._b, a2._a);
              }
              return "progid:DXImageTransform.Microsoft.gradient(" + n2 + "startColorstr=" + t3 + ",endColorstr=" + r3 + ")";
            }, toString: function(e3) {
              var t3 = !!e3;
              e3 = e3 || this._format;
              var r3 = false, n2 = this._a < 1 && this._a >= 0;
              return t3 || !n2 || "hex" !== e3 && "hex6" !== e3 && "hex3" !== e3 && "hex4" !== e3 && "hex8" !== e3 && "name" !== e3 ? ("rgb" === e3 && (r3 = this.toRgbString()), "prgb" === e3 && (r3 = this.toPercentageRgbString()), "hex" !== e3 && "hex6" !== e3 || (r3 = this.toHexString()), "hex3" === e3 && (r3 = this.toHexString(true)), "hex4" === e3 && (r3 = this.toHex8String(true)), "hex8" === e3 && (r3 = this.toHex8String()), "name" === e3 && (r3 = this.toName()), "hsl" === e3 && (r3 = this.toHslString()), "hsv" === e3 && (r3 = this.toHsvString()), r3 || this.toHexString()) : "name" === e3 && 0 === this._a ? this.toName() : this.toRgbString();
            }, clone: function() {
              return d(this.toString());
            }, _applyModification: function(e3, t3) {
              var r3 = e3.apply(null, [this].concat([].slice.call(t3)));
              return this._r = r3._r, this._g = r3._g, this._b = r3._b, this.setAlpha(r3._a), this;
            }, lighten: function() {
              return this._applyModification(b, arguments);
            }, brighten: function() {
              return this._applyModification(_, arguments);
            }, darken: function() {
              return this._applyModification(w, arguments);
            }, desaturate: function() {
              return this._applyModification(m, arguments);
            }, saturate: function() {
              return this._applyModification(y, arguments);
            }, greyscale: function() {
              return this._applyModification(x, arguments);
            }, spin: function() {
              return this._applyModification(T, arguments);
            }, _applyCombination: function(e3, t3) {
              return e3.apply(null, [this].concat([].slice.call(t3)));
            }, analogous: function() {
              return this._applyCombination(S, arguments);
            }, complement: function() {
              return this._applyCombination(M, arguments);
            }, monochromatic: function() {
              return this._applyCombination(C, arguments);
            }, splitcomplement: function() {
              return this._applyCombination(L, arguments);
            }, triad: function() {
              return this._applyCombination(k, arguments);
            }, tetrad: function() {
              return this._applyCombination(A, arguments);
            } }, d.fromRatio = function(e3, t3) {
              if ("object" == typeof e3) {
                var r3 = {};
                for (var n2 in e3) e3.hasOwnProperty(n2) && (r3[n2] = "a" === n2 ? e3[n2] : N(e3[n2]));
                e3 = r3;
              }
              return d(e3, t3);
            }, d.equals = function(e3, t3) {
              return !(!e3 || !t3) && d(e3).toRgbString() == d(t3).toRgbString();
            }, d.random = function() {
              return d.fromRatio({ r: f(), g: f(), b: f() });
            }, d.mix = function(e3, t3, r3) {
              r3 = 0 === r3 ? 0 : r3 || 50;
              var n2 = d(e3).toRgb(), a2 = d(t3).toRgb(), i2 = r3 / 100;
              return d({ r: (a2.r - n2.r) * i2 + n2.r, g: (a2.g - n2.g) * i2 + n2.g, b: (a2.b - n2.b) * i2 + n2.b, a: (a2.a - n2.a) * i2 + n2.a });
            }, d.readability = function(e3, t3) {
              var r3 = d(e3), n2 = d(t3);
              return (a.max(r3.getLuminance(), n2.getLuminance()) + 0.05) / (a.min(r3.getLuminance(), n2.getLuminance()) + 0.05);
            }, d.isReadable = function(e3, t3, r3) {
              var n2, a2, i2, o2, l2, s2 = d.readability(e3, t3);
              switch (a2 = false, (i2 = r3, "AA" !== (o2 = ((i2 = i2 || { level: "AA", size: "small" }).level || "AA").toUpperCase()) && "AAA" !== o2 && (o2 = "AA"), "small" !== (l2 = (i2.size || "small").toLowerCase()) && "large" !== l2 && (l2 = "small"), n2 = { level: o2, size: l2 }).level + n2.size) {
                case "AAsmall":
                case "AAAlarge":
                  a2 = s2 >= 4.5;
                  break;
                case "AAlarge":
                  a2 = s2 >= 3;
                  break;
                case "AAAsmall":
                  a2 = s2 >= 7;
              }
              return a2;
            }, d.mostReadable = function(e3, t3, r3) {
              var n2, a2, i2, o2, l2 = null, s2 = 0;
              a2 = (r3 = r3 || {}).includeFallbackColors, i2 = r3.level, o2 = r3.size;
              for (var c2 = 0; c2 < t3.length; c2++) (n2 = d.readability(e3, t3[c2])) > s2 && (s2 = n2, l2 = d(t3[c2]));
              return d.isReadable(e3, l2, { level: i2, size: o2 }) || !a2 ? l2 : (r3.includeFallbackColors = false, d.mostReadable(e3, ["#fff", "#000"], r3));
            };
            var O = d.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }, D = d.hexNames = function(e3) {
              var t3 = {};
              for (var r3 in e3) e3.hasOwnProperty(r3) && (t3[e3[r3]] = r3);
              return t3;
            }(O);
            function P(e3) {
              return e3 = parseFloat(e3), (isNaN(e3) || e3 < 0 || e3 > 1) && (e3 = 1), e3;
            }
            function z(e3, t3) {
              (function(e4) {
                return "string" == typeof e4 && -1 != e4.indexOf(".") && 1 === parseFloat(e4);
              })(e3) && (e3 = "100%");
              var r3 = function(e4) {
                return "string" == typeof e4 && -1 != e4.indexOf("%");
              }(e3);
              return e3 = c(t3, u(0, parseFloat(e3))), r3 && (e3 = parseInt(e3 * t3, 10) / 100), a.abs(e3 - t3) < 1e-6 ? 1 : e3 % t3 / parseFloat(t3);
            }
            function I(e3) {
              return c(1, u(0, e3));
            }
            function E(e3) {
              return parseInt(e3, 16);
            }
            function R(e3) {
              return 1 == e3.length ? "0" + e3 : "" + e3;
            }
            function N(e3) {
              return e3 <= 1 && (e3 = 100 * e3 + "%"), e3;
            }
            function F(e3) {
              return a.round(255 * parseFloat(e3)).toString(16);
            }
            function H(e3) {
              return E(e3) / 255;
            }
            var B, j, Y, V = (j = "[\\s|\\(]+(" + (B = "(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)") + ")[,|\\s]+(" + B + ")[,|\\s]+(" + B + ")\\s*\\)?", Y = "[\\s|\\(]+(" + B + ")[,|\\s]+(" + B + ")[,|\\s]+(" + B + ")[,|\\s]+(" + B + ")\\s*\\)?", { CSS_UNIT: new RegExp(B), rgb: new RegExp("rgb" + j), rgba: new RegExp("rgba" + Y), hsl: new RegExp("hsl" + j), hsla: new RegExp("hsla" + Y), hsv: new RegExp("hsv" + j), hsva: new RegExp("hsva" + Y), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ });
            function U(e3) {
              return !!V.CSS_UNIT.exec(e3);
            }
            e2.exports ? e2.exports = d : void 0 === (n = (function() {
              return d;
            }).call(t2, r2, t2, e2)) || (e2.exports = n);
          }(Math);
        }, 1401: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976), i = n.instance();
          function o(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          o.prototype = new n.baseCalendar(), a(o.prototype, { name: "Chinese", jdEpoch: 17214255e-1, hasYearZero: false, minMonth: 0, firstMonth: 0, minDay: 1, regionalOptions: { "": { name: "Chinese", epochs: ["BEC", "EC"], monthNumbers: function(e3, t3) {
            if ("string" == typeof e3) {
              var r3 = e3.match(s);
              return r3 ? r3[0] : "";
            }
            var n2 = this._validateYear(e3), a2 = e3.month(), i2 = "" + this.toChineseMonth(n2, a2);
            return t3 && i2.length < 2 && (i2 = "0" + i2), this.isIntercalaryMonth(n2, a2) && (i2 += "i"), i2;
          }, monthNames: function(e3) {
            if ("string" == typeof e3) {
              var t3 = e3.match(c);
              return t3 ? t3[0] : "";
            }
            var r3 = this._validateYear(e3), n2 = e3.month(), a2 = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"][this.toChineseMonth(r3, n2) - 1];
            return this.isIntercalaryMonth(r3, n2) && (a2 = "闰" + a2), a2;
          }, monthNamesShort: function(e3) {
            if ("string" == typeof e3) {
              var t3 = e3.match(u);
              return t3 ? t3[0] : "";
            }
            var r3 = this._validateYear(e3), n2 = e3.month(), a2 = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"][this.toChineseMonth(r3, n2) - 1];
            return this.isIntercalaryMonth(r3, n2) && (a2 = "闰" + a2), a2;
          }, parseMonth: function(e3, t3) {
            e3 = this._validateYear(e3);
            var r3, n2 = parseInt(t3);
            if (isNaN(n2)) "闰" === t3[0] && (r3 = true, t3 = t3.substring(1)), "月" === t3[t3.length - 1] && (t3 = t3.substring(0, t3.length - 1)), n2 = 1 + ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"].indexOf(t3);
            else {
              var a2 = t3[t3.length - 1];
              r3 = "i" === a2 || "I" === a2;
            }
            return this.toMonthIndex(e3, n2, r3);
          }, dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 1, isRTL: false } }, _validateYear: function(e3, t3) {
            if (e3.year && (e3 = e3.year()), "number" != typeof e3 || e3 < 1888 || e3 > 2111) throw t3.replace(/\{0\}/, this.local.name);
            return e3;
          }, toMonthIndex: function(e3, t3, r3) {
            var a2 = this.intercalaryMonth(e3);
            if (r3 && t3 !== a2 || t3 < 1 || t3 > 12) throw n.local.invalidMonth.replace(/\{0\}/, this.local.name);
            return a2 ? !r3 && t3 <= a2 ? t3 - 1 : t3 : t3 - 1;
          }, toChineseMonth: function(e3, t3) {
            e3.year && (t3 = (e3 = e3.year()).month());
            var r3 = this.intercalaryMonth(e3);
            if (t3 < 0 || t3 > (r3 ? 12 : 11)) throw n.local.invalidMonth.replace(/\{0\}/, this.local.name);
            return r3 ? t3 < r3 ? t3 + 1 : t3 : t3 + 1;
          }, intercalaryMonth: function(e3) {
            return e3 = this._validateYear(e3), f[e3 - f[0]] >> 13;
          }, isIntercalaryMonth: function(e3, t3) {
            e3.year && (t3 = (e3 = e3.year()).month());
            var r3 = this.intercalaryMonth(e3);
            return !!r3 && r3 === t3;
          }, leapYear: function(e3) {
            return 0 !== this.intercalaryMonth(e3);
          }, weekOfYear: function(e3, t3, r3) {
            var a2, o2 = this._validateYear(e3, n.local.invalidyear), l2 = d[o2 - d[0]], s2 = l2 >> 9 & 4095, c2 = l2 >> 5 & 15, u2 = 31 & l2;
            (a2 = i.newDate(s2, c2, u2)).add(4 - (a2.dayOfWeek() || 7), "d");
            var f2 = this.toJD(e3, t3, r3) - a2.toJD();
            return 1 + Math.floor(f2 / 7);
          }, monthsInYear: function(e3) {
            return this.leapYear(e3) ? 13 : 12;
          }, daysInMonth: function(e3, t3) {
            e3.year && (t3 = e3.month(), e3 = e3.year()), e3 = this._validateYear(e3);
            var r3 = f[e3 - f[0]];
            if (t3 > (r3 >> 13 ? 12 : 11)) throw n.local.invalidMonth.replace(/\{0\}/, this.local.name);
            return r3 & 1 << 12 - t3 ? 30 : 29;
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, l2, r3, n.local.invalidDate);
            e3 = this._validateYear(a2.year()), t3 = a2.month(), r3 = a2.day();
            var o2 = this.isIntercalaryMonth(e3, t3), l2 = this.toChineseMonth(e3, t3), s2 = function(e4, t4, r4, n2, a3) {
              var i2, o3, l3;
              if ("object" == typeof e4) o3 = e4, i2 = t4 || {};
              else {
                var s3;
                if (!("number" == typeof e4 && e4 >= 1888 && e4 <= 2111)) throw new Error("Lunar year outside range 1888-2111");
                if (!("number" == typeof t4 && t4 >= 1 && t4 <= 12)) throw new Error("Lunar month outside range 1 - 12");
                if (!("number" == typeof r4 && r4 >= 1 && r4 <= 30)) throw new Error("Lunar day outside range 1 - 30");
                "object" == typeof n2 ? (s3 = false, i2 = n2) : (s3 = !!n2, i2 = {}), o3 = { year: e4, month: t4, day: r4, isIntercalary: s3 };
              }
              l3 = o3.day - 1;
              var c2, u2 = f[o3.year - f[0]], h = u2 >> 13;
              c2 = h && (o3.month > h || o3.isIntercalary) ? o3.month : o3.month - 1;
              for (var p = 0; p < c2; p++) l3 += u2 & 1 << 12 - p ? 30 : 29;
              var v = d[o3.year - d[0]], g = new Date(v >> 9 & 4095, (v >> 5 & 15) - 1, (31 & v) + l3);
              return i2.year = g.getFullYear(), i2.month = 1 + g.getMonth(), i2.day = g.getDate(), i2;
            }(e3, l2, r3, o2);
            return i.toJD(s2.year, s2.month, s2.day);
          }, fromJD: function(e3) {
            var t3 = i.fromJD(e3), r3 = function(e4, t4, r4, n3) {
              var a2, i2;
              if ("object" == typeof e4) a2 = e4, i2 = t4 || {};
              else {
                if (!("number" == typeof e4 && e4 >= 1888 && e4 <= 2111)) throw new Error("Solar year outside range 1888-2111");
                if (!("number" == typeof t4 && t4 >= 1 && t4 <= 12)) throw new Error("Solar month outside range 1 - 12");
                if (!("number" == typeof r4 && r4 >= 1 && r4 <= 31)) throw new Error("Solar day outside range 1 - 31");
                a2 = { year: e4, month: t4, day: r4 }, i2 = {};
              }
              var o2 = d[a2.year - d[0]], l2 = a2.year << 9 | a2.month << 5 | a2.day;
              i2.year = l2 >= o2 ? a2.year : a2.year - 1, o2 = d[i2.year - d[0]];
              var s2, c2 = new Date(o2 >> 9 & 4095, (o2 >> 5 & 15) - 1, 31 & o2), u2 = new Date(a2.year, a2.month - 1, a2.day);
              s2 = Math.round((u2 - c2) / 864e5);
              var h, p = f[i2.year - f[0]];
              for (h = 0; h < 13; h++) {
                var v = p & 1 << 12 - h ? 30 : 29;
                if (s2 < v) break;
                s2 -= v;
              }
              var g = p >> 13;
              return !g || h < g ? (i2.isIntercalary = false, i2.month = 1 + h) : h === g ? (i2.isIntercalary = true, i2.month = h) : (i2.isIntercalary = false, i2.month = h), i2.day = 1 + s2, i2;
            }(t3.year(), t3.month(), t3.day()), n2 = this.toMonthIndex(r3.year, r3.month, r3.isIntercalary);
            return this.newDate(r3.year, n2, r3.day);
          }, fromString: function(e3) {
            var t3 = e3.match(l), r3 = this._validateYear(+t3[1]), n2 = +t3[2], a2 = !!t3[3], i2 = this.toMonthIndex(r3, n2, a2), o2 = +t3[4];
            return this.newDate(r3, i2, o2);
          }, add: function(e3, t3, r3) {
            var n2 = e3.year(), a2 = e3.month(), i2 = this.isIntercalaryMonth(n2, a2), l2 = this.toChineseMonth(n2, a2), s2 = Object.getPrototypeOf(o.prototype).add.call(this, e3, t3, r3);
            if ("y" === r3) {
              var c2 = s2.year(), u2 = s2.month(), f2 = this.isIntercalaryMonth(c2, l2), d2 = i2 && f2 ? this.toMonthIndex(c2, l2, true) : this.toMonthIndex(c2, l2, false);
              d2 !== u2 && s2.month(d2);
            }
            return s2;
          } });
          var l = /^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m, s = /^\d?\d[iI]?/m, c = /^闰?十?[一二三四五六七八九]?月/m, u = /^闰?十?[一二三四五六七八九]?/m;
          n.calendars.chinese = o;
          var f = [1887, 5780, 5802, 19157, 2742, 50359, 1198, 2646, 46378, 7466, 3412, 30122, 5482, 67949, 2396, 5294, 43597, 6732, 6954, 36181, 2772, 4954, 18781, 2396, 54427, 5274, 6730, 47781, 5800, 6868, 21210, 4790, 59703, 2350, 5270, 46667, 3402, 3496, 38325, 1388, 4782, 18735, 2350, 52374, 6804, 7498, 44457, 2906, 1388, 29294, 4700, 63789, 6442, 6804, 56138, 5802, 2772, 38235, 1210, 4698, 22827, 5418, 63125, 3476, 5802, 43701, 2484, 5302, 27223, 2646, 70954, 7466, 3412, 54698, 5482, 2412, 38062, 5294, 2636, 32038, 6954, 60245, 2772, 4826, 43357, 2394, 5274, 39501, 6730, 72357, 5800, 5844, 53978, 4790, 2358, 38039, 5270, 87627, 3402, 3496, 54708, 5484, 4782, 43311, 2350, 3222, 27978, 7498, 68965, 2904, 5484, 45677, 4700, 6444, 39573, 6804, 6986, 19285, 2772, 62811, 1210, 4698, 47403, 5418, 5780, 38570, 5546, 76469, 2420, 5302, 51799, 2646, 5414, 36501, 3412, 5546, 18869, 2412, 54446, 5276, 6732, 48422, 6822, 2900, 28010, 4826, 92509, 2394, 5274, 55883, 6730, 6820, 47956, 5812, 2778, 18779, 2358, 62615, 5270, 5450, 46757, 3492, 5556, 27318, 4718, 67887, 2350, 3222, 52554, 7498, 3428, 38252, 5468, 4700, 31022, 6444, 64149, 6804, 6986, 43861, 2772, 5338, 35421, 2650, 70955, 5418, 5780, 54954, 5546, 2740, 38074, 5302, 2646, 29991, 3366, 61011, 3412, 5546, 43445, 2412, 5294, 35406, 6732, 72998, 6820, 6996, 52586, 2778, 2396, 38045, 5274, 6698, 23333, 6820, 64338, 5812, 2746, 43355, 2358, 5270, 39499, 5450, 79525, 3492, 5548], d = [1887, 966732, 967231, 967733, 968265, 968766, 969297, 969798, 970298, 970829, 971330, 971830, 972362, 972863, 973395, 973896, 974397, 974928, 975428, 975929, 976461, 976962, 977462, 977994, 978494, 979026, 979526, 980026, 980558, 981059, 981559, 982091, 982593, 983124, 983624, 984124, 984656, 985157, 985656, 986189, 986690, 987191, 987722, 988222, 988753, 989254, 989754, 990286, 990788, 991288, 991819, 992319, 992851, 993352, 993851, 994383, 994885, 995385, 995917, 996418, 996918, 997450, 997949, 998481, 998982, 999483, 1000014, 1000515, 1001016, 1001548, 1002047, 1002578, 1003080, 1003580, 1004111, 1004613, 1005113, 1005645, 1006146, 1006645, 1007177, 1007678, 1008209, 1008710, 1009211, 1009743, 1010243, 1010743, 1011275, 1011775, 1012306, 1012807, 1013308, 1013840, 1014341, 1014841, 1015373, 1015874, 1016404, 1016905, 1017405, 1017937, 1018438, 1018939, 1019471, 1019972, 1020471, 1021002, 1021503, 1022035, 1022535, 1023036, 1023568, 1024069, 1024568, 1025100, 1025601, 1026102, 1026633, 1027133, 1027666, 1028167, 1028666, 1029198, 1029699, 1030199, 1030730, 1031231, 1031763, 1032264, 1032764, 1033296, 1033797, 1034297, 1034828, 1035329, 1035830, 1036362, 1036861, 1037393, 1037894, 1038394, 1038925, 1039427, 1039927, 1040459, 1040959, 1041491, 1041992, 1042492, 1043023, 1043524, 1044024, 1044556, 1045057, 1045558, 1046090, 1046590, 1047121, 1047622, 1048122, 1048654, 1049154, 1049655, 1050187, 1050689, 1051219, 1051720, 1052220, 1052751, 1053252, 1053752, 1054284, 1054786, 1055285, 1055817, 1056317, 1056849, 1057349, 1057850, 1058382, 1058883, 1059383, 1059915, 1060415, 1060947, 1061447, 1061947, 1062479, 1062981, 1063480, 1064012, 1064514, 1065014, 1065545, 1066045, 1066577, 1067078, 1067578, 1068110, 1068611, 1069112, 1069642, 1070142, 1070674, 1071175, 1071675, 1072207, 1072709, 1073209, 1073740, 1074241, 1074741, 1075273, 1075773, 1076305, 1076807, 1077308, 1077839, 1078340, 1078840, 1079372, 1079871, 1080403, 1080904];
        }, 2210: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Coptic", jdEpoch: 18250295e-1, daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Coptic", epochs: ["BAM", "AM"], monthNames: ["Thout", "Paopi", "Hathor", "Koiak", "Tobi", "Meshir", "Paremhat", "Paremoude", "Pashons", "Paoni", "Epip", "Mesori", "Pi Kogi Enavot"], monthNamesShort: ["Tho", "Pao", "Hath", "Koi", "Tob", "Mesh", "Pat", "Pad", "Pash", "Pao", "Epi", "Meso", "PiK"], dayNames: ["Tkyriaka", "Pesnau", "Pshoment", "Peftoou", "Ptiou", "Psoou", "Psabbaton"], dayNamesShort: ["Tky", "Pes", "Psh", "Pef", "Pti", "Pso", "Psa"], dayNamesMin: ["Tk", "Pes", "Psh", "Pef", "Pt", "Pso", "Psa"], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return (e3 = t3.year() + (t3.year() < 0 ? 1 : 0)) % 4 == 3 || e3 % 4 == -1;
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear), 13;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (13 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return (e3 = a2.year()) < 0 && e3++, a2.day() + 30 * (a2.month() - 1) + 365 * (e3 - 1) + Math.floor(e3 / 4) + this.jdEpoch - 1;
          }, fromJD: function(e3) {
            var t3 = Math.floor(e3) + 0.5 - this.jdEpoch, r3 = Math.floor((t3 - Math.floor((t3 + 366) / 1461)) / 365) + 1;
            r3 <= 0 && r3--, t3 = Math.floor(e3) + 0.5 - this.newDate(r3, 1, 1).toJD();
            var n2 = Math.floor(t3 / 30) + 1, a2 = t3 - 30 * (n2 - 1) + 1;
            return this.newDate(r3, n2, a2);
          } }), n.calendars.coptic = i;
        }, 8569: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Discworld", jdEpoch: 17214255e-1, daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Discworld", epochs: ["BUC", "UC"], monthNames: ["Ick", "Offle", "February", "March", "April", "May", "June", "Grune", "August", "Spune", "Sektober", "Ember", "December"], monthNamesShort: ["Ick", "Off", "Feb", "Mar", "Apr", "May", "Jun", "Gru", "Aug", "Spu", "Sek", "Emb", "Dec"], dayNames: ["Sunday", "Octeday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Oct", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Oc", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 2, isRTL: false } }, leapYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), false;
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), 13;
          }, daysInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), 400;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 8) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1];
          }, daysInWeek: function() {
            return 8;
          }, dayOfWeek: function(e3, t3, r3) {
            return (this._validate(e3, t3, r3, n.local.invalidDate).day() + 1) % 8;
          }, weekDay: function(e3, t3, r3) {
            var n2 = this.dayOfWeek(e3, t3, r3);
            return n2 >= 2 && n2 <= 6;
          }, extraInfo: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return { century: o[Math.floor((a2.year() - 1) / 100) + 1] || "" };
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return e3 = a2.year() + (a2.year() < 0 ? 1 : 0), t3 = a2.month(), (r3 = a2.day()) + (t3 > 1 ? 16 : 0) + (t3 > 2 ? 32 * (t3 - 2) : 0) + 400 * (e3 - 1) + this.jdEpoch - 1;
          }, fromJD: function(e3) {
            e3 = Math.floor(e3 + 0.5) - Math.floor(this.jdEpoch) - 1;
            var t3 = Math.floor(e3 / 400) + 1;
            e3 -= 400 * (t3 - 1), e3 += e3 > 15 ? 16 : 0;
            var r3 = Math.floor(e3 / 32) + 1, n2 = e3 - 32 * (r3 - 1) + 1;
            return this.newDate(t3 <= 0 ? t3 - 1 : t3, r3, n2);
          } });
          var o = { 20: "Fruitbat", 21: "Anchovy" };
          n.calendars.discworld = i;
        }, 1133: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Ethiopian", jdEpoch: 17242205e-1, daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Ethiopian", epochs: ["BEE", "EE"], monthNames: ["Meskerem", "Tikemet", "Hidar", "Tahesas", "Tir", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehase", "Pagume"], monthNamesShort: ["Mes", "Tik", "Hid", "Tah", "Tir", "Yek", "Meg", "Mia", "Gen", "Sen", "Ham", "Neh", "Pag"], dayNames: ["Ehud", "Segno", "Maksegno", "Irob", "Hamus", "Arb", "Kidame"], dayNamesShort: ["Ehu", "Seg", "Mak", "Iro", "Ham", "Arb", "Kid"], dayNamesMin: ["Eh", "Se", "Ma", "Ir", "Ha", "Ar", "Ki"], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return (e3 = t3.year() + (t3.year() < 0 ? 1 : 0)) % 4 == 3 || e3 % 4 == -1;
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear), 13;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (13 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return (e3 = a2.year()) < 0 && e3++, a2.day() + 30 * (a2.month() - 1) + 365 * (e3 - 1) + Math.floor(e3 / 4) + this.jdEpoch - 1;
          }, fromJD: function(e3) {
            var t3 = Math.floor(e3) + 0.5 - this.jdEpoch, r3 = Math.floor((t3 - Math.floor((t3 + 366) / 1461)) / 365) + 1;
            r3 <= 0 && r3--, t3 = Math.floor(e3) + 0.5 - this.newDate(r3, 1, 1).toJD();
            var n2 = Math.floor(t3 / 30) + 1, a2 = t3 - 30 * (n2 - 1) + 1;
            return this.newDate(r3, n2, a2);
          } }), n.calendars.ethiopian = i;
        }, 8295: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          function o(e3, t3) {
            return e3 - t3 * Math.floor(e3 / t3);
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Hebrew", jdEpoch: 347995.5, daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29], hasYearZero: false, minMonth: 1, firstMonth: 7, minDay: 1, regionalOptions: { "": { name: "Hebrew", epochs: ["BAM", "AM"], monthNames: ["Nisan", "Iyar", "Sivan", "Tammuz", "Av", "Elul", "Tishrei", "Cheshvan", "Kislev", "Tevet", "Shevat", "Adar", "Adar II"], monthNamesShort: ["Nis", "Iya", "Siv", "Tam", "Av", "Elu", "Tis", "Che", "Kis", "Tev", "She", "Ada", "Ad2"], dayNames: ["Yom Rishon", "Yom Sheni", "Yom Shlishi", "Yom Revi'i", "Yom Chamishi", "Yom Shishi", "Yom Shabbat"], dayNamesShort: ["Ris", "She", "Shl", "Rev", "Cha", "Shi", "Sha"], dayNamesMin: ["Ri", "She", "Shl", "Re", "Ch", "Shi", "Sha"], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return this._leapYear(t3.year());
          }, _leapYear: function(e3) {
            return o(7 * (e3 = e3 < 0 ? e3 + 1 : e3) + 1, 19) < 7;
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), this._leapYear(e3.year ? e3.year() : e3) ? 13 : 12;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInYear: function(e3) {
            return e3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear).year(), this.toJD(-1 === e3 ? 1 : e3 + 1, 7, 1) - this.toJD(e3, 7, 1);
          }, daysInMonth: function(e3, t3) {
            return e3.year && (t3 = e3.month(), e3 = e3.year()), this._validate(e3, t3, this.minDay, n.local.invalidMonth), 12 === t3 && this.leapYear(e3) || 8 === t3 && 5 === o(this.daysInYear(e3), 10) ? 30 : 9 === t3 && 3 === o(this.daysInYear(e3), 10) ? 29 : this.daysPerMonth[t3 - 1];
          }, weekDay: function(e3, t3, r3) {
            return 6 !== this.dayOfWeek(e3, t3, r3);
          }, extraInfo: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return { yearType: (this.leapYear(a2) ? "embolismic" : "common") + " " + ["deficient", "regular", "complete"][this.daysInYear(a2) % 10 - 3] };
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            e3 = a2.year(), t3 = a2.month(), r3 = a2.day();
            var i2 = e3 <= 0 ? e3 + 1 : e3, o2 = this.jdEpoch + this._delay1(i2) + this._delay2(i2) + r3 + 1;
            if (t3 < 7) {
              for (var l = 7; l <= this.monthsInYear(e3); l++) o2 += this.daysInMonth(e3, l);
              for (l = 1; l < t3; l++) o2 += this.daysInMonth(e3, l);
            } else for (l = 7; l < t3; l++) o2 += this.daysInMonth(e3, l);
            return o2;
          }, _delay1: function(e3) {
            var t3 = Math.floor((235 * e3 - 234) / 19), r3 = 12084 + 13753 * t3, n2 = 29 * t3 + Math.floor(r3 / 25920);
            return o(3 * (n2 + 1), 7) < 3 && n2++, n2;
          }, _delay2: function(e3) {
            var t3 = this._delay1(e3 - 1), r3 = this._delay1(e3);
            return this._delay1(e3 + 1) - r3 == 356 ? 2 : r3 - t3 == 382 ? 1 : 0;
          }, fromJD: function(e3) {
            e3 = Math.floor(e3) + 0.5;
            for (var t3 = Math.floor(98496 * (e3 - this.jdEpoch) / 35975351) - 1; e3 >= this.toJD(-1 === t3 ? 1 : t3 + 1, 7, 1); ) t3++;
            for (var r3 = e3 < this.toJD(t3, 1, 1) ? 7 : 1; e3 > this.toJD(t3, r3, this.daysInMonth(t3, r3)); ) r3++;
            var n2 = e3 - this.toJD(t3, r3, 1) + 1;
            return this.newDate(t3, r3, n2);
          } }), n.calendars.hebrew = i;
        }, 5512: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Islamic", jdEpoch: 19484395e-1, daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Islamic", epochs: ["BH", "AH"], monthNames: ["Muharram", "Safar", "Rabi' al-awwal", "Rabi' al-thani", "Jumada al-awwal", "Jumada al-thani", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu al-Qi'dah", "Dhu al-Hijjah"], monthNamesShort: ["Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH"], dayNames: ["Yawm al-ahad", "Yawm al-ithnayn", "Yawm ath-thulaathaa'", "Yawm al-arbi'aa'", "Yawm al-khamīs", "Yawm al-jum'a", "Yawm as-sabt"], dayNamesShort: ["Aha", "Ith", "Thu", "Arb", "Kha", "Jum", "Sab"], dayNamesMin: ["Ah", "It", "Th", "Ar", "Kh", "Ju", "Sa"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: false } }, leapYear: function(e3) {
            return (11 * this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear).year() + 14) % 30 < 11;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInYear: function(e3) {
            return this.leapYear(e3) ? 355 : 354;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (12 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return 5 !== this.dayOfWeek(e3, t3, r3);
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return e3 = a2.year(), t3 = a2.month(), e3 = e3 <= 0 ? e3 + 1 : e3, (r3 = a2.day()) + Math.ceil(29.5 * (t3 - 1)) + 354 * (e3 - 1) + Math.floor((3 + 11 * e3) / 30) + this.jdEpoch - 1;
          }, fromJD: function(e3) {
            e3 = Math.floor(e3) + 0.5;
            var t3 = Math.floor((30 * (e3 - this.jdEpoch) + 10646) / 10631);
            t3 = t3 <= 0 ? t3 - 1 : t3;
            var r3 = Math.min(12, Math.ceil((e3 - 29 - this.toJD(t3, 1, 1)) / 29.5) + 1), n2 = e3 - this.toJD(t3, r3, 1) + 1;
            return this.newDate(t3, r3, n2);
          } }), n.calendars.islamic = i;
        }, 2645: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Julian", jdEpoch: 17214235e-1, daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Julian", epochs: ["BC", "AD"], monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "mm/dd/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return (e3 = t3.year() < 0 ? t3.year() + 1 : t3.year()) % 4 == 0;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(4 - (n2.dayOfWeek() || 7), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (2 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return e3 = a2.year(), t3 = a2.month(), r3 = a2.day(), e3 < 0 && e3++, t3 <= 2 && (e3--, t3 += 12), Math.floor(365.25 * (e3 + 4716)) + Math.floor(30.6001 * (t3 + 1)) + r3 - 1524.5;
          }, fromJD: function(e3) {
            var t3 = Math.floor(e3 + 0.5) + 1524, r3 = Math.floor((t3 - 122.1) / 365.25), n2 = Math.floor(365.25 * r3), a2 = Math.floor((t3 - n2) / 30.6001), i2 = a2 - Math.floor(a2 < 14 ? 1 : 13), o = r3 - Math.floor(i2 > 2 ? 4716 : 4715), l = t3 - n2 - Math.floor(30.6001 * a2);
            return o <= 0 && o--, this.newDate(o, i2, l);
          } }), n.calendars.julian = i;
        }, 2324: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          function o(e3, t3) {
            return e3 - t3 * Math.floor(e3 / t3);
          }
          function l(e3, t3) {
            return o(e3 - 1, t3) + 1;
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Mayan", jdEpoch: 584282.5, hasYearZero: true, minMonth: 0, firstMonth: 0, minDay: 0, regionalOptions: { "": { name: "Mayan", epochs: ["", ""], monthNames: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"], monthNamesShort: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"], dayNames: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"], dayNamesShort: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"], dayNamesMin: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"], digits: null, dateFormat: "YYYY.m.d", firstDay: 0, isRTL: false, haabMonths: ["Pop", "Uo", "Zip", "Zotz", "Tzec", "Xul", "Yaxkin", "Mol", "Chen", "Yax", "Zac", "Ceh", "Mac", "Kankin", "Muan", "Pax", "Kayab", "Cumku", "Uayeb"], tzolkinMonths: ["Imix", "Ik", "Akbal", "Kan", "Chicchan", "Cimi", "Manik", "Lamat", "Muluc", "Oc", "Chuen", "Eb", "Ben", "Ix", "Men", "Cib", "Caban", "Etznab", "Cauac", "Ahau"] } }, leapYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), false;
          }, formatYear: function(e3) {
            e3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear).year();
            var t3 = Math.floor(e3 / 400);
            return e3 %= 400, e3 += e3 < 0 ? 400 : 0, t3 + "." + Math.floor(e3 / 20) + "." + e3 % 20;
          }, forYear: function(e3) {
            if ((e3 = e3.split(".")).length < 3) throw "Invalid Mayan year";
            for (var t3 = 0, r3 = 0; r3 < e3.length; r3++) {
              var n2 = parseInt(e3[r3], 10);
              if (Math.abs(n2) > 19 || r3 > 0 && n2 < 0) throw "Invalid Mayan year";
              t3 = 20 * t3 + n2;
            }
            return t3;
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), 18;
          }, weekOfYear: function(e3, t3, r3) {
            return this._validate(e3, t3, r3, n.local.invalidDate), 0;
          }, daysInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear), 360;
          }, daysInMonth: function(e3, t3) {
            return this._validate(e3, t3, this.minDay, n.local.invalidMonth), 20;
          }, daysInWeek: function() {
            return 5;
          }, dayOfWeek: function(e3, t3, r3) {
            return this._validate(e3, t3, r3, n.local.invalidDate).day();
          }, weekDay: function(e3, t3, r3) {
            return this._validate(e3, t3, r3, n.local.invalidDate), true;
          }, extraInfo: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate).toJD(), i2 = this._toHaab(a2), o2 = this._toTzolkin(a2);
            return { haabMonthName: this.local.haabMonths[i2[0] - 1], haabMonth: i2[0], haabDay: i2[1], tzolkinDayName: this.local.tzolkinMonths[o2[0] - 1], tzolkinDay: o2[0], tzolkinTrecena: o2[1] };
          }, _toHaab: function(e3) {
            var t3 = o(8 + (e3 -= this.jdEpoch) + 340, 365);
            return [Math.floor(t3 / 20) + 1, o(t3, 20)];
          }, _toTzolkin: function(e3) {
            return [l(20 + (e3 -= this.jdEpoch), 20), l(e3 + 4, 13)];
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return a2.day() + 20 * a2.month() + 360 * a2.year() + this.jdEpoch;
          }, fromJD: function(e3) {
            e3 = Math.floor(e3) + 0.5 - this.jdEpoch;
            var t3 = Math.floor(e3 / 360);
            e3 %= 360, e3 += e3 < 0 ? 360 : 0;
            var r3 = Math.floor(e3 / 20), n2 = e3 % 20;
            return this.newDate(t3, r3, n2);
          } }), n.calendars.mayan = i;
        }, 1662: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar();
          var o = n.instance("gregorian");
          a(i.prototype, { name: "Nanakshahi", jdEpoch: 22576735e-1, daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Nanakshahi", epochs: ["BN", "AN"], monthNames: ["Chet", "Vaisakh", "Jeth", "Harh", "Sawan", "Bhadon", "Assu", "Katak", "Maghar", "Poh", "Magh", "Phagun"], monthNamesShort: ["Che", "Vai", "Jet", "Har", "Saw", "Bha", "Ass", "Kat", "Mgr", "Poh", "Mgh", "Pha"], dayNames: ["Somvaar", "Mangalvar", "Budhvaar", "Veervaar", "Shukarvaar", "Sanicharvaar", "Etvaar"], dayNamesShort: ["Som", "Mangal", "Budh", "Veer", "Shukar", "Sanichar", "Et"], dayNamesMin: ["So", "Ma", "Bu", "Ve", "Sh", "Sa", "Et"], digits: null, dateFormat: "dd-mm-yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear);
            return o.leapYear(t3.year() + (t3.year() < 1 ? 1 : 0) + 1469);
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(1 - (n2.dayOfWeek() || 7), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (12 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidMonth);
            (e3 = a2.year()) < 0 && e3++;
            for (var i2 = a2.day(), l = 1; l < a2.month(); l++) i2 += this.daysPerMonth[l - 1];
            return i2 + o.toJD(e3 + 1468, 3, 13);
          }, fromJD: function(e3) {
            e3 = Math.floor(e3 + 0.5);
            for (var t3 = Math.floor((e3 - (this.jdEpoch - 1)) / 366); e3 >= this.toJD(t3 + 1, 1, 1); ) t3++;
            for (var r3 = e3 - Math.floor(this.toJD(t3, 1, 1) + 0.5) + 1, n2 = 1; r3 > this.daysInMonth(t3, n2); ) r3 -= this.daysInMonth(t3, n2), n2++;
            return this.newDate(t3, n2, r3);
          } }), n.calendars.nanakshahi = i;
        }, 6445: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Nepali", jdEpoch: 17007095e-1, daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, daysPerYear: 365, regionalOptions: { "": { name: "Nepali", epochs: ["BBS", "ABS"], monthNames: ["Baisakh", "Jestha", "Ashadh", "Shrawan", "Bhadra", "Ashwin", "Kartik", "Mangsir", "Paush", "Mangh", "Falgun", "Chaitra"], monthNamesShort: ["Bai", "Je", "As", "Shra", "Bha", "Ash", "Kar", "Mang", "Pau", "Ma", "Fal", "Chai"], dayNames: ["Aaitabaar", "Sombaar", "Manglbaar", "Budhabaar", "Bihibaar", "Shukrabaar", "Shanibaar"], dayNamesShort: ["Aaita", "Som", "Mangl", "Budha", "Bihi", "Shukra", "Shani"], dayNamesMin: ["Aai", "So", "Man", "Bu", "Bi", "Shu", "Sha"], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 1, isRTL: false } }, leapYear: function(e3) {
            return this.daysInYear(e3) !== this.daysPerYear;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInYear: function(e3) {
            if (e3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear).year(), void 0 === this.NEPALI_CALENDAR_DATA[e3]) return this.daysPerYear;
            for (var t3 = 0, r3 = this.minMonth; r3 <= 12; r3++) t3 += this.NEPALI_CALENDAR_DATA[e3][r3];
            return t3;
          }, daysInMonth: function(e3, t3) {
            return e3.year && (t3 = e3.month(), e3 = e3.year()), this._validate(e3, t3, this.minDay, n.local.invalidMonth), void 0 === this.NEPALI_CALENDAR_DATA[e3] ? this.daysPerMonth[t3 - 1] : this.NEPALI_CALENDAR_DATA[e3][t3];
          }, weekDay: function(e3, t3, r3) {
            return 6 !== this.dayOfWeek(e3, t3, r3);
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            e3 = a2.year(), t3 = a2.month(), r3 = a2.day();
            var i2 = n.instance(), o = 0, l = t3, s = e3;
            this._createMissingCalendarData(e3);
            var c = e3 - (l > 9 || 9 === l && r3 >= this.NEPALI_CALENDAR_DATA[s][0] ? 56 : 57);
            for (9 !== t3 && (o = r3, l--); 9 !== l; ) l <= 0 && (l = 12, s--), o += this.NEPALI_CALENDAR_DATA[s][l], l--;
            return 9 === t3 ? (o += r3 - this.NEPALI_CALENDAR_DATA[s][0]) < 0 && (o += i2.daysInYear(c)) : o += this.NEPALI_CALENDAR_DATA[s][9] - this.NEPALI_CALENDAR_DATA[s][0], i2.newDate(c, 1, 1).add(o, "d").toJD();
          }, fromJD: function(e3) {
            var t3 = n.instance().fromJD(e3), r3 = t3.year(), a2 = t3.dayOfYear(), i2 = r3 + 56;
            this._createMissingCalendarData(i2);
            for (var o = 9, l = this.NEPALI_CALENDAR_DATA[i2][0], s = this.NEPALI_CALENDAR_DATA[i2][o] - l + 1; a2 > s; ) ++o > 12 && (o = 1, i2++), s += this.NEPALI_CALENDAR_DATA[i2][o];
            var c = this.NEPALI_CALENDAR_DATA[i2][o] - (s - a2);
            return this.newDate(i2, o, c);
          }, _createMissingCalendarData: function(e3) {
            var t3 = this.daysPerMonth.slice(0);
            t3.unshift(17);
            for (var r3 = e3 - 1; r3 < e3 + 2; r3++) void 0 === this.NEPALI_CALENDAR_DATA[r3] && (this.NEPALI_CALENDAR_DATA[r3] = t3);
          }, NEPALI_CALENDAR_DATA: { 1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], 1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30], 1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30], 1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], 1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], 1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], 1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2e3: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], 2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], 2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31], 2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31], 2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], 2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], 2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30], 2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], 2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], 2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], 2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], 2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], 2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], 2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], 2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], 2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], 2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], 2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], 2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30], 2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], 2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30], 2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], 2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], 2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30], 2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], 2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], 2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31], 2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30], 2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30] } }), n.calendars.nepali = i;
        }, 506: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          function o(e3, t3) {
            return e3 - t3 * Math.floor(e3 / t3);
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "Persian", jdEpoch: 19483205e-1, daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Persian", epochs: ["BP", "AP"], monthNames: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Day", "Bahman", "Esfand"], monthNamesShort: ["Far", "Ord", "Kho", "Tir", "Mor", "Sha", "Meh", "Aba", "Aza", "Day", "Bah", "Esf"], dayNames: ["Yekshambe", "Doshambe", "Seshambe", "Chæharshambe", "Panjshambe", "Jom'e", "Shambe"], dayNamesShort: ["Yek", "Do", "Se", "Chæ", "Panj", "Jom", "Sha"], dayNamesMin: ["Ye", "Do", "Se", "Ch", "Pa", "Jo", "Sh"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return 682 * ((t3.year() - (t3.year() > 0 ? 474 : 473)) % 2820 + 474 + 38) % 2816 < 682;
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-(n2.dayOfWeek() + 1) % 7, "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (12 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return 5 !== this.dayOfWeek(e3, t3, r3);
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            e3 = a2.year(), t3 = a2.month(), r3 = a2.day();
            var i2 = e3 - (e3 >= 0 ? 474 : 473), l = 474 + o(i2, 2820);
            return r3 + (t3 <= 7 ? 31 * (t3 - 1) : 30 * (t3 - 1) + 6) + Math.floor((682 * l - 110) / 2816) + 365 * (l - 1) + 1029983 * Math.floor(i2 / 2820) + this.jdEpoch - 1;
          }, fromJD: function(e3) {
            var t3 = (e3 = Math.floor(e3) + 0.5) - this.toJD(475, 1, 1), r3 = Math.floor(t3 / 1029983), n2 = o(t3, 1029983), a2 = 2820;
            if (1029982 !== n2) {
              var i2 = Math.floor(n2 / 366), l = o(n2, 366);
              a2 = Math.floor((2134 * i2 + 2816 * l + 2815) / 1028522) + i2 + 1;
            }
            var s = a2 + 2820 * r3 + 474;
            s = s <= 0 ? s - 1 : s;
            var c = e3 - this.toJD(s, 1, 1) + 1, u = c <= 186 ? Math.ceil(c / 31) : Math.ceil((c - 6) / 30), f = e3 - this.toJD(s, u, 1) + 1;
            return this.newDate(s, u, f);
          } }), n.calendars.persian = i, n.calendars.jalali = i;
        }, 4756: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976), i = n.instance();
          function o(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          o.prototype = new n.baseCalendar(), a(o.prototype, { name: "Taiwan", jdEpoch: 24194025e-1, yearsOffset: 1911, daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Taiwan", epochs: ["BROC", "ROC"], monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 1, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return e3 = this._t2gYear(t3.year()), i.leapYear(e3);
          }, weekOfYear: function(e3, t3, r3) {
            var a2 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return e3 = this._t2gYear(a2.year()), i.weekOfYear(e3, a2.month(), a2.day());
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (2 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return e3 = this._t2gYear(a2.year()), i.toJD(e3, a2.month(), a2.day());
          }, fromJD: function(e3) {
            var t3 = i.fromJD(e3), r3 = this._g2tYear(t3.year());
            return this.newDate(r3, t3.month(), t3.day());
          }, _t2gYear: function(e3) {
            return e3 + this.yearsOffset + (e3 >= -this.yearsOffset && e3 <= -1 ? 1 : 0);
          }, _g2tYear: function(e3) {
            return e3 - this.yearsOffset - (e3 >= 1 && e3 <= this.yearsOffset ? 1 : 0);
          } }), n.calendars.taiwan = o;
        }, 1858: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976), i = n.instance();
          function o(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          o.prototype = new n.baseCalendar(), a(o.prototype, { name: "Thai", jdEpoch: 15230985e-1, yearsOffset: 543, daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Thai", epochs: ["BBE", "BE"], monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return e3 = this._t2gYear(t3.year()), i.leapYear(e3);
          }, weekOfYear: function(e3, t3, r3) {
            var a2 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return e3 = this._t2gYear(a2.year()), i.weekOfYear(e3, a2.month(), a2.day());
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (2 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate);
            return e3 = this._t2gYear(a2.year()), i.toJD(e3, a2.month(), a2.day());
          }, fromJD: function(e3) {
            var t3 = i.fromJD(e3), r3 = this._g2tYear(t3.year());
            return this.newDate(r3, t3.month(), t3.day());
          }, _t2gYear: function(e3) {
            return e3 - this.yearsOffset - (e3 >= 1 && e3 <= this.yearsOffset ? 1 : 0);
          }, _g2tYear: function(e3) {
            return e3 + this.yearsOffset + (e3 >= -this.yearsOffset && e3 <= -1 ? 1 : 0);
          } }), n.calendars.thai = o;
        }, 7985: function(e2, t2, r2) {
          var n = r2(6834), a = r2(7976);
          function i(e3) {
            this.local = this.regionalOptions[e3 || ""] || this.regionalOptions[""];
          }
          i.prototype = new n.baseCalendar(), a(i.prototype, { name: "UmmAlQura", hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Umm al-Qura", epochs: ["BH", "AH"], monthNames: ["Al-Muharram", "Safar", "Rabi' al-awwal", "Rabi' Al-Thani", "Jumada Al-Awwal", "Jumada Al-Thani", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu al-Qi'dah", "Dhu al-Hijjah"], monthNamesShort: ["Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH"], dayNames: ["Yawm al-Ahad", "Yawm al-Ithnain", "Yawm al-Thalāthā’", "Yawm al-Arba‘ā’", "Yawm al-Khamīs", "Yawm al-Jum‘a", "Yawm al-Sabt"], dayNamesMin: ["Ah", "Ith", "Th", "Ar", "Kh", "Ju", "Sa"], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: true } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, n.local.invalidYear);
            return 355 === this.daysInYear(t3.year());
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(-n2.dayOfWeek(), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInYear: function(e3) {
            for (var t3 = 0, r3 = 1; r3 <= 12; r3++) t3 += this.daysInMonth(e3, r3);
            return t3;
          }, daysInMonth: function(e3, t3) {
            for (var r3 = this._validate(e3, t3, this.minDay, n.local.invalidMonth).toJD() - 24e5 + 0.5, a2 = 0, i2 = 0; i2 < o.length; i2++) {
              if (o[i2] > r3) return o[a2] - o[a2 - 1];
              a2++;
            }
            return 30;
          }, weekDay: function(e3, t3, r3) {
            return 5 !== this.dayOfWeek(e3, t3, r3);
          }, toJD: function(e3, t3, r3) {
            var a2 = this._validate(e3, t3, r3, n.local.invalidDate), i2 = 12 * (a2.year() - 1) + a2.month() - 15292;
            return a2.day() + o[i2 - 1] - 1 + 24e5 - 0.5;
          }, fromJD: function(e3) {
            for (var t3 = e3 - 24e5 + 0.5, r3 = 0, n2 = 0; n2 < o.length && !(o[n2] > t3); n2++) r3++;
            var a2 = r3 + 15292, i2 = Math.floor((a2 - 1) / 12), l = i2 + 1, s = a2 - 12 * i2, c = t3 - o[r3 - 1] + 1;
            return this.newDate(l, s, c);
          }, isValid: function(e3, t3, r3) {
            var a2 = n.baseCalendar.prototype.isValid.apply(this, arguments);
            return a2 && (a2 = (e3 = null != e3.year ? e3.year : e3) >= 1276 && e3 <= 1500), a2;
          }, _validate: function(e3, t3, r3, a2) {
            var i2 = n.baseCalendar.prototype._validate.apply(this, arguments);
            if (i2.year < 1276 || i2.year > 1500) throw a2.replace(/\{0\}/, this.local.name);
            return i2;
          } }), n.calendars.ummalqura = i;
          var o = [20, 50, 79, 109, 138, 168, 197, 227, 256, 286, 315, 345, 374, 404, 433, 463, 492, 522, 551, 581, 611, 641, 670, 700, 729, 759, 788, 818, 847, 877, 906, 936, 965, 995, 1024, 1054, 1083, 1113, 1142, 1172, 1201, 1231, 1260, 1290, 1320, 1350, 1379, 1409, 1438, 1468, 1497, 1527, 1556, 1586, 1615, 1645, 1674, 1704, 1733, 1763, 1792, 1822, 1851, 1881, 1910, 1940, 1969, 1999, 2028, 2058, 2087, 2117, 2146, 2176, 2205, 2235, 2264, 2294, 2323, 2353, 2383, 2413, 2442, 2472, 2501, 2531, 2560, 2590, 2619, 2649, 2678, 2708, 2737, 2767, 2796, 2826, 2855, 2885, 2914, 2944, 2973, 3003, 3032, 3062, 3091, 3121, 3150, 3180, 3209, 3239, 3268, 3298, 3327, 3357, 3386, 3416, 3446, 3476, 3505, 3535, 3564, 3594, 3623, 3653, 3682, 3712, 3741, 3771, 3800, 3830, 3859, 3889, 3918, 3948, 3977, 4007, 4036, 4066, 4095, 4125, 4155, 4185, 4214, 4244, 4273, 4303, 4332, 4362, 4391, 4421, 4450, 4480, 4509, 4539, 4568, 4598, 4627, 4657, 4686, 4716, 4745, 4775, 4804, 4834, 4863, 4893, 4922, 4952, 4981, 5011, 5040, 5070, 5099, 5129, 5158, 5188, 5218, 5248, 5277, 5307, 5336, 5366, 5395, 5425, 5454, 5484, 5513, 5543, 5572, 5602, 5631, 5661, 5690, 5720, 5749, 5779, 5808, 5838, 5867, 5897, 5926, 5956, 5985, 6015, 6044, 6074, 6103, 6133, 6162, 6192, 6221, 6251, 6281, 6311, 6340, 6370, 6399, 6429, 6458, 6488, 6517, 6547, 6576, 6606, 6635, 6665, 6694, 6724, 6753, 6783, 6812, 6842, 6871, 6901, 6930, 6960, 6989, 7019, 7048, 7078, 7107, 7137, 7166, 7196, 7225, 7255, 7284, 7314, 7344, 7374, 7403, 7433, 7462, 7492, 7521, 7551, 7580, 7610, 7639, 7669, 7698, 7728, 7757, 7787, 7816, 7846, 7875, 7905, 7934, 7964, 7993, 8023, 8053, 8083, 8112, 8142, 8171, 8201, 8230, 8260, 8289, 8319, 8348, 8378, 8407, 8437, 8466, 8496, 8525, 8555, 8584, 8614, 8643, 8673, 8702, 8732, 8761, 8791, 8821, 8850, 8880, 8909, 8938, 8968, 8997, 9027, 9056, 9086, 9115, 9145, 9175, 9205, 9234, 9264, 9293, 9322, 9352, 9381, 9410, 9440, 9470, 9499, 9529, 9559, 9589, 9618, 9648, 9677, 9706, 9736, 9765, 9794, 9824, 9853, 9883, 9913, 9943, 9972, 10002, 10032, 10061, 10090, 10120, 10149, 10178, 10208, 10237, 10267, 10297, 10326, 10356, 10386, 10415, 10445, 10474, 10504, 10533, 10562, 10592, 10621, 10651, 10680, 10710, 10740, 10770, 10799, 10829, 10858, 10888, 10917, 10947, 10976, 11005, 11035, 11064, 11094, 11124, 11153, 11183, 11213, 11242, 11272, 11301, 11331, 11360, 11389, 11419, 11448, 11478, 11507, 11537, 11567, 11596, 11626, 11655, 11685, 11715, 11744, 11774, 11803, 11832, 11862, 11891, 11921, 11950, 11980, 12010, 12039, 12069, 12099, 12128, 12158, 12187, 12216, 12246, 12275, 12304, 12334, 12364, 12393, 12423, 12453, 12483, 12512, 12542, 12571, 12600, 12630, 12659, 12688, 12718, 12747, 12777, 12807, 12837, 12866, 12896, 12926, 12955, 12984, 13014, 13043, 13072, 13102, 13131, 13161, 13191, 13220, 13250, 13280, 13310, 13339, 13368, 13398, 13427, 13456, 13486, 13515, 13545, 13574, 13604, 13634, 13664, 13693, 13723, 13752, 13782, 13811, 13840, 13870, 13899, 13929, 13958, 13988, 14018, 14047, 14077, 14107, 14136, 14166, 14195, 14224, 14254, 14283, 14313, 14342, 14372, 14401, 14431, 14461, 14490, 14520, 14550, 14579, 14609, 14638, 14667, 14697, 14726, 14756, 14785, 14815, 14844, 14874, 14904, 14933, 14963, 14993, 15021, 15051, 15081, 15110, 15140, 15169, 15199, 15228, 15258, 15287, 15317, 15347, 15377, 15406, 15436, 15465, 15494, 15524, 15553, 15582, 15612, 15641, 15671, 15701, 15731, 15760, 15790, 15820, 15849, 15878, 15908, 15937, 15966, 15996, 16025, 16055, 16085, 16114, 16144, 16174, 16204, 16233, 16262, 16292, 16321, 16350, 16380, 16409, 16439, 16468, 16498, 16528, 16558, 16587, 16617, 16646, 16676, 16705, 16734, 16764, 16793, 16823, 16852, 16882, 16912, 16941, 16971, 17001, 17030, 17060, 17089, 17118, 17148, 17177, 17207, 17236, 17266, 17295, 17325, 17355, 17384, 17414, 17444, 17473, 17502, 17532, 17561, 17591, 17620, 17650, 17679, 17709, 17738, 17768, 17798, 17827, 17857, 17886, 17916, 17945, 17975, 18004, 18034, 18063, 18093, 18122, 18152, 18181, 18211, 18241, 18270, 18300, 18330, 18359, 18388, 18418, 18447, 18476, 18506, 18535, 18565, 18595, 18625, 18654, 18684, 18714, 18743, 18772, 18802, 18831, 18860, 18890, 18919, 18949, 18979, 19008, 19038, 19068, 19098, 19127, 19156, 19186, 19215, 19244, 19274, 19303, 19333, 19362, 19392, 19422, 19452, 19481, 19511, 19540, 19570, 19599, 19628, 19658, 19687, 19717, 19746, 19776, 19806, 19836, 19865, 19895, 19924, 19954, 19983, 20012, 20042, 20071, 20101, 20130, 20160, 20190, 20219, 20249, 20279, 20308, 20338, 20367, 20396, 20426, 20455, 20485, 20514, 20544, 20573, 20603, 20633, 20662, 20692, 20721, 20751, 20780, 20810, 20839, 20869, 20898, 20928, 20957, 20987, 21016, 21046, 21076, 21105, 21135, 21164, 21194, 21223, 21253, 21282, 21312, 21341, 21371, 21400, 21430, 21459, 21489, 21519, 21548, 21578, 21607, 21637, 21666, 21696, 21725, 21754, 21784, 21813, 21843, 21873, 21902, 21932, 21962, 21991, 22021, 22050, 22080, 22109, 22138, 22168, 22197, 22227, 22256, 22286, 22316, 22346, 22375, 22405, 22434, 22464, 22493, 22522, 22552, 22581, 22611, 22640, 22670, 22700, 22730, 22759, 22789, 22818, 22848, 22877, 22906, 22936, 22965, 22994, 23024, 23054, 23083, 23113, 23143, 23173, 23202, 23232, 23261, 23290, 23320, 23349, 23379, 23408, 23438, 23467, 23497, 23527, 23556, 23586, 23616, 23645, 23674, 23704, 23733, 23763, 23792, 23822, 23851, 23881, 23910, 23940, 23970, 23999, 24029, 24058, 24088, 24117, 24147, 24176, 24206, 24235, 24265, 24294, 24324, 24353, 24383, 24413, 24442, 24472, 24501, 24531, 24560, 24590, 24619, 24648, 24678, 24707, 24737, 24767, 24796, 24826, 24856, 24885, 24915, 24944, 24974, 25003, 25032, 25062, 25091, 25121, 25150, 25180, 25210, 25240, 25269, 25299, 25328, 25358, 25387, 25416, 25446, 25475, 25505, 25534, 25564, 25594, 25624, 25653, 25683, 25712, 25742, 25771, 25800, 25830, 25859, 25888, 25918, 25948, 25977, 26007, 26037, 26067, 26096, 26126, 26155, 26184, 26214, 26243, 26272, 26302, 26332, 26361, 26391, 26421, 26451, 26480, 26510, 26539, 26568, 26598, 26627, 26656, 26686, 26715, 26745, 26775, 26805, 26834, 26864, 26893, 26923, 26952, 26982, 27011, 27041, 27070, 27099, 27129, 27159, 27188, 27218, 27248, 27277, 27307, 27336, 27366, 27395, 27425, 27454, 27484, 27513, 27542, 27572, 27602, 27631, 27661, 27691, 27720, 27750, 27779, 27809, 27838, 27868, 27897, 27926, 27956, 27985, 28015, 28045, 28074, 28104, 28134, 28163, 28193, 28222, 28252, 28281, 28310, 28340, 28369, 28399, 28428, 28458, 28488, 28517, 28547, 28577, 28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711, 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027, 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342, 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657, 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973, 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288, 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603, 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68e3, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919, 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235, 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990];
        }, 6834: function(e2, t2, r2) {
          var n = r2(7976);
          function a() {
            this.regionalOptions = [], this.regionalOptions[""] = { invalidCalendar: "Calendar {0} not found", invalidDate: "Invalid {0} date", invalidMonth: "Invalid {0} month", invalidYear: "Invalid {0} year", differentCalendars: "Cannot mix {0} and {1} dates" }, this.local = this.regionalOptions[""], this.calendars = {}, this._localCals = {};
          }
          function i(e3, t3, r3, n2) {
            if (this._calendar = e3, this._year = t3, this._month = r3, this._day = n2, 0 === this._calendar._validateLevel && !this._calendar.isValid(this._year, this._month, this._day)) throw (c.local.invalidDate || c.regionalOptions[""].invalidDate).replace(/\{0\}/, this._calendar.local.name);
          }
          function o(e3, t3) {
            return "000000".substring(0, t3 - (e3 = "" + e3).length) + e3;
          }
          function l() {
            this.shortYearCutoff = "+10";
          }
          function s(e3) {
            this.local = this.regionalOptions[e3] || this.regionalOptions[""];
          }
          n(a.prototype, { instance: function(e3, t3) {
            e3 = (e3 || "gregorian").toLowerCase(), t3 = t3 || "";
            var r3 = this._localCals[e3 + "-" + t3];
            if (!r3 && this.calendars[e3] && (r3 = new this.calendars[e3](t3), this._localCals[e3 + "-" + t3] = r3), !r3) throw (this.local.invalidCalendar || this.regionalOptions[""].invalidCalendar).replace(/\{0\}/, e3);
            return r3;
          }, newDate: function(e3, t3, r3, n2, a2) {
            return (n2 = (null != e3 && e3.year ? e3.calendar() : "string" == typeof n2 ? this.instance(n2, a2) : n2) || this.instance()).newDate(e3, t3, r3);
          }, substituteDigits: function(e3) {
            return function(t3) {
              return (t3 + "").replace(/[0-9]/g, function(t4) {
                return e3[t4];
              });
            };
          }, substituteChineseDigits: function(e3, t3) {
            return function(r3) {
              for (var n2 = "", a2 = 0; r3 > 0; ) {
                var i2 = r3 % 10;
                n2 = (0 === i2 ? "" : e3[i2] + t3[a2]) + n2, a2++, r3 = Math.floor(r3 / 10);
              }
              return 0 === n2.indexOf(e3[1] + t3[1]) && (n2 = n2.substr(1)), n2 || e3[0];
            };
          } }), n(i.prototype, { newDate: function(e3, t3, r3) {
            return this._calendar.newDate(null == e3 ? this : e3, t3, r3);
          }, year: function(e3) {
            return 0 === arguments.length ? this._year : this.set(e3, "y");
          }, month: function(e3) {
            return 0 === arguments.length ? this._month : this.set(e3, "m");
          }, day: function(e3) {
            return 0 === arguments.length ? this._day : this.set(e3, "d");
          }, date: function(e3, t3, r3) {
            if (!this._calendar.isValid(e3, t3, r3)) throw (c.local.invalidDate || c.regionalOptions[""].invalidDate).replace(/\{0\}/, this._calendar.local.name);
            return this._year = e3, this._month = t3, this._day = r3, this;
          }, leapYear: function() {
            return this._calendar.leapYear(this);
          }, epoch: function() {
            return this._calendar.epoch(this);
          }, formatYear: function() {
            return this._calendar.formatYear(this);
          }, monthOfYear: function() {
            return this._calendar.monthOfYear(this);
          }, weekOfYear: function() {
            return this._calendar.weekOfYear(this);
          }, daysInYear: function() {
            return this._calendar.daysInYear(this);
          }, dayOfYear: function() {
            return this._calendar.dayOfYear(this);
          }, daysInMonth: function() {
            return this._calendar.daysInMonth(this);
          }, dayOfWeek: function() {
            return this._calendar.dayOfWeek(this);
          }, weekDay: function() {
            return this._calendar.weekDay(this);
          }, extraInfo: function() {
            return this._calendar.extraInfo(this);
          }, add: function(e3, t3) {
            return this._calendar.add(this, e3, t3);
          }, set: function(e3, t3) {
            return this._calendar.set(this, e3, t3);
          }, compareTo: function(e3) {
            if (this._calendar.name !== e3._calendar.name) throw (c.local.differentCalendars || c.regionalOptions[""].differentCalendars).replace(/\{0\}/, this._calendar.local.name).replace(/\{1\}/, e3._calendar.local.name);
            var t3 = this._year !== e3._year ? this._year - e3._year : this._month !== e3._month ? this.monthOfYear() - e3.monthOfYear() : this._day - e3._day;
            return 0 === t3 ? 0 : t3 < 0 ? -1 : 1;
          }, calendar: function() {
            return this._calendar;
          }, toJD: function() {
            return this._calendar.toJD(this);
          }, fromJD: function(e3) {
            return this._calendar.fromJD(e3);
          }, toJSDate: function() {
            return this._calendar.toJSDate(this);
          }, fromJSDate: function(e3) {
            return this._calendar.fromJSDate(e3);
          }, toString: function() {
            return (this.year() < 0 ? "-" : "") + o(Math.abs(this.year()), 4) + "-" + o(this.month(), 2) + "-" + o(this.day(), 2);
          } }), n(l.prototype, { _validateLevel: 0, newDate: function(e3, t3, r3) {
            return null == e3 ? this.today() : (e3.year && (this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate), r3 = e3.day(), t3 = e3.month(), e3 = e3.year()), new i(this, e3, t3, r3));
          }, today: function() {
            return this.fromJSDate(/* @__PURE__ */ new Date());
          }, epoch: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear).year() < 0 ? this.local.epochs[0] : this.local.epochs[1];
          }, formatYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear);
            return (t3.year() < 0 ? "-" : "") + o(Math.abs(t3.year()), 4);
          }, monthsInYear: function(e3) {
            return this._validate(e3, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear), 12;
          }, monthOfYear: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth);
            return (r3.month() + this.monthsInYear(r3) - this.firstMonth) % this.monthsInYear(r3) + this.minMonth;
          }, fromMonthOfYear: function(e3, t3) {
            var r3 = (t3 + this.firstMonth - 2 * this.minMonth) % this.monthsInYear(e3) + this.minMonth;
            return this._validate(e3, r3, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth), r3;
          }, daysInYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear);
            return this.leapYear(t3) ? 366 : 365;
          }, dayOfYear: function(e3, t3, r3) {
            var n2 = this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate);
            return n2.toJD() - this.newDate(n2.year(), this.fromMonthOfYear(n2.year(), this.minMonth), this.minDay).toJD() + 1;
          }, daysInWeek: function() {
            return 7;
          }, dayOfWeek: function(e3, t3, r3) {
            var n2 = this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate);
            return (Math.floor(this.toJD(n2)) + 2) % this.daysInWeek();
          }, extraInfo: function(e3, t3, r3) {
            return this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate), {};
          }, add: function(e3, t3, r3) {
            return this._validate(e3, this.minMonth, this.minDay, c.local.invalidDate || c.regionalOptions[""].invalidDate), this._correctAdd(e3, this._add(e3, t3, r3), t3, r3);
          }, _add: function(e3, t3, r3) {
            if (this._validateLevel++, "d" === r3 || "w" === r3) {
              var n2 = e3.toJD() + t3 * ("w" === r3 ? this.daysInWeek() : 1), a2 = e3.calendar().fromJD(n2);
              return this._validateLevel--, [a2.year(), a2.month(), a2.day()];
            }
            try {
              var i2 = e3.year() + ("y" === r3 ? t3 : 0), o2 = e3.monthOfYear() + ("m" === r3 ? t3 : 0);
              a2 = e3.day(), "y" === r3 ? (e3.month() !== this.fromMonthOfYear(i2, o2) && (o2 = this.newDate(i2, e3.month(), this.minDay).monthOfYear()), o2 = Math.min(o2, this.monthsInYear(i2)), a2 = Math.min(a2, this.daysInMonth(i2, this.fromMonthOfYear(i2, o2)))) : "m" === r3 && (function(e4) {
                for (; o2 < e4.minMonth; ) i2--, o2 += e4.monthsInYear(i2);
                for (var t4 = e4.monthsInYear(i2); o2 > t4 - 1 + e4.minMonth; ) i2++, o2 -= t4, t4 = e4.monthsInYear(i2);
              }(this), a2 = Math.min(a2, this.daysInMonth(i2, this.fromMonthOfYear(i2, o2))));
              var l2 = [i2, this.fromMonthOfYear(i2, o2), a2];
              return this._validateLevel--, l2;
            } catch (e4) {
              throw this._validateLevel--, e4;
            }
          }, _correctAdd: function(e3, t3, r3, n2) {
            if (!(this.hasYearZero || "y" !== n2 && "m" !== n2 || 0 !== t3[0] && e3.year() > 0 == t3[0] > 0)) {
              var a2 = { y: [1, 1, "y"], m: [1, this.monthsInYear(-1), "m"], w: [this.daysInWeek(), this.daysInYear(-1), "d"], d: [1, this.daysInYear(-1), "d"] }[n2], i2 = r3 < 0 ? -1 : 1;
              t3 = this._add(e3, r3 * a2[0] + i2 * a2[1], a2[2]);
            }
            return e3.date(t3[0], t3[1], t3[2]);
          }, set: function(e3, t3, r3) {
            this._validate(e3, this.minMonth, this.minDay, c.local.invalidDate || c.regionalOptions[""].invalidDate);
            var n2 = "y" === r3 ? t3 : e3.year(), a2 = "m" === r3 ? t3 : e3.month(), i2 = "d" === r3 ? t3 : e3.day();
            return "y" !== r3 && "m" !== r3 || (i2 = Math.min(i2, this.daysInMonth(n2, a2))), e3.date(n2, a2, i2);
          }, isValid: function(e3, t3, r3) {
            this._validateLevel++;
            var n2 = this.hasYearZero || 0 !== e3;
            if (n2) {
              var a2 = this.newDate(e3, t3, this.minDay);
              n2 = t3 >= this.minMonth && t3 - this.minMonth < this.monthsInYear(a2) && r3 >= this.minDay && r3 - this.minDay < this.daysInMonth(a2);
            }
            return this._validateLevel--, n2;
          }, toJSDate: function(e3, t3, r3) {
            var n2 = this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate);
            return c.instance().fromJD(this.toJD(n2)).toJSDate();
          }, fromJSDate: function(e3) {
            return this.fromJD(c.instance().fromJSDate(e3).toJD());
          }, _validate: function(e3, t3, r3, n2) {
            if (e3.year) {
              if (0 === this._validateLevel && this.name !== e3.calendar().name) throw (c.local.differentCalendars || c.regionalOptions[""].differentCalendars).replace(/\{0\}/, this.local.name).replace(/\{1\}/, e3.calendar().local.name);
              return e3;
            }
            try {
              if (this._validateLevel++, 1 === this._validateLevel && !this.isValid(e3, t3, r3)) throw n2.replace(/\{0\}/, this.local.name);
              var a2 = this.newDate(e3, t3, r3);
              return this._validateLevel--, a2;
            } catch (e4) {
              throw this._validateLevel--, e4;
            }
          } }), s.prototype = new l(), n(s.prototype, { name: "Gregorian", jdEpoch: 17214255e-1, daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], hasYearZero: false, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Gregorian", epochs: ["BCE", "CE"], monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], digits: null, dateFormat: "mm/dd/yyyy", firstDay: 0, isRTL: false } }, leapYear: function(e3) {
            var t3 = this._validate(e3, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear);
            return (e3 = t3.year() + (t3.year() < 0 ? 1 : 0)) % 4 == 0 && (e3 % 100 != 0 || e3 % 400 == 0);
          }, weekOfYear: function(e3, t3, r3) {
            var n2 = this.newDate(e3, t3, r3);
            return n2.add(4 - (n2.dayOfWeek() || 7), "d"), Math.floor((n2.dayOfYear() - 1) / 7) + 1;
          }, daysInMonth: function(e3, t3) {
            var r3 = this._validate(e3, t3, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth);
            return this.daysPerMonth[r3.month() - 1] + (2 === r3.month() && this.leapYear(r3.year()) ? 1 : 0);
          }, weekDay: function(e3, t3, r3) {
            return (this.dayOfWeek(e3, t3, r3) || 7) < 6;
          }, toJD: function(e3, t3, r3) {
            var n2 = this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate);
            e3 = n2.year(), t3 = n2.month(), r3 = n2.day(), e3 < 0 && e3++, t3 < 3 && (t3 += 12, e3--);
            var a2 = Math.floor(e3 / 100), i2 = 2 - a2 + Math.floor(a2 / 4);
            return Math.floor(365.25 * (e3 + 4716)) + Math.floor(30.6001 * (t3 + 1)) + r3 + i2 - 1524.5;
          }, fromJD: function(e3) {
            var t3 = Math.floor(e3 + 0.5), r3 = Math.floor((t3 - 186721625e-2) / 36524.25), n2 = 1524 + (r3 = t3 + 1 + r3 - Math.floor(r3 / 4)), a2 = Math.floor((n2 - 122.1) / 365.25), i2 = Math.floor(365.25 * a2), o2 = Math.floor((n2 - i2) / 30.6001), l2 = n2 - i2 - Math.floor(30.6001 * o2), s2 = o2 - (o2 > 13.5 ? 13 : 1), c2 = a2 - (s2 > 2.5 ? 4716 : 4715);
            return c2 <= 0 && c2--, this.newDate(c2, s2, l2);
          }, toJSDate: function(e3, t3, r3) {
            var n2 = this._validate(e3, t3, r3, c.local.invalidDate || c.regionalOptions[""].invalidDate), a2 = new Date(n2.year(), n2.month() - 1, n2.day());
            return a2.setHours(0), a2.setMinutes(0), a2.setSeconds(0), a2.setMilliseconds(0), a2.setHours(a2.getHours() > 12 ? a2.getHours() + 2 : 0), a2;
          }, fromJSDate: function(e3) {
            return this.newDate(e3.getFullYear(), e3.getMonth() + 1, e3.getDate());
          } });
          var c = e2.exports = new a();
          c.cdate = i, c.baseCalendar = l, c.calendars.gregorian = s;
        }, 3428: function(e2, t2, r2) {
          var n = r2(7976), a = r2(6834);
          n(a.regionalOptions[""], { invalidArguments: "Invalid arguments", invalidFormat: "Cannot format a date from another calendar", missingNumberAt: "Missing number at position {0}", unknownNameAt: "Unknown name at position {0}", unexpectedLiteralAt: "Unexpected literal at position {0}", unexpectedText: "Additional text found at end" }), a.local = a.regionalOptions[""], n(a.cdate.prototype, { formatDate: function(e3, t3) {
            return "string" != typeof e3 && (t3 = e3, e3 = ""), this._calendar.formatDate(e3 || "", this, t3);
          } }), n(a.baseCalendar.prototype, { UNIX_EPOCH: a.instance().newDate(1970, 1, 1).toJD(), SECS_PER_DAY: 86400, TICKS_EPOCH: a.instance().jdEpoch, TICKS_PER_DAY: 864e9, ATOM: "yyyy-mm-dd", COOKIE: "D, dd M yyyy", FULL: "DD, MM d, yyyy", ISO_8601: "yyyy-mm-dd", JULIAN: "J", RFC_822: "D, d M yy", RFC_850: "DD, dd-M-yy", RFC_1036: "D, d M yy", RFC_1123: "D, d M yyyy", RFC_2822: "D, d M yyyy", RSS: "D, d M yy", TICKS: "!", TIMESTAMP: "@", W3C: "yyyy-mm-dd", formatDate: function(e3, t3, r3) {
            if ("string" != typeof e3 && (r3 = t3, t3 = e3, e3 = ""), !t3) return "";
            if (t3.calendar() !== this) throw a.local.invalidFormat || a.regionalOptions[""].invalidFormat;
            e3 = e3 || this.local.dateFormat;
            for (var n2, i, o, l = (r3 = r3 || {}).dayNamesShort || this.local.dayNamesShort, s = r3.dayNames || this.local.dayNames, c = r3.monthNumbers || this.local.monthNumbers, u = r3.monthNamesShort || this.local.monthNamesShort, f = r3.monthNames || this.local.monthNames, d = (r3.calculateWeek || this.local.calculateWeek, function(t4, r4) {
              for (var n3 = 1; _ + n3 < e3.length && e3.charAt(_ + n3) === t4; ) n3++;
              return _ += n3 - 1, Math.floor(n3 / (r4 || 1)) > 1;
            }), h = function(e4, t4, r4, n3) {
              var a2 = "" + t4;
              if (d(e4, n3)) for (; a2.length < r4; ) a2 = "0" + a2;
              return a2;
            }, p = this, v = function(e4) {
              return "function" == typeof c ? c.call(p, e4, d("m")) : y(h("m", e4.month(), 2));
            }, g = function(e4, t4) {
              return t4 ? "function" == typeof f ? f.call(p, e4) : f[e4.month() - p.minMonth] : "function" == typeof u ? u.call(p, e4) : u[e4.month() - p.minMonth];
            }, m = this.local.digits, y = function(e4) {
              return r3.localNumbers && m ? m(e4) : e4;
            }, x = "", b = false, _ = 0; _ < e3.length; _++) if (b) "'" !== e3.charAt(_) || d("'") ? x += e3.charAt(_) : b = false;
            else switch (e3.charAt(_)) {
              case "d":
                x += y(h("d", t3.day(), 2));
                break;
              case "D":
                x += (n2 = t3.dayOfWeek(), i = l, o = s, d("D") ? o[n2] : i[n2]);
                break;
              case "o":
                x += h("o", t3.dayOfYear(), 3);
                break;
              case "w":
                x += h("w", t3.weekOfYear(), 2);
                break;
              case "m":
                x += v(t3);
                break;
              case "M":
                x += g(t3, d("M"));
                break;
              case "y":
                x += d("y", 2) ? t3.year() : (t3.year() % 100 < 10 ? "0" : "") + t3.year() % 100;
                break;
              case "Y":
                d("Y", 2), x += t3.formatYear();
                break;
              case "J":
                x += t3.toJD();
                break;
              case "@":
                x += (t3.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY;
                break;
              case "!":
                x += (t3.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY;
                break;
              case "'":
                d("'") ? x += "'" : b = true;
                break;
              default:
                x += e3.charAt(_);
            }
            return x;
          }, parseDate: function(e3, t3, r3) {
            if (null == t3) throw a.local.invalidArguments || a.regionalOptions[""].invalidArguments;
            if ("" === (t3 = "object" == typeof t3 ? t3.toString() : t3 + "")) return null;
            e3 = e3 || this.local.dateFormat;
            var n2 = (r3 = r3 || {}).shortYearCutoff || this.shortYearCutoff;
            n2 = "string" != typeof n2 ? n2 : this.today().year() % 100 + parseInt(n2, 10);
            for (var i = r3.dayNamesShort || this.local.dayNamesShort, o = r3.dayNames || this.local.dayNames, l = r3.parseMonth || this.local.parseMonth, s = r3.monthNumbers || this.local.monthNumbers, c = r3.monthNamesShort || this.local.monthNamesShort, u = r3.monthNames || this.local.monthNames, f = -1, d = -1, h = -1, p = -1, v = -1, g = false, m = false, y = function(t4, r4) {
              for (var n3 = 1; A + n3 < e3.length && e3.charAt(A + n3) === t4; ) n3++;
              return A += n3 - 1, Math.floor(n3 / (r4 || 1)) > 1;
            }, x = function(e4, r4) {
              var n3 = y(e4, r4), i2 = [2, 3, n3 ? 4 : 2, n3 ? 4 : 2, 10, 11, 20]["oyYJ@!".indexOf(e4) + 1], o2 = new RegExp("^-?\\d{1," + i2 + "}"), l2 = t3.substring(k).match(o2);
              if (!l2) throw (a.local.missingNumberAt || a.regionalOptions[""].missingNumberAt).replace(/\{0\}/, k);
              return k += l2[0].length, parseInt(l2[0], 10);
            }, b = this, _ = function() {
              if ("function" == typeof s) {
                y("m");
                var e4 = s.call(b, t3.substring(k));
                return k += e4.length, e4;
              }
              return x("m");
            }, w = function(e4, r4, n3, i2) {
              for (var o2 = y(e4, i2) ? n3 : r4, l2 = 0; l2 < o2.length; l2++) if (t3.substr(k, o2[l2].length).toLowerCase() === o2[l2].toLowerCase()) return k += o2[l2].length, l2 + b.minMonth;
              throw (a.local.unknownNameAt || a.regionalOptions[""].unknownNameAt).replace(/\{0\}/, k);
            }, T = function() {
              if ("function" == typeof u) {
                var e4 = y("M") ? u.call(b, t3.substring(k)) : c.call(b, t3.substring(k));
                return k += e4.length, e4;
              }
              return w("M", c, u);
            }, M = function() {
              if (t3.charAt(k) !== e3.charAt(A)) throw (a.local.unexpectedLiteralAt || a.regionalOptions[""].unexpectedLiteralAt).replace(/\{0\}/, k);
              k++;
            }, k = 0, A = 0; A < e3.length; A++) if (m) "'" !== e3.charAt(A) || y("'") ? M() : m = false;
            else switch (e3.charAt(A)) {
              case "d":
                p = x("d");
                break;
              case "D":
                w("D", i, o);
                break;
              case "o":
                v = x("o");
                break;
              case "w":
                x("w");
                break;
              case "m":
                h = _();
                break;
              case "M":
                h = T();
                break;
              case "y":
                var L = A;
                g = !y("y", 2), A = L, d = x("y", 2);
                break;
              case "Y":
                d = x("Y", 2);
                break;
              case "J":
                f = x("J") + 0.5, "." === t3.charAt(k) && (k++, x("J"));
                break;
              case "@":
                f = x("@") / this.SECS_PER_DAY + this.UNIX_EPOCH;
                break;
              case "!":
                f = x("!") / this.TICKS_PER_DAY + this.TICKS_EPOCH;
                break;
              case "*":
                k = t3.length;
                break;
              case "'":
                y("'") ? M() : m = true;
                break;
              default:
                M();
            }
            if (k < t3.length) throw a.local.unexpectedText || a.regionalOptions[""].unexpectedText;
            if (-1 === d ? d = this.today().year() : d < 100 && g && (d += -1 === n2 ? 1900 : this.today().year() - this.today().year() % 100 - (d <= n2 ? 0 : 100)), "string" == typeof h && (h = l.call(this, d, h)), v > -1) {
              h = 1, p = v;
              for (var S = this.daysInMonth(d, h); p > S; S = this.daysInMonth(d, h)) h++, p -= S;
            }
            return f > -1 ? this.fromJD(f) : this.newDate(d, h, p);
          }, determineDate: function(e3, t3, r3, n2, a2) {
            r3 && "object" != typeof r3 && (a2 = n2, n2 = r3, r3 = null), "string" != typeof n2 && (a2 = n2, n2 = "");
            var i = this;
            return t3 = t3 ? t3.newDate() : null, null == e3 ? t3 : "string" == typeof e3 ? function(e4) {
              try {
                return i.parseDate(n2, e4, a2);
              } catch (e5) {
              }
              for (var t4 = ((e4 = e4.toLowerCase()).match(/^c/) && r3 ? r3.newDate() : null) || i.today(), o = /([+-]?[0-9]+)\s*(d|w|m|y)?/g, l = o.exec(e4); l; ) t4.add(parseInt(l[1], 10), l[2] || "d"), l = o.exec(e4);
              return t4;
            }(e3) : "number" == typeof e3 ? isNaN(e3) || e3 === 1 / 0 || e3 === -1 / 0 ? t3 : i.today().add(e3, "d") : i.newDate(e3);
          } });
        }, 6144: function(e2, t2, r2) {
          r2.r(t2);
          var n = r2(5072), a = r2.n(n), i = r2(7825), o = r2.n(i), l = r2(7659), s = r2.n(l), c = r2(5056), u = r2.n(c), f = r2(540), d = r2.n(f), h = r2(1113), p = r2.n(h), v = r2(5955), g = {};
          g.styleTagTransform = p(), g.setAttributes = u(), g.insert = s().bind(null, "head"), g.domAPI = o(), g.insertStyleElement = d(), a()(v.A, g), t2.default = v.A && v.A.locals ? v.A.locals : void 0;
        }, 5072: function(e2) {
          var t2 = [];
          function r2(e3) {
            for (var r3 = -1, n2 = 0; n2 < t2.length; n2++) if (t2[n2].identifier === e3) {
              r3 = n2;
              break;
            }
            return r3;
          }
          function n(e3, n2) {
            for (var i = {}, o = [], l = 0; l < e3.length; l++) {
              var s = e3[l], c = n2.base ? s[0] + n2.base : s[0], u = i[c] || 0, f = "".concat(c, " ").concat(u);
              i[c] = u + 1;
              var d = r2(f), h = { css: s[1], media: s[2], sourceMap: s[3], supports: s[4], layer: s[5] };
              if (-1 !== d) t2[d].references++, t2[d].updater(h);
              else {
                var p = a(h, n2);
                n2.byIndex = l, t2.splice(l, 0, { identifier: f, updater: p, references: 1 });
              }
              o.push(f);
            }
            return o;
          }
          function a(e3, t3) {
            var r3 = t3.domAPI(t3);
            return r3.update(e3), function(t4) {
              if (t4) {
                if (t4.css === e3.css && t4.media === e3.media && t4.sourceMap === e3.sourceMap && t4.supports === e3.supports && t4.layer === e3.layer) return;
                r3.update(e3 = t4);
              } else r3.remove();
            };
          }
          e2.exports = function(e3, a2) {
            var i = n(e3 = e3 || [], a2 = a2 || {});
            return function(e4) {
              e4 = e4 || [];
              for (var o = 0; o < i.length; o++) {
                var l = r2(i[o]);
                t2[l].references--;
              }
              for (var s = n(e4, a2), c = 0; c < i.length; c++) {
                var u = r2(i[c]);
                0 === t2[u].references && (t2[u].updater(), t2.splice(u, 1));
              }
              i = s;
            };
          };
        }, 7659: function(e2) {
          var t2 = {};
          e2.exports = function(e3, r2) {
            var n = function(e4) {
              if (void 0 === t2[e4]) {
                var r3 = document.querySelector(e4);
                if (window.HTMLIFrameElement && r3 instanceof window.HTMLIFrameElement) try {
                  r3 = r3.contentDocument.head;
                } catch (e5) {
                  r3 = null;
                }
                t2[e4] = r3;
              }
              return t2[e4];
            }(e3);
            if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
            n.appendChild(r2);
          };
        }, 540: function(e2) {
          e2.exports = function(e3) {
            var t2 = document.createElement("style");
            return e3.setAttributes(t2, e3.attributes), e3.insert(t2, e3.options), t2;
          };
        }, 5056: function(e2, t2, r2) {
          e2.exports = function(e3) {
            var t3 = r2.nc;
            t3 && e3.setAttribute("nonce", t3);
          };
        }, 7825: function(e2) {
          e2.exports = function(e3) {
            if ("undefined" == typeof document) return { update: function() {
            }, remove: function() {
            } };
            var t2 = e3.insertStyleElement(e3);
            return { update: function(r2) {
              !function(e4, t3, r3) {
                var n = "";
                r3.supports && (n += "@supports (".concat(r3.supports, ") {")), r3.media && (n += "@media ".concat(r3.media, " {"));
                var a = void 0 !== r3.layer;
                a && (n += "@layer".concat(r3.layer.length > 0 ? " ".concat(r3.layer) : "", " {")), n += r3.css, a && (n += "}"), r3.media && (n += "}"), r3.supports && (n += "}");
                var i = r3.sourceMap;
                i && "undefined" != typeof btoa && (n += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))), " */")), t3.styleTagTransform(n, e4, t3.options);
              }(t2, e3, r2);
            }, remove: function() {
              !function(e4) {
                if (null === e4.parentNode) return false;
                e4.parentNode.removeChild(e4);
              }(t2);
            } };
          };
        }, 1113: function(e2) {
          e2.exports = function(e3, t2) {
            if (t2.styleSheet) t2.styleSheet.cssText = e3;
            else {
              for (; t2.firstChild; ) t2.removeChild(t2.firstChild);
              t2.appendChild(document.createTextNode(e3));
            }
          };
        }, 5446: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2722%27 height=%2722%27 fill=%27%23333%27 viewBox=%270 0 22 22%27%3E%3Cpath d=%27m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0%27/%3E%3C/svg%3E";
        }, 6694: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2722%27 height=%2722%27 fill=%27%2333b5e5%27 viewBox=%270 0 22 22%27%3E%3Cpath d=%27m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0%27/%3E%3C/svg%3E";
        }, 6117: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 fill-rule=%27evenodd%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E";
        }, 6311: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 fill=%27%23fff%27 fill-rule=%27evenodd%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E";
        }, 4420: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
        }, 7035: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
        }, 3470: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
        }, 3490: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
        }, 216: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
        }, 7695: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%2333b5e5%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3C/svg%3E";
        }, 2228: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%2333b5e5%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
        }, 3737: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23666%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
        }, 8460: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23999%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
        }, 5796: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23aaa%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
        }, 8869: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23e54e33%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3C/svg%3E";
        }, 9819: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23e58978%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
        }, 557: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
        }, 8164: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
        }, 4665: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
        }, 1413: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z%27/%3E%3C/svg%3E";
        }, 3913: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
        }, 1907: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
        }, 8920: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
        }, 4890: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
        }, 3363: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
        }, 7603: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z%27/%3E%3C/svg%3E";
        }, 4643: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
        }, 8605: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
        }, 7914: function(e2) {
          e2.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2788%27 height=%2723%27 fill=%27none%27%3E%3Cpath fill=%27%23000%27 fill-opacity=%27.4%27 fill-rule=%27evenodd%27 d=%27M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z%27/%3E%3Cpath fill=%27%23fff%27 d=%27m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z%27/%3E%3Cpath fill=%27%23e1e3e9%27 d=%27M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z%27/%3E%3Cpath d=%27M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z%27 style=%27fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001%27/%3E%3Cg style=%27stroke-width:1.12603545%27%3E%3Cpath d=%27M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668%27 style=%27color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3Cpath d=%27M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3%27 style=%27clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3Cpath d=%27M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z%27 style=%27clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3C/g%3E%3C/svg%3E";
        } }, t = {};
        function r(n) {
          var a = t[n];
          if (void 0 !== a) return a.exports;
          var i = t[n] = { id: n, exports: {} };
          return e[n].call(i.exports, i, i.exports, r), i.exports;
        }
        return r.m = e, r.n = function(e2) {
          var t2 = e2 && e2.__esModule ? function() {
            return e2.default;
          } : function() {
            return e2;
          };
          return r.d(t2, { a: t2 }), t2;
        }, r.d = function(e2, t2) {
          for (var n in t2) r.o(t2, n) && !r.o(e2, n) && Object.defineProperty(e2, n, { enumerable: true, get: t2[n] });
        }, r.g = function() {
          if ("object" == typeof globalThis) return globalThis;
          try {
            return this || new Function("return this")();
          } catch (e2) {
            if ("object" == typeof window) return window;
          }
        }(), r.o = function(e2, t2) {
          return Object.prototype.hasOwnProperty.call(e2, t2);
        }, r.r = function(e2) {
          "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e2, "__esModule", { value: true });
        }, r.b = document.baseURI || self.location.href, r.nc = void 0, r(5611);
      }();
    });
  })(plotlyBasic_min);
  return plotlyBasic_min.exports;
}
export {
  getDefaultExportFromCjs as g,
  requirePlotlyBasic_min as r
};
