文件过大分5部分
highcharts.js 0-3000_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000_spencer_tseng的博客-CSDN博客
highcharts.js 6001-9000_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000_spencer_tseng的博客-CSDN博客
highcharts.js 12001-12677_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000
y.prototype.image = function(b, d, h, c, a, y) {
var k = {
preserveAspectRatio: "none"
},
e = function(b, d) {
b.setAttributeNS ? b.setAttributeNS("http://www.w3.org/1999/xlink", "href", d) : b.setAttribute("hc-svg-href", d)
};
z(d) && (k.x = d);
z(h) && (k.y = h);
z(c) && (k.width = c);
z(a) && (k.height = a);
var p = this.createElement("image").attr(k);
d = function(d) {
e(p.element, b);
y.call(p, d)
};
y ? (e(p.element, "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="), h = new I.Image, L(h, "load", d), h.src = b, h.complete && d({})) : e(p.element, b);
return p
};
y.prototype.symbol = function(a, y, k, p, e, f) {
var F = this,
w = /^url\((.*?)\)$/,
z = w.test(a),
l = !z && (this.symbols[a] ? a: "circle"),
m = l && this.symbols[l],
u;
if (m) {
"number" === typeof y && (u = m.call(this.symbols, Math.round(y || 0), Math.round(k || 0), p || 0, e || 0, f));
var g = this.path(u);
F.styledMode || g.attr("fill", "none");
b(g, {
symbolName: l || void 0,
x: y,
y: k,
width: p,
height: e
});
f && b(g, f)
} else if (z) {
var P = a.match(w)[1];
var T = g = this.image(P);
T.imgwidth = O(J[P] && J[P].width, f && f.width);
T.imgheight = O(J[P] && J[P].height, f && f.height);
var C = function(b) {
return b.attr({
width: b.width,
height: b.height
})
}; ["width", "height"].forEach(function(b) {
T[b + "Setter"] = function(b, d) {
this[d] = b;
b = this.alignByTranslate;
var c = this.element,
a = this.width,
y = this.height,
k = this.imgwidth,
p = this.imgheight,
e = this["img" + d];
if (h(e)) {
var F = 1;
f && "within" === f.backgroundSize && a && y ? (F = Math.min(a / k, y / p), e = Math.round(e * F), A(c, {
width: Math.round(k * F),
height: Math.round(p * F)
})) : c && c.setAttribute(d, e);
b || this.translate(((a || 0) - e * F) / 2, ((y || 0) - e * F) / 2)
}
}
});
h(y) && T.attr({
x: y,
y: k
});
T.isImg = !0;
h(T.imgwidth) && h(T.imgheight) ? C(T) : (T.attr({
width: 0,
height: 0
}), d("img", {
onload: function() {
var b = n[F.chartIndex];
0 === this.width && (q(this, {
position: "absolute",
top: "-999em"
}), c.body.appendChild(this));
J[P] = {
width: this.width,
height: this.height
};
T.imgwidth = this.width;
T.imgheight = this.height;
T.element && C(T);
this.parentNode && this.parentNode.removeChild(this);
F.imgCount--;
if (!F.imgCount && b && !b.hasLoaded) b.onload()
},
src: P
}), this.imgCount++)
}
return g
};
y.prototype.clipRect = function(b, d, h, c) {
var a = v() + "-",
y = this.createElement("clipPath").attr({
id: a
}).add(this.defs);
b = this.rect(b, d, h, c, 0).add(y);
b.id = a;
b.clipPath = y;
b.count = 0;
return b
};
y.prototype.text = function(b, d, c, a) {
var y = {};
if (a && (this.allowHTML || !this.forExport)) return this.html(b, d, c);
y.x = Math.round(d || 0);
c && (y.y = Math.round(c));
h(b) && (y.text = b);
b = this.createElement("text").attr(y);
if (!a || this.forExport && !this.allowHTML) b.xSetter = function(b, d, h) {
for (var c = h.getElementsByTagName("tspan"), a = h.getAttribute(d), y = 0, k; y < c.length; y++) k = c[y],
k.getAttribute(d) === a && k.setAttribute(d, b);
h.setAttribute(d, b)
};
return b
};
y.prototype.fontMetrics = function(b, d) {
b = !this.styledMode && /px/.test(b) || !I.getComputedStyle ? b || d && d.style && d.style.fontSize || this.style && this.style.fontSize: d && D.prototype.getStyle.call(d, "font-size");
b = /px/.test(b) ? Q(b) : 12;
d = 24 > b ? b + 3 : Math.round(1.2 * b);
return {
h: d,
b: Math.round(.8 * d),
f: b
}
};
y.prototype.rotCorr = function(b, d, h) {
var c = b;
d && h && (c = Math.max(c * Math.cos(d * f), 4));
return {
x: -b / 3 * Math.sin(d * f),
y: c
}
};
y.prototype.pathToSegments = function(b) {
for (var d = [], h = [], c = {
A: 8,
C: 7,
H: 2,
L: 3,
M: 3,
Q: 5,
S: 5,
T: 3,
V: 2
},
a = 0; a < b.length; a++) N(h[0]) && z(b[a]) && h.length === c[h[0].toUpperCase()] && b.splice(a, 0, h[0].replace("M", "L").replace("m", "l")),
"string" === typeof b[a] && (h.length && d.push(h.slice(0)), h.length = 0),
h.push(b[a]);
d.push(h.slice(0));
return d
};
y.prototype.label = function(b, d, h, c, a, y, k, e, p) {
return new B(this, b, d, h, c, a, y, k, e, p)
};
y.prototype.alignElements = function() {
this.alignedObjects.forEach(function(b) {
return b.align()
})
};
return y
} ();
b(x.prototype, {
Element: D,
SVG_NS: C,
escapes: {
"&": "&",
"<": "<",
">": ">",
"'": "'",
'"': """
},
symbols: G,
draw: u
});
E.registerRendererType("svg", x, !0);
"";
return x
});
K(g, "Core/Renderer/HTML/HTMLElement.js", [g["Core/Globals.js"], g["Core/Renderer/SVG/SVGElement.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = this && this.__extends ||
function() {
var c = function(a, f) {
c = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(c, a) {
c.__proto__ = a
} ||
function(c, a) {
for (var e in a) a.hasOwnProperty(e) && (c[e] = a[e])
};
return c(a, f)
};
return function(a, f) {
function e() {
this.constructor = a
}
c(a, f);
a.prototype = null === f ? Object.create(f) : (e.prototype = f.prototype, new e)
}
} (),
D = a.isFirefox,
B = a.isMS,
G = a.isWebKit,
r = a.win,
t = x.css,
n = x.defined,
f = x.extend,
c = x.pick,
l = x.pInt;
return function(a) {
function e() {
return null !== a && a.apply(this, arguments) || this
}
v(e, a);
e.compose = function(c) {
if ( - 1 === e.composedClasses.indexOf(c)) {
e.composedClasses.push(c);
var a = e.prototype,
f = c.prototype;
f.getSpanCorrection = a.getSpanCorrection;
f.htmlCss = a.htmlCss;
f.htmlGetBBox = a.htmlGetBBox;
f.htmlUpdateTransform = a.htmlUpdateTransform;
f.setSpanRotation = a.setSpanRotation
}
return c
};
e.prototype.getSpanCorrection = function(c, a, e) {
this.xCorr = -c * e;
this.yCorr = -a
};
e.prototype.htmlCss = function(a) {
var e = "SPAN" === this.element.tagName && a && "width" in a,
l = c(e && a.width, void 0);
if (e) {
delete a.width;
this.textWidth = l;
var g = !0
}
a && "ellipsis" === a.textOverflow && (a.whiteSpace = "nowrap", a.overflow = "hidden");
this.styles = f(this.styles, a);
t(this.element, a);
g && this.htmlUpdateTransform();
return this
};
e.prototype.htmlGetBBox = function() {
var c = this.element;
return {
x: c.offsetLeft,
y: c.offsetTop,
width: c.offsetWidth,
height: c.offsetHeight
}
};
e.prototype.htmlUpdateTransform = function() {
if (this.added) {
var c = this.renderer,
a = this.element,
e = this.translateX || 0,
f = this.translateY || 0,
g = this.x || 0,
m = this.y || 0,
d = this.textAlign || "left",
q = {
left: 0,
center: .5,
right: 1
} [d],
h = this.styles;
h = h && h.whiteSpace;
t(a, {
marginLeft: e,
marginTop: f
}); ! c.styledMode && this.shadows && this.shadows.forEach(function(b) {
t(b, {
marginLeft: e + 1,
marginTop: f + 1
})
});
this.inverted && [].forEach.call(a.childNodes,
function(b) {
c.invertChild(b, a)
});
if ("SPAN" === a.tagName) {
var k = this.rotation,
b = this.textWidth && l(this.textWidth),
p = [k, d, a.innerHTML, this.textWidth, this.textAlign].join(),
z = void 0;
z = !1;
if (b !== this.oldTextWidth) {
if (this.textPxLength) var w = this.textPxLength;
else t(a, {
width: "",
whiteSpace: h || "nowrap"
}),
w = a.offsetWidth; (b > this.oldTextWidth || w > b) && (/[ \-]/.test(a.textContent || a.innerText) || "ellipsis" === a.style.textOverflow) && (t(a, {
width: w > b || k ? b + "px": "auto",
display: "block",
whiteSpace: h || "normal"
}), this.oldTextWidth = b, z = !0)
}
this.hasBoxWidthChanged = z;
p !== this.cTT && (z = c.fontMetrics(a.style.fontSize, a).b, !n(k) || k === (this.oldRotation || 0) && d === this.oldAlign || this.setSpanRotation(k, q, z), this.getSpanCorrection(!n(k) && this.textPxLength || a.offsetWidth, z, q, k, d));
t(a, {
left: g + (this.xCorr || 0) + "px",
top: m + (this.yCorr || 0) + "px"
});
this.cTT = p;
this.oldRotation = k;
this.oldAlign = d
}
} else this.alignOnAdd = !0
};
e.prototype.setSpanRotation = function(c, a, e) {
var f = {},
l = B && !/Edge/.test(r.navigator.userAgent) ? "-ms-transform": G ? "-webkit-transform": D ? "MozTransform": r.opera ? "-o-transform": void 0;
l && (f[l] = f.transform = "rotate(" + c + "deg)", f[l + (D ? "Origin": "-origin")] = f.transformOrigin = 100 * a + "% " + e + "px", t(this.element, f))
};
e.composedClasses = [];
return e
} (g)
});
K(g, "Core/Renderer/HTML/HTMLRenderer.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Renderer/SVG/SVGElement.js"], g["Core/Renderer/SVG/SVGRenderer.js"], g["Core/Utilities.js"]],
function(a, g, x, E) {
var v = this && this.__extends ||
function() {
var a = function(f, c) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(c, a) {
c.__proto__ = a
} ||
function(c, a) {
for (var e in a) a.hasOwnProperty(e) && (c[e] = a[e])
};
return a(f, c)
};
return function(f, c) {
function l() {
this.constructor = f
}
a(f, c);
f.prototype = null === c ? Object.create(c) : (l.prototype = c.prototype, new l)
}
} (),
B = E.attr,
G = E.createElement,
r = E.extend,
t = E.pick;
return function(n) {
function f() {
return null !== n && n.apply(this, arguments) || this
}
v(f, n);
f.compose = function(c) { - 1 === f.composedClasses.indexOf(c) && (f.composedClasses.push(c), c.prototype.html = f.prototype.html);
return c
};
f.prototype.html = function(c, f, m) {
var e = this.createElement("span"),
l = e.element,
n = e.renderer,
J = n.isSVG,
I = function(c, a) { ["opacity", "visibility"].forEach(function(d) {
c[d + "Setter"] = function(e, h, k) {
var b = c.div ? c.div.style: a;
g.prototype[d + "Setter"].call(this, e, h, k);
b && (b[h] = e)
}
});
c.addedSetters = !0
};
e.textSetter = function(c) {
c !== this.textStr && (delete this.bBox, delete this.oldTextWidth, a.setElementHTML(this.element, t(c, "")), this.textStr = c, e.doTransform = !0)
};
J && I(e, e.element.style);
e.xSetter = e.ySetter = e.alignSetter = e.rotationSetter = function(c, a) {
"align" === a ? e.alignValue = e.textAlign = c: e[a] = c;
e.doTransform = !0
};
e.afterSetters = function() {
this.doTransform && (this.htmlUpdateTransform(), this.doTransform = !1)
};
e.attr({
text: c,
x: Math.round(f),
y: Math.round(m)
}).css({
position: "absolute"
});
n.styledMode || e.css({
fontFamily: this.style.fontFamily,
fontSize: this.style.fontSize
});
l.style.whiteSpace = "nowrap";
e.css = e.htmlCss;
J && (e.add = function(c) {
var a = n.box.parentNode,
d = [];
if (this.parentGroup = c) {
var f = c.div;
if (!f) {
for (; c;) d.push(c),
c = c.parentGroup;
d.reverse().forEach(function(h) {
function c(b, d) {
h[d] = b;
"translateX" === d ? q.left = b + "px": q.top = b + "px";
h.doTransform = !0
}
var b = B(h.element, "class"),
p = h.styles || {};
f = h.div = h.div || G("div", b ? {
className: b
}: void 0, {
position: "absolute",
left: (h.translateX || 0) + "px",
top: (h.translateY || 0) + "px",
display: h.display,
opacity: h.opacity,
cursor: p.cursor,
pointerEvents: p.pointerEvents,
visibility: h.visibility
},
f || a);
var q = f.style;
r(h, {
classSetter: function(b) {
return function(d) {
this.element.setAttribute("class", d);
b.className = d
}
} (f),
on: function() {
d[0].div && e.on.apply({
element: d[0].div,
onEvents: h.onEvents
},
arguments);
return h
},
translateXSetter: c,
translateYSetter: c
});
h.addedSetters || I(h)
})
}
} else f = a;
f.appendChild(l);
e.added = !0;
e.alignOnAdd && e.htmlUpdateTransform();
return e
});
return e
};
f.composedClasses = [];
return f
} (x)
});
K(g, "Core/Axis/AxisDefaults.js", [],
function() {
var a; (function(a) {
a.defaultXAxisOptions = {
alignTicks: !0,
allowDecimals: void 0,
panningEnabled: !0,
zIndex: 2,
zoomEnabled: !0,
dateTimeLabelFormats: {
millisecond: {
main: "%H:%M:%S.%L",
range: !1
},
second: {
main: "%H:%M:%S",
range: !1
},
minute: {
main: "%H:%M",
range: !1
},
hour: {
main: "%H:%M",
range: !1
},
day: {
main: "%e. %b"
},
week: {
main: "%e. %b"
},
month: {
main: "%b '%y"
},
year: {
main: "%Y"
}
},
endOnTick: !1,
gridLineDashStyle: "Solid",
gridZIndex: 1,
labels: {
autoRotation: void 0,
autoRotationLimit: 80,
distance: void 0,
enabled: !0,
indentation: 10,
overflow: "justify",
padding: 5,
reserveSpace: void 0,
rotation: void 0,
staggerLines: 0,
step: 0,
useHTML: !1,
x: 0,
zIndex: 7,
style: {
color: "#666666",
cursor: "default",
fontSize: "11px"
}
},
maxPadding: .01,
minorGridLineDashStyle: "Solid",
minorTickLength: 2,
minorTickPosition: "outside",
minPadding: .01,
offset: void 0,
opposite: !1,
reversed: void 0,
reversedStacks: !1,
showEmpty: !0,
showFirstLabel: !0,
showLastLabel: !0,
startOfWeek: 1,
startOnTick: !1,
tickLength: 10,
tickPixelInterval: 100,
tickmarkPlacement: "between",
tickPosition: "outside",
title: {
align: "middle",
rotation: 0,
useHTML: !1,
x: 0,
y: 0,
style: {
color: "#666666"
}
},
type: "linear",
uniqueNames: !0,
visible: !0,
minorGridLineColor: "#f2f2f2",
minorGridLineWidth: 1,
minorTickColor: "#999999",
lineColor: "#ccd6eb",
lineWidth: 1,
gridLineColor: "#e6e6e6",
gridLineWidth: void 0,
tickColor: "#ccd6eb"
};
a.defaultYAxisOptions = {
reversedStacks: !0,
endOnTick: !0,
maxPadding: .05,
minPadding: .05,
tickPixelInterval: 72,
showLastLabel: !0,
labels: {
x: -8
},
startOnTick: !0,
title: {
rotation: 270,
text: "Values"
},
stackLabels: {
animation: {},
allowOverlap: !1,
enabled: !1,
crop: !0,
overflow: "justify",
formatter: function() {
var a = this.axis.chart.numberFormatter;
return a(this.total || 0, -1)
},
style: {
color: "#000000",
fontSize: "11px",
fontWeight: "bold",
textOutline: "1px contrast"
}
},
gridLineWidth: 1,
lineWidth: 0
};
a.defaultLeftAxisOptions = {
labels: {
x: -15
},
title: {
rotation: 270
}
};
a.defaultRightAxisOptions = {
labels: {
x: 15
},
title: {
rotation: 90
}
};
a.defaultBottomAxisOptions = {
labels: {
autoRotation: [ - 45],
x: 0
},
margin: 15,
title: {
rotation: 0
}
};
a.defaultTopAxisOptions = {
labels: {
autoRotation: [ - 45],
x: 0
},
margin: 15,
title: {
rotation: 0
}
}
})(a || (a = {}));
return a
});
K(g, "Core/Foundation.js", [g["Core/Utilities.js"]],
function(a) {
var g = a.addEvent,
x = a.isFunction,
E = a.objectEach,
D = a.removeEvent,
B; (function(a) {
a.registerEventOptions = function(a, t) {
a.eventOptions = a.eventOptions || {};
E(t.events,
function(n, f) {
a.eventOptions[f] !== n && (a.eventOptions[f] && (D(a, f, a.eventOptions[f]), delete a.eventOptions[f]), x(n) && (a.eventOptions[f] = n, g(a, f, n)))
})
}
})(B || (B = {}));
return B
});
K(g, "Core/Axis/Tick.js", [g["Core/FormatUtilities.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = g.deg2rad,
D = x.clamp,
B = x.correctFloat,
G = x.defined,
r = x.destroyObjectProperties,
t = x.extend,
n = x.fireEvent,
f = x.isNumber,
c = x.merge,
l = x.objectEach,
m = x.pick;
g = function() {
function e(c, a, e, f, l) {
this.isNewLabel = this.isNew = !0;
this.axis = c;
this.pos = a;
this.type = e || "";
this.parameters = l || {};
this.tickmarkOffset = this.parameters.tickmarkOffset;
this.options = this.parameters.options;
n(this, "init");
e || f || this.addLabel()
}
e.prototype.addLabel = function() {
var c = this,
e = c.axis,
l = e.options,
g = e.chart,
L = e.categories,
A = e.logarithmic,
d = e.names,
q = c.pos,
h = m(c.options && c.options.labels, l.labels),
k = e.tickPositions,
b = q === k[0],
p = q === k[k.length - 1],
z = (!h.step || 1 === h.step) && 1 === e.tickInterval;
k = k.info;
var w = c.label,
N;
L = this.parameters.category || (L ? m(L[q], d[q], q) : q);
A && f(L) && (L = B(A.lin2log(L)));
if (e.dateTime) if (k) {
var H = g.time.resolveDTLFormat(l.dateTimeLabelFormats[!l.grid && k.higherRanks[q] || k.unitName]);
var O = H.main
} else f(L) && (O = e.dateTime.getXDateFormat(L, l.dateTimeLabelFormats || {}));
c.isFirst = b;
c.isLast = p;
var Q = {
axis: e,
chart: g,
dateTimeLabelFormat: O,
isFirst: b,
isLast: p,
pos: q,
tick: c,
tickPositionInfo: k,
value: L
};
n(this, "labelFormat", Q);
var r = function(b) {
return h.formatter ? h.formatter.call(b, b) : h.format ? (b.text = e.defaultLabelFormatter.call(b, b), a.format(h.format, b, g)) : e.defaultLabelFormatter.call(b, b)
};
l = r.call(Q, Q);
var Y = H && H.list;
c.shortenLabel = Y ?
function() {
for (N = 0; N < Y.length; N++) if (t(Q, {
dateTimeLabelFormat: Y[N]
}), w.attr({
text: r.call(Q, Q)
}), w.getBBox().width < e.getSlotWidth(c) - 2 * h.padding) return;
w.attr({
text: ""
})
}: void 0;
z && e._addedPlotLB && c.moveLabel(l, h);
G(w) || c.movedLabel ? w && w.textStr !== l && !z && (!w.textWidth || h.style.width || w.styles.width || w.css({
width: null
}), w.attr({
text: l
}), w.textPxLength = w.getBBox().width) : (c.label = w = c.createLabel({
x: 0,
y: 0
},
l, h), c.rotation = 0)
};
e.prototype.createLabel = function(a, e, f) {
var l = this.axis,
g = l.chart;
if (a = G(e) && f.enabled ? g.renderer.text(e, a.x, a.y, f.useHTML).add(l.labelGroup) : null) g.styledMode || a.css(c(f.style)),
a.textPxLength = a.getBBox().width;
return a
};
e.prototype.destroy = function() {
r(this, this.axis)
};
e.prototype.getPosition = function(c, a, e, f) {
var l = this.axis,
g = l.chart,
d = f && g.oldChartHeight || g.chartHeight;
c = {
x: c ? B(l.translate(a + e, void 0, void 0, f) + l.transB) : l.left + l.offset + (l.opposite ? (f && g.oldChartWidth || g.chartWidth) - l.right - l.left: 0),
y: c ? d - l.bottom + l.offset - (l.opposite ? l.height: 0) : B(d - l.translate(a + e, void 0, void 0, f) - l.transB)
};
c.y = D(c.y, -1E5, 1E5);
n(this, "afterGetPosition", {
pos: c
});
return c
};
e.prototype.getLabelPosition = function(c, a, e, f, l, g, d, q) {
var h = this.axis,
k = h.transA,
b = h.isLinked && h.linkedParent ? h.linkedParent.reversed: h.reversed,
p = h.staggerLines,
z = h.tickRotCorr || {
x: 0,
y: 0
},
w = f || h.reserveSpaceDefault ? 0 : -h.labelOffset * ("center" === h.labelAlign ? .5 : 1),
m = {};
e = 0 === h.side ? e.rotation ? -8 : -e.getBBox().height: 2 === h.side ? z.y + 8 : Math.cos(e.rotation * v) * (z.y - e.getBBox(!1, 0).height / 2);
G(l.y) && (e = 0 === h.side && h.horiz ? l.y + e: l.y);
c = c + l.x + w + z.x - (g && f ? g * k * (b ? -1 : 1) : 0);
a = a + e - (g && !f ? g * k * (b ? 1 : -1) : 0);
p && (f = d / (q || 1) % p, h.opposite && (f = p - f - 1), a += h.labelOffset / p * f);
m.x = c;
m.y = Math.round(a);
n(this, "afterGetLabelPosition", {
pos: m,
tickmarkOffset: g,
index: d
});
return m
};
e.prototype.getLabelSize = function() {
return this.label ? this.label.getBBox()[this.axis.horiz ? "height": "width"] : 0
};
e.prototype.getMarkPath = function(c, a, e, f, l, g) {
return g.crispLine([["M", c, a], ["L", c + (l ? 0 : -e), a + (l ? e: 0)]], f)
};
e.prototype.handleOverflow = function(c) {
var a = this.axis,
e = a.options.labels,
f = c.x,
l = a.chart.chartWidth,
g = a.chart.spacing,
d = m(a.labelLeft, Math.min(a.pos, g[3]));
g = m(a.labelRight, Math.max(a.isRadial ? 0 : a.pos + a.len, l - g[1]));
var q = this.label,
h = this.rotation,
k = {
left: 0,
center: .5,
right: 1
} [a.labelAlign || q.attr("align")],
b = q.getBBox().width,
p = a.getSlotWidth(this),
z = {},
w = p,
u = 1,
n;
if (h || "justify" !== e.overflow) 0 > h && f - k * b < d ? n = Math.round(f / Math.cos(h * v) - d) : 0 < h && f + k * b > g && (n = Math.round((l - f) / Math.cos(h * v)));
else if (l = f + (1 - k) * b, f - k * b < d ? w = c.x + w * (1 - k) - d: l > g && (w = g - c.x + w * k, u = -1), w = Math.min(p, w), w < p && "center" === a.labelAlign && (c.x += u * (p - w - k * (p - Math.min(b, w)))), b > w || a.autoRotation && (q.styles || {}).width) n = w;
n && (this.shortenLabel ? this.shortenLabel() : (z.width = Math.floor(n) + "px", (e.style || {}).textOverflow || (z.textOverflow = "ellipsis"), q.css(z)))
};
e.prototype.moveLabel = function(c, a) {
var e = this,
f = e.label,
g = e.axis,
m = g.reversed,
d = !1;
f && f.textStr === c ? (e.movedLabel = f, d = !0, delete e.label) : l(g.ticks,
function(h) {
d || h.isNew || h === e || !h.label || h.label.textStr !== c || (e.movedLabel = h.label, d = !0, h.labelPos = e.movedLabel.xy, delete h.label)
});
if (!d && (e.labelPos || f)) {
var q = e.labelPos || f.xy;
f = g.horiz ? m ? 0 : g.width + g.left: q.x;
g = g.horiz ? q.y: m ? g.width + g.left: 0;
e.movedLabel = e.createLabel({
x: f,
y: g
},
c, a);
e.movedLabel && e.movedLabel.attr({
opacity: 0
})
}
};
e.prototype.render = function(c, a, e) {
var f = this.axis,
l = f.horiz,
g = this.pos,
d = m(this.tickmarkOffset, f.tickmarkOffset);
g = this.getPosition(l, g, d, a);
d = g.x;
var q = g.y;
f = l && d === f.pos + f.len || !l && q === f.pos ? -1 : 1;
l = m(e, this.label && this.label.newOpacity, 1);
e = m(e, 1);
this.isActive = !0;
this.renderGridLine(a, e, f);
this.renderMark(g, e, f);
this.renderLabel(g, a, l, c);
this.isNew = !1;
n(this, "afterRender")
};
e.prototype.renderGridLine = function(c, a, e) {
var f = this.axis,
l = f.options,
g = {},
d = this.pos,
q = this.type,
h = m(this.tickmarkOffset, f.tickmarkOffset),
k = f.chart.renderer,
b = this.gridLine,
p = l.gridLineWidth,
z = l.gridLineColor,
w = l.gridLineDashStyle;
"minor" === this.type && (p = l.minorGridLineWidth, z = l.minorGridLineColor, w = l.minorGridLineDashStyle);
b || (f.chart.styledMode || (g.stroke = z, g["stroke-width"] = p || 0, g.dashstyle = w), q || (g.zIndex = 1), c && (a = 0), this.gridLine = b = k.path().attr(g).addClass("highcharts-" + (q ? q + "-": "") + "grid-line").add(f.gridGroup));
if (b && (e = f.getPlotLinePath({
value: d + h,
lineWidth: b.strokeWidth() * e,
force: "pass",
old: c
}))) b[c || this.isNew ? "attr": "animate"]({
d: e,
opacity: a
})
};
e.prototype.renderMark = function(c, a, e) {
var f = this.axis,
l = f.options,
g = f.chart.renderer,
d = this.type,
q = f.tickSize(d ? d + "Tick": "tick"),
h = c.x;
c = c.y;
var k = m(l["minor" !== d ? "tickWidth": "minorTickWidth"], !d && f.isXAxis ? 1 : 0);
l = l["minor" !== d ? "tickColor": "minorTickColor"];
var b = this.mark,
p = !b;
q && (f.opposite && (q[0] = -q[0]), b || (this.mark = b = g.path().addClass("highcharts-" + (d ? d + "-": "") + "tick").add(f.axisGroup), f.chart.styledMode || b.attr({
stroke: l,
"stroke-width": k
})), b[p ? "attr": "animate"]({
d: this.getMarkPath(h, c, q[0], b.strokeWidth() * e, f.horiz, g),
opacity: a
}))
};
e.prototype.renderLabel = function(c, a, e, l) {
var g = this.axis,
u = g.horiz,
d = g.options,
q = this.label,
h = d.labels,
k = h.step;
g = m(this.tickmarkOffset, g.tickmarkOffset);
var b = c.x;
c = c.y;
var p = !0;
q && f(b) && (q.xy = c = this.getLabelPosition(b, c, q, u, h, g, l, k), this.isFirst && !this.isLast && !d.showFirstLabel || this.isLast && !this.isFirst && !d.showLastLabel ? p = !1 : !u || h.step || h.rotation || a || 0 === e || this.handleOverflow(c), k && l % k && (p = !1), p && f(c.y) ? (c.opacity = e, q[this.isNewLabel ? "attr": "animate"](c).show(!0), this.isNewLabel = !1) : (q.hide(), this.isNewLabel = !0))
};
e.prototype.replaceMovedLabel = function() {
var c = this.label,
a = this.axis,
e = a.reversed;
if (c && !this.isNew) {
var f = a.horiz ? e ? a.left: a.width + a.left: c.xy.x;
e = a.horiz ? c.xy.y: e ? a.width + a.top: a.top;
c.animate({
x: f,
y: e,
opacity: 0
},
void 0, c.destroy);
delete this.label
}
a.isDirty = !0;
this.label = this.movedLabel;
delete this.movedLabel
};
return e
} ();
"";
return g
});
K(g, "Core/Axis/Axis.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Axis/AxisDefaults.js"], g["Core/Color/Color.js"], g["Core/Defaults.js"], g["Core/Foundation.js"], g["Core/Globals.js"], g["Core/Axis/Tick.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B, G, r) {
var t = a.animObject,
n = E.defaultOptions,
f = D.registerEventOptions,
c = B.deg2rad,
l = r.arrayMax,
m = r.arrayMin,
e = r.clamp,
u = r.correctFloat,
C = r.defined,
J = r.destroyObjectProperties,
I = r.erase,
v = r.error,
A = r.extend,
d = r.fireEvent,
q = r.isArray,
h = r.isNumber,
k = r.isString,
b = r.merge,
p = r.normalizeTickInterval,
z = r.objectEach,
w = r.pick,
N = r.relativeLength,
H = r.removeEvent,
O = r.splat,
Q = r.syncTimeout,
S = function(b, d) {
return p(d, void 0, void 0, w(b.options.allowDecimals, .5 > d || void 0 !== b.tickAmount), !!b.tickAmount)
};
a = function() {
function a(b, d) {
this.zoomEnabled = this.width = this.visible = this.userOptions = this.translationSlope = this.transB = this.transA = this.top = this.ticks = this.tickRotCorr = this.tickPositions = this.tickmarkOffset = this.tickInterval = this.tickAmount = this.side = this.series = this.right = this.positiveValuesOnly = this.pos = this.pointRangePadding = this.pointRange = this.plotLinesAndBandsGroups = this.plotLinesAndBands = this.paddedTicks = this.overlap = this.options = this.offset = this.names = this.minPixelPadding = this.minorTicks = this.minorTickInterval = this.min = this.maxLabelLength = this.max = this.len = this.left = this.labelFormatter = this.labelEdge = this.isLinked = this.height = this.hasVisibleSeries = this.hasNames = this.eventOptions = this.coll = this.closestPointRange = this.chart = this.bottom = this.alternateBands = void 0;
this.init(b, d)
}
a.prototype.init = function(b, a) {
var c = a.isX;
this.chart = b;
this.horiz = b.inverted && !this.isZAxis ? !c: c;
this.isXAxis = c;
this.coll = this.coll || (c ? "xAxis": "yAxis");
d(this, "init", {
userOptions: a
});
this.opposite = w(a.opposite, this.opposite);
this.side = w(a.side, this.side, this.horiz ? this.opposite ? 0 : 2 : this.opposite ? 1 : 3);
this.setOptions(a);
var e = this.options,
y = e.labels,
k = e.type;
this.userOptions = a;
this.minPixelPadding = 0;
this.reversed = w(e.reversed, this.reversed);
this.visible = e.visible;
this.zoomEnabled = e.zoomEnabled;
this.hasNames = "category" === k || !0 === e.categories;
this.categories = e.categories || (this.hasNames ? [] : void 0);
this.names || (this.names = [], this.names.keys = {});
this.plotLinesAndBandsGroups = {};
this.positiveValuesOnly = !!this.logarithmic;
this.isLinked = C(e.linkedTo);
this.ticks = {};
this.labelEdge = [];
this.minorTicks = {};
this.plotLinesAndBands = [];
this.alternateBands = {};
this.len = 0;
this.minRange = this.userMinRange = e.minRange || e.maxZoom;
this.range = e.range;
this.offset = e.offset || 0;
this.min = this.max = null;
a = w(e.crosshair, O(b.options.tooltip.crosshairs)[c ? 0 : 1]);
this.crosshair = !0 === a ? {}: a; - 1 === b.axes.indexOf(this) && (c ? b.axes.splice(b.xAxis.length, 0, this) : b.axes.push(this), b[this.coll].push(this));
this.series = this.series || [];
b.inverted && !this.isZAxis && c && "undefined" === typeof this.reversed && (this.reversed = !0);
this.labelRotation = h(y.rotation) ? y.rotation: void 0;
f(this, e);
d(this, "afterInit")
};
a.prototype.setOptions = function(h) {
this.options = b(g.defaultXAxisOptions, "yAxis" === this.coll && g.defaultYAxisOptions, [g.defaultTopAxisOptions, g.defaultRightAxisOptions, g.defaultBottomAxisOptions, g.defaultLeftAxisOptions][this.side], b(n[this.coll], h));
d(this, "afterSetOptions", {
userOptions: h
})
};
a.prototype.defaultLabelFormatter = function(b) {
var d = this.axis;
b = this.chart.numberFormatter;
var a = h(this.value) ? this.value: NaN,
c = d.chart.time,
e = this.dateTimeLabelFormat,
k = n.lang,
y = k.numericSymbols;
k = k.numericSymbolMagnitude || 1E3;
var f = d.logarithmic ? Math.abs(a) : d.tickInterval,
p = y && y.length;
if (d.categories) var l = "".concat(this.value);
else if (e) l = c.dateFormat(e, a);
else if (p && 1E3 <= f) for (; p--&&"undefined" === typeof l;) d = Math.pow(k, p + 1),
f >= d && 0 === 10 * a % d && null !== y[p] && 0 !== a && (l = b(a / d, -1) + y[p]);
"undefined" === typeof l && (l = 1E4 <= Math.abs(a) ? b(a, -1) : b(a, -1, void 0, ""));
return l
};
a.prototype.getSeriesExtremes = function() {
var b = this,
a = b.chart,
c;
d(this, "getSeriesExtremes", null,
function() {
b.hasVisibleSeries = !1;
b.dataMin = b.dataMax = b.threshold = null;
b.softThreshold = !b.isXAxis;
b.stacking && b.stacking.buildStacks();
b.series.forEach(function(d) {
if (d.visible || !a.options.chart.ignoreHiddenSeries) {
var e = d.options,
k = e.threshold;
b.hasVisibleSeries = !0;
b.positiveValuesOnly && 0 >= k && (k = null);
if (b.isXAxis) {
if (e = d.xData, e.length) {
e = b.logarithmic ? e.filter(b.validatePositiveValue) : e;
c = d.getXExtremes(e);
var y = c.min;
var f = c.max;
h(y) || y instanceof Date || (e = e.filter(h), c = d.getXExtremes(e), y = c.min, f = c.max);
e.length && (b.dataMin = Math.min(w(b.dataMin, y), y), b.dataMax = Math.max(w(b.dataMax, f), f))
}
} else if (d = d.applyExtremes(), h(d.dataMin) && (y = d.dataMin, b.dataMin = Math.min(w(b.dataMin, y), y)), h(d.dataMax) && (f = d.dataMax, b.dataMax = Math.max(w(b.dataMax, f), f)), C(k) && (b.threshold = k), !e.softThreshold || b.positiveValuesOnly) b.softThreshold = !1
}
})
});
d(this, "afterGetSeriesExtremes")
};
a.prototype.translate = function(b, d, a, c, e, k) {
var f = this.linkedParent || this,
y = c && f.old ? f.old.min: f.min;
if (!h(y)) return NaN;
var p = f.minPixelPadding;
e = (f.isOrdinal || f.brokenAxis && f.brokenAxis.hasBreaks || f.logarithmic && e) && f.lin2val;
var F = 1,
l = 0;
c = c && f.old ? f.old.transA: f.transA;
c || (c = f.transA);
a && (F *= -1, l = f.len);
f.reversed && (F *= -1, l -= F * (f.sector || f.len));
d ? (k = (b * F + l - p) / c + y, e && (k = f.lin2val(k))) : (e && (b = f.val2lin(b)), b = F * (b - y) * c, k = (f.isRadial ? b: u(b)) + l + F * p + (h(k) ? c * k: 0));
return k
};
a.prototype.toPixels = function(b, d) {
return this.translate(b, !1, !this.horiz, void 0, !0) + (d ? 0 : this.pos)
};
a.prototype.toValue = function(b, d) {
return this.translate(b - (d ? 0 : this.pos), !0, !this.horiz, void 0, !0)
};
a.prototype.getPlotLinePath = function(b) {
function a(b, d, a) {
if ("pass" !== n && b < d || b > a) n ? b = e(b, d, a) : C = !0;
return b
}
var c = this,
k = c.chart,
f = c.left,
y = c.top,
p = b.old,
l = b.value,
g = b.lineWidth,
q = p && k.oldChartHeight || k.chartHeight,
z = p && k.oldChartWidth || k.chartWidth,
m = c.transB,
u = b.translatedValue,
n = b.force,
A, H, N, O, C;
b = {
value: l,
lineWidth: g,
old: p,
force: n,
acrossPanes: b.acrossPanes,
translatedValue: u
};
d(this, "getPlotLinePath", b,
function(b) {
u = w(u, c.translate(l, void 0, void 0, p));
u = e(u, -1E5, 1E5);
A = N = Math.round(u + m);
H = O = Math.round(q - u - m);
h(u) ? c.horiz ? (H = y, O = q - c.bottom, A = N = a(A, f, f + c.width)) : (A = f, N = z - c.right, H = O = a(H, y, y + c.height)) : (C = !0, n = !1);
b.path = C && !n ? null: k.renderer.crispLine([["M", A, H], ["L", N, O]], g || 1)
});
return b.path
};
a.prototype.getLinearTickPositions = function(b, d, a) {
var h = u(Math.floor(d / b) * b);
a = u(Math.ceil(a / b) * b);
var c = [],
e;
u(h + b) === h && (e = 20);
if (this.single) return [d];
for (d = h; d <= a;) {
c.push(d);
d = u(d + b, e);
if (d === k) break;
var k = d
}
return c
};
a.prototype.getMinorTickInterval = function() {
var b = this.options;
return ! 0 === b.minorTicks ? w(b.minorTickInterval, "auto") : !1 === b.minorTicks ? null: b.minorTickInterval
};
a.prototype.getMinorTickPositions = function() {
var b = this.options,
d = this.tickPositions,
a = this.minorTickInterval,
h = this.pointRangePadding || 0,
c = this.min - h;
h = this.max + h;
var e = h - c,
k = [];
if (e && e / a < this.len / 3) {
var f = this.logarithmic;
if (f) this.paddedTicks.forEach(function(b, d, h) {
d && k.push.apply(k, f.getLogTickPositions(a, h[d - 1], h[d], !0))
});
else if (this.dateTime && "auto" === this.getMinorTickInterval()) k = k.concat(this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(a), c, h, b.startOfWeek));
else for (b = c + (d[0] - c) % a; b <= h && b !== k[0]; b += a) k.push(b)
}
0 !== k.length && this.trimTicks(k);
return k
};
a.prototype.adjustForMinRange = function() {
var b = this.options,
d = this.logarithmic,
a = this.min,
h = this.max,
c = 0,
e, k, f, p;
this.isXAxis && "undefined" === typeof this.minRange && !d && (C(b.min) || C(b.max) || C(b.floor) || C(b.ceiling) ? this.minRange = null: (this.series.forEach(function(b) {
f = b.xData;
p = b.xIncrement ? 1 : f.length - 1;
if (1 < f.length) for (e = p; 0 < e; e--) if (k = f[e] - f[e - 1], !c || k < c) c = k
}), this.minRange = Math.min(5 * c, this.dataMax - this.dataMin)));
if (h - a < this.minRange) {
var g = this.dataMax - this.dataMin >= this.minRange;
var q = this.minRange;
var z = (q - h + a) / 2;
z = [a - z, w(b.min, a - z)];
g && (z[2] = this.logarithmic ? this.logarithmic.log2lin(this.dataMin) : this.dataMin);
a = l(z);
h = [a + q, w(b.max, a + q)];
g && (h[2] = d ? d.log2lin(this.dataMax) : this.dataMax);
h = m(h);
h - a < q && (z[0] = h - q, z[1] = w(b.min, h - q), a = l(z))
}
this.min = a;
this.max = h
};
a.prototype.getClosest = function() {
var b;
this.categories ? b = 1 : this.series.forEach(function(d) {
var a = d.closestPointRange,
h = d.visible || !d.chart.options.chart.ignoreHiddenSeries; ! d.noSharedTooltip && C(a) && h && (b = C(b) ? Math.min(b, a) : a)
});
return b
};
a.prototype.nameToX = function(b) {
var d = q(this.options.categories),
a = d ? this.categories: this.names,
h = b.options.x;
b.series.requireSorting = !1;
C(h) || (h = this.options.uniqueNames && a ? d ? a.indexOf(b.name) : w(a.keys[b.name], -1) : b.series.autoIncrement());
if ( - 1 === h) {
if (!d && a) var c = a.length
} else c = h;
"undefined" !== typeof c ? (this.names[c] = b.name, this.names.keys[b.name] = c) : b.x && (c = b.x);
return c
};
a.prototype.updateNames = function() {
var b = this,
d = this.names;
0 < d.length && (Object.keys(d.keys).forEach(function(b) {
delete d.keys[b]
}), d.length = 0, this.minRange = this.userMinRange, (this.series || []).forEach(function(d) {
d.xIncrement = null;
if (!d.points || d.isDirtyData) b.max = Math.max(b.max, d.xData.length - 1),
d.processData(),
d.generatePoints();
d.data.forEach(function(a, h) {
if (a && a.options && "undefined" !== typeof a.name) {
var c = b.nameToX(a);
"undefined" !== typeof c && c !== a.x && (a.x = c, d.xData[h] = c)
}
})
}))
};
a.prototype.setAxisTranslation = function() {
var b = this,
a = b.max - b.min,
h = b.linkedParent,
c = !!b.categories,
e = b.isXAxis,
f = b.axisPointRange || 0,
p = 0,
l = 0,
g = b.transA;
if (e || c || f) {
var q = b.getClosest();
h ? (p = h.minPointOffset, l = h.pointRangePadding) : b.series.forEach(function(d) {
var a = c ? 1 : e ? w(d.options.pointRange, q, 0) : b.axisPointRange || 0,
h = d.options.pointPlacement;
f = Math.max(f, a);
if (!b.single || c) d = d.is("xrange") ? !e: e,
p = Math.max(p, d && k(h) ? 0 : a / 2),
l = Math.max(l, d && "on" === h ? 0 : a)
});
h = b.ordinal && b.ordinal.slope && q ? b.ordinal.slope / q: 1;
b.minPointOffset = p *= h;
b.pointRangePadding = l *= h;
b.pointRange = Math.min(f, b.single && c ? 1 : a);
e && (b.closestPointRange = q)
}
b.translationSlope = b.transA = g = b.staticScale || b.len / (a + l || 1);
b.transB = b.horiz ? b.left: b.bottom;
b.minPixelPadding = g * p;
d(this, "afterSetAxisTranslation")
};
a.prototype.minFromRange = function() {
return this.max - this.range
};
a.prototype.setTickInterval = function(b) {
var a = this.chart,
c = this.logarithmic,
e = this.options,
k = this.isXAxis,
f = this.isLinked,
p = e.tickPixelInterval,
y = this.categories,
l = this.softThreshold,
g = e.maxPadding,
q = e.minPadding,
z = h(e.tickInterval) && 0 <= e.tickInterval ? e.tickInterval: void 0,
m = h(this.threshold) ? this.threshold: null;
this.dateTime || y || f || this.getTickAmount();
var n = w(this.userMin, e.min);
var A = w(this.userMax, e.max);
if (f) {
this.linkedParent = a[this.coll][e.linkedTo];
var H = this.linkedParent.getExtremes();
this.min = w(H.min, H.dataMin);
this.max = w(H.max, H.dataMax);
e.type !== this.linkedParent.options.type && v(11, 1, a)
} else {
if (l && C(m)) if (this.dataMin >= m) H = m,
q = 0;
else if (this.dataMax <= m) {
var N = m;
g = 0
}
this.min = w(n, H, this.dataMin);
this.max = w(A, N, this.dataMax)
}
c && (this.positiveValuesOnly && !b && 0 >= Math.min(this.min, w(this.dataMin, this.min)) && v(10, 1, a), this.min = u(c.log2lin(this.min), 16), this.max = u(c.log2lin(this.max), 16));
this.range && C(this.max) && (this.userMin = this.min = n = Math.max(this.dataMin, this.minFromRange()), this.userMax = A = this.max, this.range = null);
d(this, "foundExtremes");
this.beforePadding && this.beforePadding();
this.adjustForMinRange(); ! (y || this.axisPointRange || this.stacking && this.stacking.usePercentage || f) && C(this.min) && C(this.max) && (a = this.max - this.min) && (!C(n) && q && (this.min -= a * q), !C(A) && g && (this.max += a * g));
h(this.userMin) || (h(e.softMin) && e.softMin < this.min && (this.min = n = e.softMin), h(e.floor) && (this.min = Math.max(this.min, e.floor)));
h(this.userMax) || (h(e.softMax) && e.softMax > this.max && (this.max = A = e.softMax), h(e.ceiling) && (this.max = Math.min(this.max, e.ceiling)));
l && C(this.dataMin) && (m = m || 0, !C(n) && this.min < m && this.dataMin >= m ? this.min = this.options.minRange ? Math.min(m, this.max - this.minRange) : m: !C(A) && this.max > m && this.dataMax <= m && (this.max = this.options.minRange ? Math.max(m, this.min + this.minRange) : m));
h(this.min) && h(this.max) && !this.chart.polar && this.min > this.max && (C(this.options.min) ? this.max = this.min: C(this.options.max) && (this.min = this.max));
this.tickInterval = this.min === this.max || "undefined" === typeof this.min || "undefined" === typeof this.max ? 1 : f && this.linkedParent && !z && p === this.linkedParent.options.tickPixelInterval ? z = this.linkedParent.tickInterval: w(z, this.tickAmount ? (this.max - this.min) / Math.max(this.tickAmount - 1, 1) : void 0, y ? 1 : (this.max - this.min) * p / Math.max(this.len, p));
if (k && !b) {
var O = this.min !== (this.old && this.old.min) || this.max !== (this.old && this.old.max);
this.series.forEach(function(b) {
b.forceCrop = b.forceCropping && b.forceCropping();
b.processData(O)
});
d(this, "postProcessData", {
hasExtremesChanged: O
})
}
this.setAxisTranslation();
d(this, "initialAxisTranslation");
this.pointRange && !z && (this.tickInterval = Math.max(this.pointRange, this.tickInterval));
b = w(e.minTickInterval, this.dateTime && !this.series.some(function(b) {
return b.noSharedTooltip
}) ? this.closestPointRange: 0); ! z && this.tickInterval < b && (this.tickInterval = b);
this.dateTime || this.logarithmic || z || (this.tickInterval = S(this, this.tickInterval));
this.tickAmount || (this.tickInterval = this.unsquish());
this.setTickPositions()
};
a.prototype.setTickPositions = function() {
var b = this.options,
a = b.tickPositions,
c = b.tickPositioner,
e = this.getMinorTickInterval(),
k = this.hasVerticalPanning(),
f = "colorAxis" === this.coll,
p = (f || !k) && b.startOnTick;
k = (f || !k) && b.endOnTick;
f = [];
var l;
this.tickmarkOffset = this.categories && "between" === b.tickmarkPlacement && 1 === this.tickInterval ? .5 : 0;
this.minorTickInterval = "auto" === e && this.tickInterval ? this.tickInterval / 5 : e;
this.single = this.min === this.max && C(this.min) && !this.tickAmount && (parseInt(this.min, 10) === this.min || !1 !== b.allowDecimals);
if (a) f = a.slice();
else if (h(this.min) && h(this.max)) {
if (this.ordinal && this.ordinal.positions || !((this.max - this.min) / this.tickInterval > Math.max(2 * this.len, 200))) if (this.dateTime) f = this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval, b.units), this.min, this.max, b.startOfWeek, this.ordinal && this.ordinal.positions, this.closestPointRange, !0);
else if (this.logarithmic) f = this.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);
else for (e = b = this.tickInterval; e <= 2 * b;) if (f = this.getLinearTickPositions(this.tickInterval, this.min, this.max), this.tickAmount && f.length > this.tickAmount) this.tickInterval = S(this, e *= 1.1);
else break;
else f = [this.min, this.max],
v(19, !1, this.chart);
f.length > this.len && (f = [f[0], f[f.length - 1]], f[0] === f[1] && (f.length = 1));
c && (this.tickPositions = f, (l = c.apply(this, [this.min, this.max])) && (f = l))
}
this.tickPositions = f;
this.paddedTicks = f.slice(0);
this.trimTicks(f, p, k); ! this.isLinked && h(this.min) && h(this.max) && (this.single && 2 > f.length && !this.categories && !this.series.some(function(b) {
return b.is("heatmap") && "between" === b.options.pointPlacement
}) && (this.min -= .5, this.max += .5), a || l || this.adjustTickAmount());
d(this, "afterSetTickPositions")
};
a.prototype.trimTicks = function(b, a, h) {
var c = b[0],
e = b[b.length - 1],
f = !this.isOrdinal && this.minPointOffset || 0;
d(this, "trimTicks");
if (!this.isLinked) {
if (a && -Infinity !== c) this.min = c;
else for (; this.min - f > b[0];) b.shift();
if (h) this.max = e;
else for (; this.max + f < b[b.length - 1];) b.pop();
0 === b.length && C(c) && !this.options.tickPositions && b.push((e + c) / 2)
}
};
a.prototype.alignToOthers = function() {
var b = this,
d = [this],
a = b.options,
c = "yAxis" === this.coll && this.chart.options.chart.alignThresholds,
e = [],
f;
b.thresholdAlignment = void 0;
if ((!1 !== this.chart.options.chart.alignTicks && a.alignTicks || c) && !1 !== a.startOnTick && !1 !== a.endOnTick && !b.logarithmic) {
var k = function(b) {
var d = b.options;
return [b.horiz ? d.left: d.top, d.width, d.height, d.pane].join()
},
p = k(this);
this.chart[this.coll].forEach(function(a) {
var h = a.series;
h.length && h.some(function(b) {
return b.visible
}) && a !== b && k(a) === p && (f = !0, d.push(a))
})
}
if (f && c) {
d.forEach(function(d) {
d = d.getThresholdAlignment(b);
h(d) && e.push(d)
});
var l = 1 < e.length ? e.reduce(function(b, d) {
return b + d
},
0) / e.length: void 0;
d.forEach(function(b) {
b.thresholdAlignment = l
})
}
return f
};
a.prototype.getThresholdAlignment = function(b) { (!h(this.dataMin) || this !== b && this.series.some(function(b) {
return b.isDirty || b.isDirtyData
})) && this.getSeriesExtremes();
if (h(this.threshold)) return b = e((this.threshold - (this.dataMin || 0)) / ((this.dataMax || 0) - (this.dataMin || 0)), 0, 1),
this.options.reversed && (b = 1 - b),
b
};
a.prototype.getTickAmount = function() {
var b = this.options,
d = b.tickPixelInterval,
a = b.tickAmount; ! C(b.tickInterval) && !a && this.len < d && !this.isRadial && !this.logarithmic && b.startOnTick && b.endOnTick && (a = 2); ! a && this.alignToOthers() && (a = Math.ceil(this.len / d) + 1);
4 > a && (this.finalTickAmt = a, a = 5);
this.tickAmount = a
};
a.prototype.adjustTickAmount = function() {
var b = this,
d = b.finalTickAmt,
a = b.max,
c = b.min,
e = b.options,
f = b.tickPositions,
k = b.tickAmount,
p = b.thresholdAlignment,
l = f && f.length,
g = w(b.threshold, b.softThreshold ? 0 : null);
var q = b.tickInterval;
if (h(p)) {
var z = .5 > p ? Math.ceil(p * (k - 1)) : Math.floor(p * (k - 1));
e.reversed && (z = k - 1 - z)
}
if (b.hasData() && h(c) && h(a)) {
p = function() {
b.transA *= (l - 1) / (k - 1);
b.min = e.startOnTick ? f[0] : Math.min(c, f[0]);
b.max = e.endOnTick ? f[f.length - 1] : Math.max(a, f[f.length - 1])
};
if (h(z) && h(b.threshold)) {
for (; f[z] !== g || f.length !== k || f[0] > c || f[f.length - 1] < a;) {
f.length = 0;
for (f.push(b.threshold); f.length < k;) void 0 === f[z] || f[z] > b.threshold ? f.unshift(u(f[0] - q)) : f.push(u(f[f.length - 1] + q));
if (q > 8 * b.tickInterval) break;
q *= 2
}
p()
} else if (l < k) {
for (; f.length < k;) f.length % 2 || c === g ? f.push(u(f[f.length - 1] + q)) : f.unshift(u(f[0] - q));
p()
}
if (C(d)) {
for (q = g = f.length; q--;)(3 === d && 1 === q % 2 || 2 >= d && 0 < q && q < g - 1) && f.splice(q, 1);
b.finalTickAmt = void 0
}
}
};
a.prototype.setScale = function() {
var b = !1,
a = !1;
this.series.forEach(function(d) {
b = b || d.isDirtyData || d.isDirty;
a = a || d.xAxis && d.xAxis.isDirty || !1
});
this.setAxisSize();
var h = this.len !== (this.old && this.old.len);
h || b || a || this.isLinked || this.forceRedraw || this.userMin !== (this.old && this.old.userMin) || this.userMax !== (this.old && this.old.userMax) || this.alignToOthers() ? (this.stacking && this.stacking.resetStacks(), this.forceRedraw = !1, this.getSeriesExtremes(), this.setTickInterval(), this.isDirty || (this.isDirty = h || this.min !== (this.old && this.old.min) || this.max !== (this.old && this.old.max))) : this.stacking && this.stacking.cleanStacks();
b && this.panningState && (this.panningState.isDirty = !0);
d(this, "afterSetScale")
};
a.prototype.setExtremes = function(b, a, h, c, e) {
var f = this,
k = f.chart;
h = w(h, !0);
f.series.forEach(function(b) {
delete b.kdTree
});
e = A(e, {
min: b,
max: a
});
d(f, "setExtremes", e,
function() {
f.userMin = b;
f.userMax = a;
f.eventArgs = e;
h && k.redraw(c)
})
};
a.prototype.zoom = function(b, a) {
var h = this,
c = this.dataMin,
e = this.dataMax,
f = this.options,
k = Math.min(c, w(f.min, c)),
p = Math.max(e, w(f.max, e));
b = {
newMin: b,
newMax: a
};
d(this, "zoom", b,
function(b) {
var d = b.newMin,
a = b.newMax;
if (d !== h.min || a !== h.max) h.allowZoomOutside || (C(c) && (d < k && (d = k), d > p && (d = p)), C(e) && (a < k && (a = k), a > p && (a = p))),
h.displayBtn = "undefined" !== typeof d || "undefined" !== typeof a,
h.setExtremes(d, a, !1, void 0, {
trigger: "zoom"
});
b.zoomed = !0
});
return b.zoomed
};
a.prototype.setAxisSize = function() {
var b = this.chart,
d = this.options,
a = d.offsets || [0, 0, 0, 0],
h = this.horiz,
c = this.width = Math.round(N(w(d.width, b.plotWidth - a[3] + a[1]), b.plotWidth)),
e = this.height = Math.round(N(w(d.height, b.plotHeight - a[0] + a[2]), b.plotHeight)),
f = this.top = Math.round(N(w(d.top, b.plotTop + a[0]), b.plotHeight, b.plotTop));
d = this.left = Math.round(N(w(d.left, b.plotLeft + a[3]), b.plotWidth, b.plotLeft));
this.bottom = b.chartHeight - e - f;
this.right = b.chartWidth - c - d;
this.len = Math.max(h ? c: e, 0);
this.pos = h ? d: f
};
a.prototype.getExtremes = function() {
var b = this.logarithmic;
return {
min: b ? u(b.lin2log(this.min)) : this.min,
max: b ? u(b.lin2log(this.max)) : this.max,
dataMin: this.dataMin,
dataMax: this.dataMax,
userMin: this.userMin,
userMax: this.userMax
}
};
a.prototype.getThreshold = function(b) {
var d = this.logarithmic,
a = d ? d.lin2log(this.min) : this.min;
d = d ? d.lin2log(this.max) : this.max;
null === b || -Infinity === b ? b = a: Infinity === b ? b = d: a > b ? b = a: d < b && (b = d);
return this.translate(b, 0, 1, 0, 1)
};
a.prototype.autoLabelAlign = function(b) {
var a = (w(b, 0) - 90 * this.side + 720) % 360;
b = {
align: "center"
};
d(this, "autoLabelAlign", b,
function(b) {
15 < a && 165 > a ? b.align = "right": 195 < a && 345 > a && (b.align = "left")
});
return b.align
};
a.prototype.tickSize = function(b) {
var a = this.options,
h = w(a["tick" === b ? "tickWidth": "minorTickWidth"], "tick" === b && this.isXAxis && !this.categories ? 1 : 0),
c = a["tick" === b ? "tickLength": "minorTickLength"];
if (h && c) {
"inside" === a[b + "Position"] && (c = -c);
var e = [c, h]
}
b = {
tickSize: e
};
d(this, "afterTickSize", b);
return b.tickSize
};
a.prototype.labelMetrics = function() {
var b = this.tickPositions && this.tickPositions[0] || 0;
return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[b] && this.ticks[b].label)
};
a.prototype.unsquish = function() {
var b = this.options.labels,
d = this.horiz,
a = this.tickInterval,
e = this.len / (((this.categories ? 1 : 0) + this.max - this.min) / a),
f = b.rotation,
k = this.labelMetrics(),
p = Math.max(this.max - this.min, 0),
l = function(b) {
var d = b / (e || 1);
d = 1 < d ? Math.ceil(d) : 1;
d * a > p && Infinity !== b && Infinity !== e && p && (d = Math.ceil(p / a));
return u(d * a)
},
g = a,
q = Number.MAX_VALUE;
if (d) {
if (!b.staggerLines) if (h(f)) var z = [f];
else e < b.autoRotationLimit && (z = b.autoRotation);
if (z) for (var m = d = void 0,
n = 0,
A = z; n < A.length; n++) {
var H = A[n];
if (H === f || H && -90 <= H && 90 >= H) if (d = l(Math.abs(k.h / Math.sin(c * H))), m = d + Math.abs(H / 360), m < q) {
q = m;
var N = H;
g = d
}
}
} else g = l(k.h);
this.autoRotation = z;
this.labelRotation = w(N, h(f) ? f: 0);
return b.step ? a: g
};
a.prototype.getSlotWidth = function(b) {
var d = this.chart,
a = this.horiz,
c = this.options.labels,
e = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),
f = d.margin[3];
if (b && h(b.slotWidth)) return b.slotWidth;
if (a && 2 > c.step) return c.rotation ? 0 : (this.staggerLines || 1) * this.len / e;
if (!a) {
b = c.style.width;
if (void 0 !== b) return parseInt(String(b), 10);
if (f) return f - d.spacing[3]
}
return.33 * d.chartWidth
};
a.prototype.renderUnsquish = function() {
var b = this.chart,
d = b.renderer,
a = this.tickPositions,
h = this.ticks,
c = this.options.labels,
e = c.style,
f = this.horiz,
p = this.getSlotWidth(),
l = Math.max(1, Math.round(p - 2 * c.padding)),
g = {},
q = this.labelMetrics(),
z = e.textOverflow,
w = 0;
k(c.rotation) || (g.rotation = c.rotation || 0);
a.forEach(function(b) {
b = h[b];
b.movedLabel && b.replaceMovedLabel();
b && b.label && b.label.textPxLength > w && (w = b.label.textPxLength)
});
this.maxLabelLength = w;
if (this.autoRotation) w > l && w > q.h ? g.rotation = this.labelRotation: this.labelRotation = 0;
else if (p) {
var m = l;
if (!z) {
var u = "clip";
for (l = a.length; ! f && l--;) {
var n = a[l];
if (n = h[n].label) n.styles && "ellipsis" === n.styles.textOverflow ? n.css({
textOverflow: "clip"
}) : n.textPxLength > p && n.css({
width: p + "px"
}),
n.getBBox().height > this.len / a.length - (q.h - q.f) && (n.specificTextOverflow = "ellipsis")
}
}
}
g.rotation && (m = w > .5 * b.chartHeight ? .33 * b.chartHeight: w, z || (u = "ellipsis"));
if (this.labelAlign = c.align || this.autoLabelAlign(this.labelRotation)) g.align = this.labelAlign;
a.forEach(function(b) {
var d = (b = h[b]) && b.label,
a = e.width,
c = {};
d && (d.attr(g), b.shortenLabel ? b.shortenLabel() : m && !a && "nowrap" !== e.whiteSpace && (m < d.textPxLength || "SPAN" === d.element.tagName) ? (c.width = m + "px", z || (c.textOverflow = d.specificTextOverflow || u), d.css(c)) : d.styles && d.styles.width && !c.width && !a && d.css({
width: null
}), delete d.specificTextOverflow, b.rotation = g.rotation)
},
this);
this.tickRotCorr = d.rotCorr(q.b, this.labelRotation || 0, 0 !== this.side)
};
a.prototype.hasData = function() {
return this.series.some(function(b) {
return b.hasData()
}) || this.options.showEmpty && C(this.min) && C(this.max)
};
a.prototype.addTitle = function(d) {
var a = this.chart.renderer,
c = this.horiz,
h = this.opposite,
e = this.options.title,
f = this.chart.styledMode,
k;
this.axisTitle || ((k = e.textAlign) || (k = (c ? {
low: "left",
middle: "center",
high: "right"
}: {
low: h ? "right": "left",
middle: "center",
high: h ? "left": "right"
})[e.align]), this.axisTitle = a.text(e.text || "", 0, 0, e.useHTML).attr({
zIndex: 7,
rotation: e.rotation,
align: k
}).addClass("highcharts-axis-title"), f || this.axisTitle.css(b(e.style)), this.axisTitle.add(this.axisGroup), this.axisTitle.isNew = !0);
f || e.style.width || this.isRadial || this.axisTitle.css({
width: this.len + "px"
});
this.axisTitle[d ? "show": "hide"](d)
};
a.prototype.generateTick = function(b) {
var d = this.ticks;
d[b] ? d[b].addLabel() : d[b] = new G(this, b)
};
a.prototype.getOffset = function() {
var b = this,
a = this,
c = a.chart,
h = a.horiz,
e = a.options,
f = a.side,
k = a.ticks,
p = a.tickPositions,
l = a.coll,
g = a.axisParent,
q = c.renderer,
m = c.inverted && !a.isZAxis ? [1, 0, 3, 2][f] : f,
u = a.hasData(),
n = e.title,
A = e.labels,
H = c.axisOffset;
c = c.clipOffset;
var N = [ - 1, 1, 1, -1][f],
O = e.className,
t,
r = 0,
ja = 0,
ea = 0;
a.showAxis = t = u || e.showEmpty;
a.staggerLines = a.horiz && A.staggerLines || void 0;
if (!a.axisGroup) {
var Q = function(d, a, c) {
return q.g(d).attr({
zIndex: c
}).addClass("highcharts-".concat(l.toLowerCase()).concat(a, " ") + (b.isRadial ? "highcharts-radial-axis".concat(a, " ") : "") + (O || "")).add(g)
};
a.gridGroup = Q("grid", "-grid", e.gridZIndex);
a.axisGroup = Q("axis", "", e.zIndex);
a.labelGroup = Q("axis-labels", "-labels", A.zIndex)
}
u || a.isLinked ? (p.forEach(function(b) {
a.generateTick(b)
}), a.renderUnsquish(), a.reserveSpaceDefault = 0 === f || 2 === f || {
1 : "left",
3 : "right"
} [f] === a.labelAlign, w(A.reserveSpace, "center" === a.labelAlign ? !0 : null, a.reserveSpaceDefault) && p.forEach(function(b) {
ea = Math.max(k[b].getLabelSize(), ea)
}), a.staggerLines && (ea *= a.staggerLines), a.labelOffset = ea * (a.opposite ? -1 : 1)) : z(k,
function(b, d) {
b.destroy();
delete k[d]
});
if (n && n.text && !1 !== n.enabled && (a.addTitle(t), t && !1 !== n.reserveSpace)) {
a.titleOffset = r = a.axisTitle.getBBox()[h ? "height": "width"];
var J = n.offset;
ja = C(J) ? 0 : w(n.margin, h ? 5 : 10)
}
a.renderLine();
a.offset = N * w(e.offset, H[f] ? H[f] + (e.margin || 0) : 0);
a.tickRotCorr = a.tickRotCorr || {
x: 0,
y: 0
};
n = 0 === f ? -a.labelMetrics().h: 2 === f ? a.tickRotCorr.y: 0;
u = Math.abs(ea) + ja;
ea && (u = u - n + N * (h ? w(A.y, a.tickRotCorr.y + 8 * N) : A.x));
a.axisTitleMargin = w(J, u);
a.getMaxLabelDimensions && (a.maxLabelDimensions = a.getMaxLabelDimensions(k, p));
"colorAxis" !== l && (h = this.tickSize("tick"), H[f] = Math.max(H[f], (a.axisTitleMargin || 0) + r + N * a.offset, u, p && p.length && h ? h[0] + N * a.offset: 0), e = !a.axisLine || e.offset ? 0 : 2 * Math.floor(a.axisLine.strokeWidth() / 2), c[m] = Math.max(c[m], e));
d(this, "afterGetOffset")
};
a.prototype.getLinePath = function(b) {
var d = this.chart,
a = this.opposite,
c = this.offset,
h = this.horiz,
e = this.left + (a ? this.width: 0) + c;
c = d.chartHeight - this.bottom - (a ? this.height: 0) + c;
a && (b *= -1);
return d.renderer.crispLine([["M", h ? this.left: e, h ? c: this.top], ["L", h ? d.chartWidth - this.right: e, h ? c: d.chartHeight - this.bottom]], b)
};
a.prototype.renderLine = function() {
this.axisLine || (this.axisLine = this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup), this.chart.styledMode || this.axisLine.attr({
stroke: this.options.lineColor,
"stroke-width": this.options.lineWidth,
zIndex: 7
}))
};
a.prototype.getTitlePosition = function() {
var b = this.horiz,
a = this.left,
c = this.top,
h = this.len,
e = this.options.title,
f = b ? a: c,
k = this.opposite,
p = this.offset,
l = e.x,
g = e.y,
q = this.axisTitle,
z = this.chart.renderer.fontMetrics(e.style.fontSize, q);
q = q ? Math.max(q.getBBox(!1, 0).height - z.h - 1, 0) : 0;
h = {
low: f + (b ? 0 : h),
middle: f + h / 2,
high: f + (b ? h: 0)
} [e.align];
a = (b ? c + this.height: a) + (b ? 1 : -1) * (k ? -1 : 1) * (this.axisTitleMargin || 0) + [ - q, q, z.f, -q][this.side];
b = {
x: b ? h + l: a + (k ? this.width: 0) + p + l,
y: b ? a + g - (k ? this.height: 0) + p: h + g
};
d(this, "afterGetTitlePosition", {
titlePosition: b
});
return b
};
a.prototype.renderMinorTick = function(b, d) {
var a = this.minorTicks;
a[b] || (a[b] = new G(this, b, "minor"));
d && a[b].isNew && a[b].render(null, !0);
a[b].render(null, !1, 1)
};
a.prototype.renderTick = function(b, d, a) {
var c = this.ticks;
if (!this.isLinked || b >= this.min && b <= this.max || this.grid && this.grid.isColumn) c[b] || (c[b] = new G(this, b)),
a && c[b].isNew && c[b].render(d, !0, -1),
c[b].render(d)
};
a.prototype.render = function() {
var b = this,
a = b.chart,
c = b.logarithmic,
e = b.options,
f = b.isLinked,
k = b.tickPositions,
p = b.axisTitle,
l = b.ticks,
g = b.minorTicks,
q = b.alternateBands,
w = e.stackLabels,
m = e.alternateGridColor,
u = b.tickmarkOffset,
n = b.axisLine,
A = b.showAxis,
H = t(a.renderer.globalAnimation),
N,
O;
b.labelEdge.length = 0;
b.overlap = !1; [l, g, q].forEach(function(b) {
z(b,
function(b) {
b.isActive = !1
})
});
if (b.hasData() || f) {
var C = b.chart.hasRendered && b.old && h(b.old.min);
b.minorTickInterval && !b.categories && b.getMinorTickPositions().forEach(function(d) {
b.renderMinorTick(d, C)
});
k.length && (k.forEach(function(d, a) {
b.renderTick(d, a, C)
}), u && (0 === b.min || b.single) && (l[ - 1] || (l[ - 1] = new G(b, -1, null, !0)), l[ - 1].render( - 1)));
m && k.forEach(function(d, h) {
O = "undefined" !== typeof k[h + 1] ? k[h + 1] + u: b.max - u;
0 === h % 2 && d < b.max && O <= b.max + (a.polar ? -u: u) && (q[d] || (q[d] = new B.PlotLineOrBand(b)), N = d + u, q[d].options = {
from: c ? c.lin2log(N) : N,
to: c ? c.lin2log(O) : O,
color: m,
className: "highcharts-alternate-grid"
},
q[d].render(), q[d].isActive = !0)
});
b._addedPlotLB || (b._addedPlotLB = !0, (e.plotLines || []).concat(e.plotBands || []).forEach(function(d) {
b.addPlotBandOrLine(d)
}))
} [l, g, q].forEach(function(b) {
var d = [],
c = H.duration;
z(b,
function(b, a) {
b.isActive || (b.render(a, !1, 0), b.isActive = !1, d.push(a))
});
Q(function() {
for (var a = d.length; a--;) b[d[a]] && !b[d[a]].isActive && (b[d[a]].destroy(), delete b[d[a]])
},
b !== q && a.hasRendered && c ? c: 0)
});
n && (n[n.isPlaced ? "animate": "attr"]({
d: this.getLinePath(n.strokeWidth())
}), n.isPlaced = !0, n[A ? "show": "hide"](A));
p && A && (e = b.getTitlePosition(), p[p.isNew ? "attr": "animate"](e), p.isNew = !1);
w && w.enabled && b.stacking && b.stacking.renderStackTotals();
b.old = {
len: b.len,
max: b.max,
min: b.min,
transA: b.transA,
userMax: b.userMax,
userMin: b.userMin
};
b.isDirty = !1;
d(this, "afterRender")
};
a.prototype.redraw = function() {
this.visible && (this.render(), this.plotLinesAndBands.forEach(function(b) {
b.render()
}));
this.series.forEach(function(b) {
b.isDirty = !0
})
};
a.prototype.getKeepProps = function() {
return this.keepProps || a.keepProps
};
a.prototype.destroy = function(b) {
var a = this,
c = a.plotLinesAndBands,
h = this.eventOptions;
d(this, "destroy", {
keepEvents: b
});
b || H(a); [a.ticks, a.minorTicks, a.alternateBands].forEach(function(b) {
J(b)
});
if (c) for (b = c.length; b--;) c[b].destroy();
"axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar".split(" ").forEach(function(b) {
a[b] && (a[b] = a[b].destroy())
});
for (var e in a.plotLinesAndBandsGroups) a.plotLinesAndBandsGroups[e] = a.plotLinesAndBandsGroups[e].destroy();
z(a,
function(b, d) { - 1 === a.getKeepProps().indexOf(d) && delete a[d]
});
this.eventOptions = h
};
a.prototype.drawCrosshair = function(b, a) {
var c = this.crosshair,
h = w(c && c.snap, !0),
e = this.chart,
f,
k = this.cross;
d(this, "drawCrosshair", {
e: b,
point: a
});
b || (b = this.cross && this.cross.e);
if (c && !1 !== (C(a) || !h)) {
h ? C(a) && (f = w("colorAxis" !== this.coll ? a.crosshairPos: null, this.isXAxis ? a.plotX: this.len - a.plotY)) : f = b && (this.horiz ? b.chartX - this.pos: this.len - b.chartY + this.pos);
if (C(f)) {
var p = {
value: a && (this.isXAxis ? a.x: w(a.stackY, a.y)),
translatedValue: f
};
e.polar && A(p, {
isCrosshair: !0,
chartX: b && b.chartX,
chartY: b && b.chartY,
point: a
});
p = this.getPlotLinePath(p) || null
}
if (!C(p)) {
this.hideCrosshair();
return
}
h = this.categories && !this.isRadial;
k || (this.cross = k = e.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-" + (h ? "category ": "thin ") + (c.className || "")).attr({
zIndex: w(c.zIndex, 2)
}).add(), e.styledMode || (k.attr({
stroke: c.color || (h ? x.parse("#ccd6eb").setOpacity(.25).get() : "#cccccc"),
"stroke-width": w(c.width, 1)
}).css({
"pointer-events": "none"
}), c.dashStyle && k.attr({
dashstyle: c.dashStyle
})));
k.show().attr({
d: p
});
h && !c.width && k.attr({
"stroke-width": this.transA
});
this.cross.e = b
} else this.hideCrosshair();
d(this, "afterDrawCrosshair", {
e: b,
point: a
})
};
a.prototype.hideCrosshair = function() {
this.cross && this.cross.hide();
d(this, "afterHideCrosshair")
};
a.prototype.hasVerticalPanning = function() {
var b = this.chart.options.chart.panning;
return !! (b && b.enabled && /y/.test(b.type))
};
a.prototype.validatePositiveValue = function(b) {
return h(b) && 0 < b
};
a.prototype.update = function(d, a) {
var c = this.chart;
d = b(this.userOptions, d);
this.destroy(!0);
this.init(c, d);
c.isDirtyBox = !0;
w(a, !0) && c.redraw()
};
a.prototype.remove = function(b) {
for (var d = this.chart,
a = this.coll,
c = this.series,
h = c.length; h--;) c[h] && c[h].remove(!1);
I(d.axes, this);
I(d[a], this);
d[a].forEach(function(b, d) {
b.options.index = b.userOptions.index = d
});
this.destroy();
d.isDirtyBox = !0;
w(b, !0) && d.redraw()
};
a.prototype.setTitle = function(b, d) {
this.update({
title: b
},
d)
};
a.prototype.setCategories = function(b, d) {
this.update({
categories: b
},
d)
};
a.defaultOptions = g.defaultXAxisOptions;
a.keepProps = "extKey hcEvents names series userMax userMin".split(" ");
return a
} ();
"";
return a
});
K(g, "Core/Axis/DateTimeAxis.js", [g["Core/Utilities.js"]],
function(a) {
var g = a.addEvent,
x = a.getMagnitude,
E = a.normalizeTickInterval,
D = a.timeUnits,
B; (function(a) {
function r() {
return this.chart.time.getTimeTicks.apply(this.chart.time, arguments)
}
function t(a) {
"datetime" !== a.userOptions.type ? this.dateTime = void 0 : this.dateTime || (this.dateTime = new f(this))
}
var n = [];
a.compose = function(a) { - 1 === n.indexOf(a) && (n.push(a), a.keepProps.push("dateTime"), a.prototype.getTimeTicks = r, g(a, "init", t));
return a
};
var f = function() {
function a(a) {
this.axis = a
}
a.prototype.normalizeTimeTickInterval = function(a, c) {
var e = c || [["millisecond", [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]], ["second", [1, 2, 5, 10, 15, 30]], ["minute", [1, 2, 5, 10, 15, 30]], ["hour", [1, 2, 3, 4, 6, 8, 12]], ["day", [1, 2]], ["week", [1, 2]], ["month", [1, 2, 3, 4, 6]], ["year", null]];
c = e[e.length - 1];
var f = D[c[0]],
l = c[1],
g;
for (g = 0; g < e.length && !(c = e[g], f = D[c[0]], l = c[1], e[g + 1] && a <= (f * l[l.length - 1] + D[e[g + 1][0]]) / 2); g++);
f === D.year && a < 5 * f && (l = [1, 2, 5]);
a = E(a / f, l, "year" === c[0] ? Math.max(x(a / f), 1) : 1);
return {
unitRange: f,
count: a,
unitName: c[0]
}
};
a.prototype.getXDateFormat = function(a, c) {
var e = this.axis,
f = e.chart.time;
return e.closestPointRange ? f.getDateFormat(e.closestPointRange, a, e.options.startOfWeek, c) || f.resolveDTLFormat(c.year).main: f.resolveDTLFormat(c.day).main
};
return a
} ();
a.Additions = f
})(B || (B = {}));
return B
});
K(g, "Core/Axis/LogarithmicAxis.js", [g["Core/Utilities.js"]],
function(a) {
var g = a.addEvent,
x = a.normalizeTickInterval,
E = a.pick,
D; (function(a) {
function v(a) {
var c = this.logarithmic;
"logarithmic" !== a.userOptions.type ? this.logarithmic = void 0 : c || (this.logarithmic = new n(this))
}
function r() {
var a = this.logarithmic;
a && (this.lin2val = function(c) {
return a.lin2log(c)
},
this.val2lin = function(c) {
return a.log2lin(c)
})
}
var t = [];
a.compose = function(a) { - 1 === t.indexOf(a) && (t.push(a), a.keepProps.push("logarithmic"), g(a, "init", v), g(a, "afterInit", r));
return a
};
var n = function() {
function a(a) {
this.axis = a
}
a.prototype.getLogTickPositions = function(a, f, g, e) {
var c = this.axis,
l = c.len,
m = c.options,
n = [];
e || (this.minorAutoInterval = void 0);
if (.5 <= a) a = Math.round(a),
n = c.getLinearTickPositions(a, f, g);
else if (.08 <= a) {
var t = Math.floor(f),
A,
d = m = void 0;
for (l = .3 < a ? [1, 2, 4] : .15 < a ? [1, 2, 4, 6, 8] : [1, 2, 3, 4, 5, 6, 7, 8, 9]; t < g + 1 && !d; t++) {
var q = l.length;
for (A = 0; A < q && !d; A++) {
var h = this.log2lin(this.lin2log(t) * l[A]);
h > f && (!e || m <= g) && "undefined" !== typeof m && n.push(m);
m > g && (d = !0);
m = h
}
}
} else f = this.lin2log(f),
g = this.lin2log(g),
a = e ? c.getMinorTickInterval() : m.tickInterval,
a = E("auto" === a ? null: a, this.minorAutoInterval, m.tickPixelInterval / (e ? 5 : 1) * (g - f) / ((e ? l / c.tickPositions.length: l) || 1)),
a = x(a),
n = c.getLinearTickPositions(a, f, g).map(this.log2lin),
e || (this.minorAutoInterval = a / 5);
e || (c.tickInterval = a);
return n
};
a.prototype.lin2log = function(a) {
return Math.pow(10, a)
};
a.prototype.log2lin = function(a) {
return Math.log(a) / Math.LN10
};
return a
} ();
a.Additions = n
})(D || (D = {}));
return D
});
K(g, "Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js", [g["Core/Utilities.js"]],
function(a) {
var g = a.erase,
x = a.extend,
E = a.isNumber,
D; (function(a) {
var v = [],
r;
a.compose = function(a, f) {
r || (r = a); - 1 === v.indexOf(f) && (v.push(f), x(f.prototype, t.prototype));
return f
};
var t = function() {
function a() {}
a.prototype.getPlotBandPath = function(a, c, g) {
void 0 === g && (g = this.options);
var f = this.getPlotLinePath({
value: c,
force: !0,
acrossPanes: g.acrossPanes
}),
e = [],
l = this.horiz;
c = !E(this.min) || !E(this.max) || a < this.min && c < this.min || a > this.max && c > this.max;
a = this.getPlotLinePath({
value: a,
force: !0,
acrossPanes: g.acrossPanes
});
g = 1;
if (a && f) {
if (c) {
var n = a.toString() === f.toString();
g = 0
}
for (c = 0; c < a.length; c += 2) {
var t = a[c],
r = a[c + 1],
v = f[c],
A = f[c + 1];
"M" !== t[0] && "L" !== t[0] || "M" !== r[0] && "L" !== r[0] || "M" !== v[0] && "L" !== v[0] || "M" !== A[0] && "L" !== A[0] || (l && v[1] === t[1] ? (v[1] += g, A[1] += g) : l || v[2] !== t[2] || (v[2] += g, A[2] += g), e.push(["M", t[1], t[2]], ["L", r[1], r[2]], ["L", A[1], A[2]], ["L", v[1], v[2]], ["Z"]));
e.isFlat = n
}
}
return e
};
a.prototype.addPlotBand = function(a) {
return this.addPlotBandOrLine(a, "plotBands")
};
a.prototype.addPlotLine = function(a) {
return this.addPlotBandOrLine(a, "plotLines")
};
a.prototype.addPlotBandOrLine = function(a, c) {
var f = this,
g = this.userOptions,
e = new r(this, a);
this.visible && (e = e.render());
if (e) {
this._addedPlotLB || (this._addedPlotLB = !0, (g.plotLines || []).concat(g.plotBands || []).forEach(function(a) {
f.addPlotBandOrLine(a)
}));
if (c) {
var n = g[c] || [];
n.push(a);
g[c] = n
}
this.plotLinesAndBands.push(e)
}
return e
};
a.prototype.removePlotBandOrLine = function(a) {
var c = this.plotLinesAndBands,
f = this.options,
m = this.userOptions;
if (c) {
for (var e = c.length; e--;) c[e].id === a && c[e].destroy(); [f.plotLines || [], m.plotLines || [], f.plotBands || [], m.plotBands || []].forEach(function(c) {
for (e = c.length; e--;)(c[e] || {}).id === a && g(c, c[e])
})
}
};
a.prototype.removePlotBand = function(a) {
this.removePlotBandOrLine(a)
};
a.prototype.removePlotLine = function(a) {
this.removePlotBandOrLine(a)
};
return a
} ()
})(D || (D = {}));
return D
});
K(g, "Core/Axis/PlotLineOrBand/PlotLineOrBand.js", [g["Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = g.arrayMax,
E = g.arrayMin,
D = g.defined,
B = g.destroyObjectProperties,
G = g.erase,
r = g.fireEvent,
t = g.merge,
n = g.objectEach,
f = g.pick;
g = function() {
function c(a, c) {
this.axis = a;
c && (this.options = c, this.id = c.id)
}
c.compose = function(f) {
return a.compose(c, f)
};
c.prototype.render = function() {
r(this, "render");
var a = this,
c = a.axis,
e = c.horiz,
g = c.logarithmic,
C = a.options,
J = C.color,
I = f(C.zIndex, 0),
v = C.events,
A = {},
d = c.chart.renderer,
q = C.label,
h = a.label,
k = C.to,
b = C.from,
p = C.value,
z = a.svgElem,
w = [],
N = D(b) && D(k);
w = D(p);
var H = !z,
O = {
"class": "highcharts-plot-" + (N ? "band ": "line ") + (C.className || "")
},
Q = N ? "bands": "lines";
g && (b = g.log2lin(b), k = g.log2lin(k), p = g.log2lin(p));
c.chart.styledMode || (w ? (O.stroke = J || "#999999", O["stroke-width"] = f(C.width, 1), C.dashStyle && (O.dashstyle = C.dashStyle)) : N && (O.fill = J || "#e6ebf5", C.borderWidth && (O.stroke = C.borderColor, O["stroke-width"] = C.borderWidth)));
A.zIndex = I;
Q += "-" + I; (g = c.plotLinesAndBandsGroups[Q]) || (c.plotLinesAndBandsGroups[Q] = g = d.g("plot-" + Q).attr(A).add());
H && (a.svgElem = z = d.path().attr(O).add(g));
if (w) w = c.getPlotLinePath({
value: p,
lineWidth: z.strokeWidth(),
acrossPanes: C.acrossPanes
});
else if (N) w = c.getPlotBandPath(b, k, C);
else return; ! a.eventsAdded && v && (n(v,
function(b, d) {
z.on(d,
function(b) {
v[d].apply(a, [b])
})
}), a.eventsAdded = !0); (H || !z.d) && w && w.length ? z.attr({
d: w
}) : z && (w ? (z.show(), z.animate({
d: w
})) : z.d && (z.hide(), h && (a.label = h = h.destroy())));
q && (D(q.text) || D(q.formatter)) && w && w.length && 0 < c.width && 0 < c.height && !w.isFlat ? (q = t({
align: e && N && "center",
x: e ? !N && 4 : 10,
verticalAlign: !e && N && "middle",
y: e ? N ? 16 : 10 : N ? 6 : -4,
rotation: e && !N && 90
},
q), this.renderLabel(q, w, N, I)) : h && h.hide();
return a
};
c.prototype.renderLabel = function(a, c, e, f) {
var g = this.axis,
l = g.chart.renderer,
m = this.label;
m || (this.label = m = l.text(this.getLabelText(a), 0, 0, a.useHTML).attr({
align: a.textAlign || a.align,
rotation: a.rotation,
"class": "highcharts-plot-" + (e ? "band": "line") + "-label " + (a.className || ""),
zIndex: f
}).add(), g.chart.styledMode || m.css(t({
textOverflow: "ellipsis"
},
a.style)));
f = c.xBounds || [c[0][1], c[1][1], e ? c[2][1] : c[0][1]];
c = c.yBounds || [c[0][2], c[1][2], e ? c[2][2] : c[0][2]];
e = E(f);
l = E(c);
m.align(a, !1, {
x: e,
y: l,
width: v(f) - e,
height: v(c) - l
});
m.alignValue && "left" !== m.alignValue || m.css({
width: (90 === m.rotation ? g.height - (m.alignAttr.y - g.top) : g.width - (m.alignAttr.x - g.left)) + "px"
});
m.show(!0)
};
c.prototype.getLabelText = function(a) {
return D(a.formatter) ? a.formatter.call(this) : a.text
};
c.prototype.destroy = function() {
G(this.axis.plotLinesAndBands, this);
delete this.axis;
B(this)
};
return c
} ();
"";
"";
return g
});
K(g, "Core/Tooltip.js", [g["Core/FormatUtilities.js"], g["Core/Globals.js"], g["Core/Renderer/RendererUtilities.js"], g["Core/Renderer/RendererRegistry.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D) {
var v = a.format,
G = g.doc,
r = x.distribute,
t = D.clamp,
n = D.css,
f = D.discardElement,
c = D.extend,
l = D.fireEvent,
m = D.isArray,
e = D.isNumber,
u = D.isString,
C = D.merge,
J = D.pick,
I = D.splat,
L = D.syncTimeout;
a = function() {
function a(a, c) {
this.allowShared = !0;
this.container = void 0;
this.crosshairs = [];
this.distance = 0;
this.isHidden = !0;
this.isSticky = !1;
this.now = {};
this.options = {};
this.outside = !1;
this.chart = a;
this.init(a, c)
}
a.prototype.applyFilter = function() {
var a = this.chart;
a.renderer.definition({
tagName: "filter",
attributes: {
id: "drop-shadow-" + a.index,
opacity: .5
},
children: [{
tagName: "feGaussianBlur",
attributes: {
"in": "SourceAlpha",
stdDeviation: 1
}
},
{
tagName: "feOffset",
attributes: {
dx: 1,
dy: 1
}
},
{
tagName: "feComponentTransfer",
children: [{
tagName: "feFuncA",
attributes: {
type: "linear",
slope: .3
}
}]
},
{
tagName: "feMerge",
children: [{
tagName: "feMergeNode"
},
{
tagName: "feMergeNode",
attributes: {
"in": "SourceGraphic"
}
}]
}]
})
};
a.prototype.bodyFormatter = function(a) {
return a.map(function(a) {
var d = a.series.tooltipOptions;
return (d[(a.point.formatPrefix || "point") + "Formatter"] || a.point.tooltipFormatter).call(a.point, d[(a.point.formatPrefix || "point") + "Format"] || "")
})
};
a.prototype.cleanSplit = function(a) {
this.chart.series.forEach(function(d) {
var c = d && d.tt;
c && (!c.isActive || a ? d.tt = c.destroy() : c.isActive = !1)
})
};
a.prototype.defaultFormatter = function(a) {
var d = this.points || I(this);
var c = [a.tooltipFooterHeaderFormatter(d[0])];
c = c.concat(a.bodyFormatter(d));
c.push(a.tooltipFooterHeaderFormatter(d[0], !0));
return c
};
a.prototype.destroy = function() {
this.label && (this.label = this.label.destroy());
this.split && this.tt && (this.cleanSplit(!0), this.tt = this.tt.destroy());
this.renderer && (this.renderer = this.renderer.destroy(), f(this.container));
D.clearTimeout(this.hideTimer);
D.clearTimeout(this.tooltipTimeout)
};
a.prototype.getAnchor = function(a, c) {
var d = this.chart,
e = d.pointer,
b = d.inverted,
f = d.plotTop,
g = d.plotLeft,
l, q, m = 0,
n = 0;
a = I(a);
this.followPointer && c ? ("undefined" === typeof c.chartX && (c = e.normalize(c)), e = [c.chartX - g, c.chartY - f]) : a[0].tooltipPos ? e = a[0].tooltipPos: (a.forEach(function(a) {
l = a.series.yAxis;
q = a.series.xAxis;
m += a.plotX || 0;
n += a.plotLow ? (a.plotLow + (a.plotHigh || 0)) / 2 : a.plotY || 0;
q && l && (b ? (m += f + d.plotHeight - q.len - q.pos, n += g + d.plotWidth - l.len - l.pos) : (m += q.pos - g, n += l.pos - f))
}), m /= a.length, n /= a.length, e = [b ? d.plotWidth - n: m, b ? d.plotHeight - m: n], this.shared && 1 < a.length && c && (b ? e[0] = c.chartX - g: e[1] = c.chartY - f));
return e.map(Math.round)
};
a.prototype.getClassName = function(a, c, h) {
var d = a.series,
b = d.options;
return [this.options.className, "highcharts-label", h && "highcharts-tooltip-header", c ? "highcharts-tooltip-box": "highcharts-tooltip", !h && "highcharts-color-" + J(a.colorIndex, d.colorIndex), b && b.className].filter(u).join(" ")
};
a.prototype.getLabel = function() {
var a = this,
c = this.chart.styledMode,
h = this.options,
e = this.split && this.allowShared,
b = h.style.pointerEvents || (this.shouldStickOnContact() ? "auto": "none"),
f,
l = this.chart.renderer;
if (a.label) {
var w = !a.label.hasClass("highcharts-label"); (e && !w || !e && w) && a.destroy()
}
if (!this.label) {
if (this.outside) {
w = this.chart.options.chart.style;
var m = E.getRendererType();
this.container = f = g.doc.createElement("div");
f.className = "highcharts-tooltip-container";
n(f, {
position: "absolute",
top: "1px",
pointerEvents: b,
zIndex: Math.max(this.options.style.zIndex || 0, (w && w.zIndex || 0) + 3)
});
g.doc.body.appendChild(f);
this.renderer = l = new m(f, 0, 0, w, void 0, void 0, l.styledMode)
}
e ? this.label = l.g("tooltip") : (this.label = l.label("", 0, 0, h.shape, void 0, void 0, h.useHTML, void 0, "tooltip").attr({
padding: h.padding,
r: h.borderRadius
}), c || this.label.attr({
fill: h.backgroundColor,
"stroke-width": h.borderWidth
}).css(h.style).css({
pointerEvents: b
}).shadow(h.shadow));
c && h.shadow && (this.applyFilter(), this.label.attr({
filter: "url(#drop-shadow-" + this.chart.index + ")"
}));
if (a.outside && !a.split) {
var u = this.label,
A = u.xSetter,
t = u.ySetter;
u.xSetter = function(b) {
A.call(u, a.distance);
f.style.left = b + "px"
};
u.ySetter = function(b) {
t.call(u, a.distance);
f.style.top = b + "px"
}
}
this.label.attr({
zIndex: 8
}).add()
}
return this.label
};
a.prototype.getPosition = function(a, c, h) {
var d = this.chart,
b = this.distance,
e = {},
f = d.inverted && h.h || 0,
g = this.outside,
l = g ? G.documentElement.clientWidth - 2 * b: d.chartWidth,
q = g ? Math.max(G.body.scrollHeight, G.documentElement.scrollHeight, G.body.offsetHeight, G.documentElement.offsetHeight, G.documentElement.clientHeight) : d.chartHeight,
m = d.pointer.getChartPosition(),
n = function(e) {
var f = "x" === e;
return [e, f ? l: q, f ? a: c].concat(g ? [f ? a * m.scaleX: c * m.scaleY, f ? m.left - b + (h.plotX + d.plotLeft) * m.scaleX: m.top - b + (h.plotY + d.plotTop) * m.scaleY, 0, f ? l: q] : [f ? a: c, f ? h.plotX + d.plotLeft: h.plotY + d.plotTop, f ? d.plotLeft: d.plotTop, f ? d.plotLeft + d.plotWidth: d.plotTop + d.plotHeight])
},
u = n("y"),
A = n("x"),
y;
n = !!h.negative; ! d.polar && d.hoverSeries && d.hoverSeries.yAxis && d.hoverSeries.yAxis.reversed && (n = !n);
var t = !this.followPointer && J(h.ttBelow, !d.inverted === n),
r = function(a, d, c, h, k, p, l) {
var q = g ? "y" === a ? b * m.scaleY: b * m.scaleX: b,
z = (c - h) / 2,
w = h < k - b,
F = k + b + h < d,
n = k - q - c + z;
k = k + q - z;
if (t && F) e[a] = k;
else if (!t && w) e[a] = n;
else if (w) e[a] = Math.min(l - h, 0 > n - f ? n: n - f);
else if (F) e[a] = Math.max(p, k + f + c > d ? k: k + f);
else return ! 1
},
C = function(a, d, c, h, f) {
var k;
f < b || f > d - b ? k = !1 : e[a] = f < c / 2 ? 1 : f > d - h / 2 ? d - h - 2 : f - c / 2;
return k
},
v = function(b) {
var a = u;
u = A;
A = a;
y = b
},
F = function() { ! 1 !== r.apply(0, u) ? !1 !== C.apply(0, A) || y || (v(!0), F()) : y ? e.x = e.y = 0 : (v(!0), F())
}; (d.inverted || 1 < this.len) && v();
F();
return e
};
a.prototype.hide = function(a) {
var d = this;
D.clearTimeout(this.hideTimer);
a = J(a, this.options.hideDelay);
this.isHidden || (this.hideTimer = L(function() {
d.getLabel().fadeOut(a ? void 0 : a);
d.isHidden = !0
},
a))
};
a.prototype.init = function(a, c) {
this.chart = a;
this.options = c;
this.crosshairs = [];
this.now = {
x: 0,
y: 0
};
this.isHidden = !0;
this.split = c.split && !a.inverted && !a.polar;
this.shared = c.shared || this.split;
this.outside = J(c.outside, !(!a.scrollablePixelsX && !a.scrollablePixelsY))
};
a.prototype.shouldStickOnContact = function(a) {
return ! (this.followPointer || !this.options.stickOnContact || a && !this.chart.pointer.inClass(a.target, "highcharts-tooltip"))
};
a.prototype.move = function(a, e, h, f) {
var b = this,
d = b.now,
k = !1 !== b.options.animation && !b.isHidden && (1 < Math.abs(a - d.x) || 1 < Math.abs(e - d.y)),
g = b.followPointer || 1 < b.len;
c(d, {
x: k ? (2 * d.x + a) / 3 : a,
y: k ? (d.y + e) / 2 : e,
anchorX: g ? void 0 : k ? (2 * d.anchorX + h) / 3 : h,
anchorY: g ? void 0 : k ? (d.anchorY + f) / 2 : f
});
b.getLabel().attr(d);
b.drawTracker();
k && (D.clearTimeout(this.tooltipTimeout), this.tooltipTimeout = setTimeout(function() {
b && b.move(a, e, h, f)
},
32))
};
a.prototype.refresh = function(a, c) {
var d = this.chart,
e = this.options,
b = d.pointer,
f = I(a),
g = f[0],
q = [],
n = e.formatter || this.defaultFormatter,
u = this.shared,
A = d.styledMode,
t = {};
if (e.enabled && g.series) {
D.clearTimeout(this.hideTimer);
this.allowShared = !(!m(a) && a.series && a.series.noSharedTooltip);
this.followPointer = !this.split && g.series.tooltipOptions.followPointer;
a = this.getAnchor(a, c);
var r = a[0],
C = a[1];
u && this.allowShared ? (b.applyInactiveState(f), f.forEach(function(b) {
b.setState("hover");
q.push(b.getLabelConfig())
}), t = {
x: g.category,
y: g.y
},
t.points = q) : t = g.getLabelConfig();
this.len = q.length;
n = n.call(t, this);
u = g.series;
this.distance = J(u.tooltipOptions.distance, 16);
if (!1 === n) this.hide();
else {
if (this.split && this.allowShared) this.renderSplit(n, f);
else {
var y = r,
v = C;
c && b.isDirectTouch && (y = c.chartX - d.plotLeft, v = c.chartY - d.plotTop);
if (d.polar || !1 === u.options.clip || f.some(function(a) {
return b.isDirectTouch || a.series.shouldShowTooltip(y, v)
})) c = this.getLabel(),
e.style.width && !A || c.css({
width: d.spacingBox.width + "px"
}),
c.attr({
text: n && n.join ? n.join("") : n
}),
c.addClass(this.getClassName(g), !0),
A || c.attr({
stroke: e.borderColor || g.color || u.color || "#666666"
}),
this.updatePosition({
plotX: r,
plotY: C,
negative: g.negative,
ttBelow: g.ttBelow,
h: a[2] || 0
});
else {
this.hide();
return
}
}
this.isHidden && this.label && this.label.attr({
opacity: 1
}).show();
this.isHidden = !1
}
l(this, "refresh")
}
};
a.prototype.renderSplit = function(a, e) {
function d(b, a, d, c, h) {
void 0 === h && (h = !0);
d ? (a = W ? 0 : ba, b = t(b - c / 2, P.left, P.right - c - (f.outside ? U: 0))) : (a -= Z, b = h ? b - c - D: b + D, b = t(b, h ? b: P.left, P.right));
return {
x: b,
y: a
}
}
var f = this,
b = f.chart,
p = f.chart,
g = p.chartWidth,
l = p.chartHeight,
q = p.plotHeight,
m = p.plotLeft,
n = p.plotTop,
A = p.pointer,
C = p.scrollablePixelsY;
C = void 0 === C ? 0 : C;
var v = p.scrollablePixelsX,
y = p.scrollingContainer;
y = void 0 === y ? {
scrollLeft: 0,
scrollTop: 0
}: y;
var I = y.scrollLeft;
y = y.scrollTop;
var x = p.styledMode,
D = f.distance,
B = f.options,
F = f.options.positioner,
P = f.outside && "number" !== typeof v ? G.documentElement.getBoundingClientRect() : {
left: I,
right: I + g,
top: y,
bottom: y + l
},
M = f.getLabel(),
X = this.renderer || b.renderer,
W = !(!b.xAxis[0] || !b.xAxis[0].opposite);
b = A.getChartPosition();
var U = b.left;
b = b.top;
var Z = n + y,
L = 0,
ba = q - C;
u(a) && (a = [!1, a]);
a = a.slice(0, e.length + 1).reduce(function(b, a, c) {
if (!1 !== a && "" !== a) {
c = e[c - 1] || {
isHeader: !0,
plotX: e[0].plotX,
plotY: q,
series: {}
};
var h = c.isHeader,
k = h ? f: c.series;
a = a.toString();
var p = k.tt,
g = c.isHeader;
var l = c.series;
p || (p = {
padding: B.padding,
r: B.borderRadius
},
x || (p.fill = B.backgroundColor, p["stroke-width"] = B.borderWidth), p = X.label("", 0, 0, B[g ? "headerShape": "shape"], void 0, void 0, B.useHTML).addClass(f.getClassName(c, !0, g)).attr(p).add(M));
p.isActive = !0;
p.attr({
text: a
});
x || p.css(B.style).shadow(B.shadow).attr({
stroke: B.borderColor || c.color || l.color || "#333333"
});
k = k.tt = p;
g = k.getBBox();
a = g.width + k.strokeWidth();
h && (L = g.height, ba += L, W && (Z -= L));
l = c.plotX;
l = void 0 === l ? 0 : l;
p = c.plotY;
p = void 0 === p ? 0 : p;
var w = c.series;
if (c.isHeader) {
l = m + l;
var z = n + q / 2
} else {
var u = w.xAxis,
y = w.yAxis;
l = u.pos + t(l, -D, u.len + D);
w.shouldShowTooltip(0, y.pos - n + p, {
ignoreX: !0
}) && (z = y.pos + p)
}
l = t(l, P.left - D, P.right + D);
"number" === typeof z ? (g = g.height + 1, p = F ? F.call(f, a, g, c) : d(l, z, h, a), b.push({
align: F ? 0 : void 0,
anchorX: l,
anchorY: z,
boxWidth: a,
point: c,
rank: J(p.rank, h ? 1 : 0),
size: g,
target: p.y,
tt: k,
x: p.x
})) : k.isActive = !1
}
return b
},
[]); ! F && a.some(function(b) {
var a = (f.outside ? U: 0) + b.anchorX;
return a < P.left && a + b.boxWidth < P.right ? !0 : a < U - P.left + b.boxWidth && P.right - a > a
}) && (a = a.map(function(b) {
var a = d(b.anchorX, b.anchorY, b.point.isHeader, b.boxWidth, !1);
return c(b, {
target: a.y,
x: a.x
})
}));
f.cleanSplit();
r(a, ba);
var E = U,
da = U;
a.forEach(function(b) {
var a = b.x,
d = b.boxWidth;
b = b.isHeader;
b || (f.outside && U + a < E && (E = U + a), !b && f.outside && E + d > da && (da = U + a))
});
a.forEach(function(b) {
var a = b.x,
d = b.anchorX,
c = b.pos,
h = b.point.isHeader;
c = {
visibility: "undefined" === typeof c ? "hidden": "inherit",
x: a,
y: (c || 0) + Z,
anchorX: d,
anchorY: b.anchorY
};
if (f.outside && a < d) {
var e = U - E;
0 < e && (h || (c.x = a + e, c.anchorX = d + e), h && (c.x = (da - E) / 2, c.anchorX = d + e))
}
b.tt.attr(c)
});
a = f.container;
C = f.renderer;
f.outside && a && C && (p = M.getBBox(), C.setSize(p.width + p.x, p.height + p.y, !1), a.style.left = E + "px", a.style.top = b + "px")
};
a.prototype.drawTracker = function() {
if (this.shouldStickOnContact()) {
var a = this.chart,
c = this.label,
h = this.shared ? a.hoverPoints: a.hoverPoint;
if (c && h) {
var e = {
x: 0,
y: 0,
width: 0,
height: 0
};
h = this.getAnchor(h);
var b = c.getBBox();
h[0] += a.plotLeft - c.translateX;
h[1] += a.plotTop - c.translateY;
e.x = Math.min(0, h[0]);
e.y = Math.min(0, h[1]);
e.width = 0 > h[0] ? Math.max(Math.abs(h[0]), b.width - h[0]) : Math.max(Math.abs(h[0]), b.width);
e.height = 0 > h[1] ? Math.max(Math.abs(h[1]), b.height - Math.abs(h[1])) : Math.max(Math.abs(h[1]), b.height);
this.tracker ? this.tracker.attr(e) : (this.tracker = c.renderer.rect(e).addClass("highcharts-tracker").add(c), a.styledMode || this.tracker.attr({
fill: "rgba(0,0,0,0)"
}))
}
} else this.tracker && this.tracker.destroy()
};
a.prototype.styledModeFormat = function(a) {
return a.replace('style="font-size: 10px"', 'class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g, 'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')
};
a.prototype.tooltipFooterHeaderFormatter = function(a, c) {
var d = a.series,
f = d.tooltipOptions,
b = d.xAxis,
p = b && b.dateTime;
b = {
isFooter: c,
labelConfig: a
};
var g = f.xDateFormat,
q = f[c ? "footerFormat": "headerFormat"];
l(this, "headerFormatter", b,
function(b) {
p && !g && e(a.key) && (g = p.getXDateFormat(a.key, f.dateTimeLabelFormats));
p && g && (a.point && a.point.tooltipDateKeys || ["key"]).forEach(function(b) {
q = q.replace("{point." + b + "}", "{point." + b + ":" + g + "}")
});
d.chart.styledMode && (q = this.styledModeFormat(q));
b.text = v(q, {
point: a,
series: d
},
this.chart)
});
return b.text
};
a.prototype.update = function(a) {
this.destroy();
C(!0, this.chart.options.tooltip.userOptions, a);
this.init(this.chart, C(!0, this.options, a))
};
a.prototype.updatePosition = function(a) {
var d = this.chart,
c = this.options,
e = d.pointer,
b = this.getLabel();
e = e.getChartPosition();
var f = (c.positioner || this.getPosition).call(this, b.width, b.height, a),
g = a.plotX + d.plotLeft;
a = a.plotY + d.plotTop;
if (this.outside) {
c = c.borderWidth + 2 * this.distance;
this.renderer.setSize(b.width + c, b.height + c, !1);
if (1 !== e.scaleX || 1 !== e.scaleY) n(this.container, {
transform: "scale(".concat(e.scaleX, ", ").concat(e.scaleY, ")")
}),
g *= e.scaleX,
a *= e.scaleY;
g += e.left - f.x;
a += e.top - f.y
}
this.move(Math.round(f.x), Math.round(f.y || 0), g, a)
};
return a
} ();
"";
return a
});
K(g, "Core/Series/Point.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Animation/AnimationUtilities.js"], g["Core/Defaults.js"], g["Core/FormatUtilities.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D) {
var v = g.animObject,
G = x.defaultOptions,
r = E.format,
t = D.addEvent,
n = D.defined,
f = D.erase,
c = D.extend,
l = D.fireEvent,
m = D.getNestedProperty,
e = D.isArray,
u = D.isFunction,
C = D.isNumber,
J = D.isObject,
I = D.merge,
L = D.objectEach,
A = D.pick,