/* Highcharts JS v9.1.1 (2021-06-03) Boost module (c) 2010-2021 Highsoft AS Author: Torstein Honsi License: www.highcharts.com/license */ 'use strict';(function(b){"object"===typeof module&&module.exports?(b["default"]=b,module.exports=b):"function"===typeof define&&define.amd?define("highcharts/modules/boost",["highcharts"],function(r){b(r);b.Highcharts=r;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function r(b,B,w,h){b.hasOwnProperty(B)||(b[B]=h.apply(null,w))}b=b?b._modules:{};r(b,"Extensions/Boost/Boostables.js",[],function(){return"area arearange column columnrange bar line scatter heatmap bubble treemap".split(" ")}); r(b,"Extensions/Boost/BoostableMap.js",[b["Extensions/Boost/Boostables.js"]],function(b){var H={};b.forEach(function(b){H[b]=1});return H});r(b,"Extensions/Boost/WGLShader.js",[b["Core/Utilities.js"]],function(b){var H=b.clamp,w=b.error,h=b.pick;return function(c){function b(){I.length&&w("[highcharts boost] shader error - "+I.join("\n"))}function q(a,l){var d=c.createShader("vertex"===l?c.VERTEX_SHADER:c.FRAGMENT_SHADER);c.shaderSource(d,a);c.compileShader(d);return c.getShaderParameter(d,c.COMPILE_STATUS)? d:(I.push("when compiling "+l+" shader:\n"+c.getShaderInfoLog(d)),!1)}function m(){function d(a){return c.getUniformLocation(g,a)}var l=q("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}", "vertex"),m=q("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment");if(!l||!m)return g=!1,b(),!1; g=c.createProgram();c.attachShader(g,l);c.attachShader(g,m);c.linkProgram(g);if(!c.getProgramParameter(g,c.LINK_STATUS))return I.push(c.getProgramInfoLog(g)),b(),g=!1;c.useProgram(g);c.bindAttribLocation(g,0,"aVertexPosition");e=d("uPMatrix");n=d("pSize");k=d("fillColor");y=d("isBubble");O=d("bubbleSizeAbs");F=d("bubbleSizeByArea");p=d("uSampler");J=d("skipTranslation");x=d("isCircle");a=d("isInverted");return!0}function t(a,l){c&&g&&(a=v[a]=v[a]||c.getUniformLocation(g,a),c.uniform1f(a,l))}var v= {},g,e,n,k,y,O,F,J,x,a,I=[],p;return c&&!m()?!1:{psUniform:function(){return n},pUniform:function(){return e},fillColorUniform:function(){return k},setBubbleUniforms:function(a,l,p){var d=a.options,e=Number.MAX_VALUE,b=-Number.MAX_VALUE;c&&g&&"bubble"===a.type&&(e=h(d.zMin,H(l,!1===d.displayNegative?d.zThreshold:-Number.MAX_VALUE,e)),b=h(d.zMax,Math.max(b,p)),c.uniform1i(y,1),c.uniform1i(x,1),c.uniform1i(F,"width"!==a.options.sizeBy),c.uniform1i(O,a.options.sizeByAbsoluteValue),t("bubbleZMin",e), t("bubbleZMax",b),t("bubbleZThreshold",a.options.zThreshold),t("bubbleMinSize",a.minPxSize),t("bubbleMaxSize",a.maxPxSize))},bind:function(){c&&g&&c.useProgram(g)},program:function(){return g},create:m,setUniform:t,setPMatrix:function(a){c&&g&&c.uniformMatrix4fv(e,!1,a)},setColor:function(a){c&&g&&c.uniform4f(k,a[0]/255,a[1]/255,a[2]/255,a[3])},setPointSize:function(a){c&&g&&c.uniform1f(n,a)},setSkipTranslation:function(a){c&&g&&c.uniform1i(J,!0===a?1:0)},setTexture:function(a){c&&g&&c.uniform1i(p, a)},setDrawAsCircle:function(a){c&&g&&c.uniform1i(x,a?1:0)},reset:function(){c&&g&&(c.uniform1i(y,0),c.uniform1i(x,0))},setInverted:function(d){c&&g&&c.uniform1i(a,d)},destroy:function(){c&&g&&(c.deleteProgram(g),g=!1)}}}});r(b,"Extensions/Boost/WGLVBuffer.js",[],function(){return function(b,B,w){function h(){c&&(b.deleteBuffer(c),u=c=!1);t=0;q=w||2;v=[]}var c=!1,u=!1,q=w||2,m=!1,t=0,v;return{destroy:h,bind:function(){if(!c)return!1;b.vertexAttribPointer(u,q,b.FLOAT,!1,0,0)},data:v,build:function(g, e,n){var k;v=g||[];if(!(v&&0!==v.length||m))return h(),!1;q=n||q;c&&b.deleteBuffer(c);m||(k=new Float32Array(v));c=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,c);b.bufferData(b.ARRAY_BUFFER,m||k,b.STATIC_DRAW);u=b.getAttribLocation(B.program(),e);b.enableVertexAttribArray(u);return!0},render:function(g,e,n){var k=m?m.length:v.length;if(!c||!k)return!1;if(!g||g>k||0>g)g=0;if(!e||e>k)e=k;b.drawArrays(b[(n||"points").toUpperCase()],g/q,(e-g)/q);return!0},allocate:function(b){t=-1;m=new Float32Array(4* b)},push:function(b,e,c,k){m&&(m[++t]=b,m[++t]=e,m[++t]=c,m[++t]=k)}}}});r(b,"Extensions/Boost/WGLRenderer.js",[b["Core/Color/Color.js"],b["Extensions/Boost/WGLShader.js"],b["Extensions/Boost/WGLVBuffer.js"],b["Core/Globals.js"],b["Core/Utilities.js"]],function(b,B,w,h,c){var u=b.parse,q=h.doc,m=c.isNumber,t=c.isObject,v=c.merge,g=c.objectEach,e=c.pick;return function(c){function n(a){if(a.isSeriesBoosting){var d=!!a.options.stacking;var b=a.xData||a.options.xData||a.processedXData;d=(d?a.data:b|| a.options.data).length;"treemap"===a.type?d*=12:"heatmap"===a.type?d*=6:ia[a.type]&&(d*=2);return d}return 0}function y(){f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT)}function O(a,d){function b(a){a&&(d.colorData.push(a[0]),d.colorData.push(a[1]),d.colorData.push(a[2]),d.colorData.push(a[3]))}function f(a,d,f,e,p){b(p);A.usePreallocated?(l.push(a,d,f?1:0,e||1),qa+=4):(S.push(a),S.push(d),S.push(f?1:0),S.push(e||1))}function p(){d.segments.length&&(d.segments[d.segments.length-1].to=S.length||qa)} function e(){d.segments.length&&d.segments[d.segments.length-1].from===(S.length||qa)||(p(),d.segments.push({from:S.length||qa}))}function c(a,d,e,p,l){b(l);f(a+e,d);b(l);f(a,d);b(l);f(a,d+p);b(l);f(a,d+p);b(l);f(a+e,d+p);b(l);f(a+e,d)}function x(a,b){A.useGPUTranslations||(d.skipTranslation=!0,a.x=H.toPixels(a.x,!0),a.y=O.toPixels(a.y,!0));b?S=[a.x,a.y,0,2].concat(S):f(a.x,a.y,0,2)}var I=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),n=a.chart,z=a.options,g=!!z.stacking,aa=z.data,k=a.xAxis.getExtremes(), m=k.min,h=k.max;k=a.yAxis.getExtremes();var y=k.min,R=k.max,q=a.xData||z.xData||a.processedXData,v=a.yData||z.yData||a.processedYData,F=a.zData||z.zData||a.processedZData,O=a.yAxis,H=a.xAxis,w=a.chart.plotWidth,B=!q||0===q.length,J=z.connectNulls;k=a.points||!1;var Q=!1,r=!1,E,G,L=g?a.data:q||aa,M={x:Number.MAX_VALUE,y:0},ma={x:-Number.MAX_VALUE,y:0},Ja=0,Ka=!1,D,C,P,X,N=-1,Z=!1,ha=!1,na,Y="undefined"===typeof n.index,Ea=!1,Ba=!1,K=!1,Sa=ia[a.type],Ca=!1,La=!0,Ma=!0,Ta=z.zoneAxis||"y",oa=z.zones|| !1,U=!1,Na=z.threshold,Da=!1;if(!(z.boostData&&0d.node.levelDynamic)return 1;if(a.node.levelDynamicd.zMax&&(d.zMax=P[2]),P[2]d.zMax&&(d.zMax=F[N]),F[N]=m&&ha<=h&&(Ea=!0);Z&&Z>=m&&Z<=h&&(Ba=!0);I?(B&&(C=P.slice(1,3)),na=C[0],C=C[1]):g&&(D=P.x,C=P.stackY,na=C-P.y);null!==y&&"undefined"!==typeof y&&null!==R&&"undefined"!==typeof R&&(La=C>=y&&C<=R);D>h&&ma.xm&&(M.x= D,M.y=C);if(null===C&&J)return"continue";if(null===C||!La&&!Ea&&!Ba)return e(),"continue";(ha>=m||D>=m)&&(Z<=h||D<=h)&&(Ca=!0);if(!Ca&&!Ea&&!Ba)return"continue";Da&&D-Z>Da&&e();if(oa){var l;oa.some(function(a,d){var b=oa[d-1];return"x"===Ta?"undefined"!==typeof a.value&&D<=a.value?(pa[d]&&(!b||D>=b.value)&&(l=pa[d]),!0):!1:"undefined"!==typeof a.value&&C<=a.value?(pa[d]&&(!b||C>=b.value)&&(l=pa[d]),!0):!1});K=l||U||K}if(!A.useGPUTranslations&&(d.skipTranslation=!0,D=H.toPixels(D,!0),C=O.toPixels(C, !0),D>w&&"points"===d.drawMode))return"continue";d.hasMarkers&&Ca&&!1!==Q&&(a.closestPointRangePx=Math.min(a.closestPointRangePx,Math.abs(D-Q)));if(!A.useGPUTranslations&&!A.usePreallocated&&Q&&1>Math.abs(D-Q)&&r&&1>Math.abs(C-r))return A.debug.showSkipSummary&&++Ja,"continue";if(Sa){E=na;if(!1===na||"undefined"===typeof na)E=0>C?C:0;I||g||(E=Math.max(null===Na?y:Na,y));A.useGPUTranslations||(E=O.toPixels(E,!0));f(D,E,0,0,K)}z.step&&!Ma&&f(D,r,0,2,K);f(D,C,0,"bubble"===a.type?X||1:2,K);Q=D;r=C;Ka= !0;Ma=!1};N-Number.MAX_VALUE&&x(ma))}p()}}function F(){G=[];r.data=S=[];E=[];l&&l.destroy()}function H(a){d&&(d.setUniform("xAxisTrans",a.transA),d.setUniform("xAxisMin",a.min),d.setUniform("xAxisMinPad",a.minPixelPadding),d.setUniform("xAxisPointRange",a.pointRange),d.setUniform("xAxisLen",a.len),d.setUniform("xAxisPos",a.pos),d.setUniform("xAxisCVSCoord", !a.horiz),d.setUniform("xAxisIsLog",!!a.logarithmic),d.setUniform("xAxisReversed",!!a.reversed))}function x(a){d&&(d.setUniform("yAxisTrans",a.transA),d.setUniform("yAxisMin",a.min),d.setUniform("yAxisMinPad",a.minPixelPadding),d.setUniform("yAxisPointRange",a.pointRange),d.setUniform("yAxisLen",a.len),d.setUniform("yAxisPos",a.pos),d.setUniform("yAxisCVSCoord",!a.horiz),d.setUniform("yAxisIsLog",!!a.logarithmic),d.setUniform("yAxisReversed",!!a.reversed))}function a(a,b){d.setUniform("hasThreshold", a);d.setUniform("translatedThreshold",b)}function I(p){if(p)R=p.chartWidth||800,Q=p.chartHeight||400;else return!1;if(!(f&&R&&Q&&d))return!1;A.debug.timeRendering&&console.time("gl rendering");f.canvas.width=R;f.canvas.height=Q;d.bind();f.viewport(0,0,R,Q);d.setPMatrix([2/R,0,0,0,0,-(2/Q),0,0,0,0,-2,0,-1,1,-1,1]);12*((n.marker?n.marker.radius:10)||10));k=Y[k&&k.symbol||c.series.symbol]||Y.circle;if(0!==c.segments.length&&c.segments[0].from!==c.segments[0].to){k.isReady&&(f.bindTexture(f.TEXTURE_2D,k.handle),d.setTexture(k.handle));p.styledMode?k=c.series.markerGroup&&c.series.markerGroup.getStyle("fill"):(k="points"===c.drawMode&& c.series.pointAttribs&&c.series.pointAttribs().fill||c.series.color,n.colorByPoint&&(k=c.series.chart.options.colors[I]));c.series.fillOpacity&&n.fillOpacity&&(k=(new b(k)).setOpacity(e(n.fillOpacity,1)).get());k=u(k).rgba;A.useAlpha||(k[3]=1);"lines"===c.drawMode&&A.useAlpha&&1>k[3]&&(k[3]/=10);"add"===n.boostBlending?(f.blendFunc(f.SRC_ALPHA,f.ONE),f.blendEquation(f.FUNC_ADD)):"mult"===n.boostBlending||"multiply"===n.boostBlending?f.blendFunc(f.DST_COLOR,f.ZERO):"darken"===n.boostBlending?(f.blendFunc(f.ONE, f.ONE),f.blendEquation(f.FUNC_MIN)):f.blendFuncSeparate(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA,f.ONE,f.ONE_MINUS_SRC_ALPHA);d.reset();0=G.length?G.push(d):G[a.index]=d;O(a,d);A.debug.timeSeriesProcessing&&console.timeEnd("building "+a.type+" series")},setSize:function(a,b){R===a&&Q===b||!d||(R=a,Q=b,d.bind(),d.setPMatrix([2/R,0,0,0,0,-(2/Q),0,0,0,0,-2,0,-1,1,-1,1]))},inited:function(){return L},setThreshold:a,init:function(a,b){function c(a,d){var b={isReady:!1,texture:q.createElement("canvas"),handle:f.createTexture()},c=b.texture.getContext("2d");Y[a]=b;b.texture.width= 512;b.texture.height=512;c.mozImageSmoothingEnabled=!1;c.webkitImageSmoothingEnabled=!1;c.msImageSmoothingEnabled=!1;c.imageSmoothingEnabled=!1;c.strokeStyle="rgba(255, 255, 255, 0)";c.fillStyle="#FFF";d(c);try{f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,b.handle),f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,b.texture),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER, f.LINEAR),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,f.LINEAR),f.bindTexture(f.TEXTURE_2D,null),b.isReady=!0}catch(V){}}var p=0,e=["webgl","experimental-webgl","moz-webgl","webkit-3d"];L=!1;if(!a)return!1;for(A.debug.timeSetup&&console.time("gl setup");p=(q.options.boostThreshold||Number.MAX_VALUE)&&++g)}b.boostForceChartBoost=n&&(h===b.series.length&&0=B&&p<=y);if(null!==p&&l>=u&&l<=w&&e)if(a=f.toPixels(l,!0),A){if("undefined"=== typeof V||a===J){ba||(d=p);if("undefined"===typeof da||p>ca)ca=p,da=b;if("undefined"===typeof V||dplease use a modern browser")});n(c.prototype,{getContext:function(){var a=this.chart,b=a.chartWidth, c=a.chartHeight,d=a.seriesGroup||this.group,e=this,g=function(a,b,d,c,e,f,p){a.call(this,d,b,c,e,f,p)};a.isChartSeriesBoosting()&&(e=a,d=a.seriesGroup);var f=e.ctx;e.canvas||(e.canvas=t.createElement("canvas"),e.renderTarget=a.renderer.image("",0,0,b,c).addClass("highcharts-boost-canvas").add(d),e.ctx=f=e.canvas.getContext("2d"),a.inverted&&["moveTo","lineTo","rect","arc"].forEach(function(a){H(f,a,g)}),e.boostCopy=function(){e.renderTarget.attr({href:e.canvas.toDataURL("image/png")})},e.boostClear= function(){f.clearRect(0,0,e.canvas.width,e.canvas.height);e===this&&e.renderTarget.attr({href:""})},e.boostClipRect=a.renderer.clipRect(),e.renderTarget.clip(e.boostClipRect));e.canvas.width!==b&&(e.canvas.width=b);e.canvas.height!==c&&(e.canvas.height=c);e.renderTarget.attr({x:0,y:0,width:b,height:c,style:"pointer-events: none",href:""});e.boostClipRect.attr(a.getBoostClipRect(e));return f},canvasToSVG:function(){this.chart.isChartSeriesBoosting()?this.boostClear&&this.boostClear():(this.boostCopy|| this.chart.boostCopy)&&(this.boostCopy||this.chart.boostCopy)()},cvsLineTo:function(a,b,c){a.lineTo(b,c)},renderCanvas:function(){var a=this,b=a.options,c=a.chart,d=this.xAxis,g=this.yAxis,t=(c.options.boost||{}).timeRendering||!1,f=0,u=a.processedXData,H=a.processedYData,O=b.data,E=d.getExtremes(),J=E.min,L=E.max;E=g.getExtremes();var G=E.min,Y=E.max,ia={},X,A=!!a.sampling,z=b.marker&&b.marker.radius,aa=this.cvsDrawPoint,ba=b.lineWidth?this.cvsLineTo:void 0,ja=z&&1>=z?this.cvsMarkerSquare:this.cvsMarkerCircle, ra=this.cvsStrokeBatch||1E3,wa=!1!==b.enableMouseTracking,ka;E=b.threshold;var T=g.getThreshold(E),ca=y(E),V=T,da=this.fill,ta=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),la=!!b.stacking,ea=a.cropStart||0;E=c.options.loading;var ua=a.requireSorting,va,Oa=b.connectNulls,Fa=!u,ya,za,fa,sa,xa,W=la?a.data:u||O,Pa=a.fillOpacity?(new B(a.color)).setOpacity(F(b.fillOpacity,.75)).get():a.color,Ga=function(){da?(M.fillStyle=Pa,M.fill()):(M.strokeStyle=a.color,M.lineWidth=b.lineWidth,M.stroke())}, Ha=function(b,d,e,g){0===f&&(M.beginPath(),ba&&(M.lineJoin="round"));c.scroller&&"highcharts-navigator-series"===a.options.className?(d+=c.scroller.top,e&&(e+=c.scroller.top)):d+=c.plotTop;b+=c.plotLeft;va?M.moveTo(b,d):aa?aa(M,b,d,e,ka):ba?ba(M,b,d):ja&&ja.call(a,M,b,d,z,g);f+=1;f===ra&&(Ga(),f=0);ka={clientX:b,plotY:d,yBottom:e}},Qa="x"===b.findNearestPointBy,Ia=this.xData||this.options.xData||this.processedXData||!1,Aa=function(a,b,e){xa=Qa?a:a+","+b;wa&&!ia[xa]&&(ia[xa]=!0,c.inverted&&(a=d.len- a,b=g.len-b),Ra.push({x:Ia?Ia[ea+e]:!1,clientX:a,plotX:a,plotY:b,i:ea+e}))};this.renderTarget&&this.renderTarget.attr({href:""});(this.points||this.graph)&&this.destroyGraphics();a.plotGroup("group","series",a.visible?"visible":"hidden",b.zIndex,c.seriesGroup);a.markerGroup=a.group;e(a,"destroy",function(){a.markerGroup=null});var Ra=this.points=[];var M=this.getContext();a.buildKDTree=v;this.boostClear&&this.boostClear();this.visible&&(99999=J&&l<=L&&(f=!0);x&&x>=J&&x<=L&&(p=!0);if(ta){Fa&&(k=b.slice(1,3));var I=k[0];k=k[1]}else la&& (m=b.x,k=b.stackY,I=k-b.y);b=null===k;ua||(n=k>=G&&k<=Y);if(!b&&(m>=J&&m<=L&&n||f||p))if(m=Math.round(d.toPixels(m,!0)),A){if("undefined"===typeof fa||m===X){ta||(I=k);if("undefined"===typeof sa||k>za)za=k,sa=e;if("undefined"===typeof fa||I=b.length?(a.y=Math.min(b[0].pos,a.y),a.height=b[0].pos-this.plotTop+b[0].len):a.height=this.plotHeight);return a};h.prototype.getPoint=function(b){var a=b,c=this.xData||this.options.xData||this.processedXData||!1;!b||b instanceof this.pointClass||(a=(new this.pointClass).init(this,this.options.data[b.i],c?c[b.i]:void 0), a.category=k(this.xAxis.categories?this.xAxis.categories[a.x]:a.x,a.x),a.dist=b.dist,a.distX=b.distX,a.plotX=b.plotX,a.plotY=b.plotY,a.index=b.i,a.isInside=this.isPointInside(b));return a};y(h.prototype,"searchPoint",function(b){return this.getPoint(b.apply(this,[].slice.call(arguments,1)))});y(w.prototype,"haloPath",function(b){var a=this.series,c=this.plotX,e=this.plotY,d=a.chart.inverted;a.isSeriesBoosting&&d&&(this.plotX=a.yAxis.len-e,this.plotY=a.xAxis.len-c);var g=b.apply(this,Array.prototype.slice.call(arguments, 1));a.isSeriesBoosting&&d&&(this.plotX=c,this.plotY=e);return g});y(h.prototype,"markerAttribs",function(b,a){var c=a.plotX,e=a.plotY,d=this.chart.inverted;this.isSeriesBoosting&&d&&(a.plotX=this.yAxis.len-e,a.plotY=this.xAxis.len-c);var g=b.apply(this,Array.prototype.slice.call(arguments,1));this.isSeriesBoosting&&d&&(a.plotX=c,a.plotY=e);return g});c(h,"destroy",function(){var b=this,a=b.chart;a.markerGroup===b.markerGroup&&(b.markerGroup=null);a.hoverPoints&&(a.hoverPoints=a.hoverPoints.filter(function(a){return a.series=== b}));a.hoverPoint&&a.hoverPoint.series===b&&(a.hoverPoint=null)});y(h.prototype,"getExtremes",function(b){return this.isSeriesBoosting&&this.hasExtremes&&this.hasExtremes()?{}:b.apply(this,Array.prototype.slice.call(arguments,1))});["translate","generatePoints","drawTracker","drawPoints","render"].forEach(function(b){function a(a){var c=this.options.stacking&&("translate"===b||"generatePoints"===b);if(!this.isSeriesBoosting||c||!B(this.chart)||"heatmap"===this.type||"treemap"===this.type||!t[this.type]|| 0===this.options.boostThreshold)a.call(this);else if(this[b+"Canvas"])this[b+"Canvas"]()}y(h.prototype,b,a);"translate"===b&&"column bar arearange columnrange heatmap treemap".split(" ").forEach(function(c){v[c]&&y(v[c].prototype,b,a)})});y(h.prototype,"processData",function(b){function a(a){return c.chart.isChartSeriesBoosting()||(a?a.length:0)>=(c.options.boostThreshold||Number.MAX_VALUE)}var c=this,h=this.options.data;B(this.chart)&&t[this.type]?(a(h)&&"heatmap"!==this.type&&"treemap"!==this.type&& !this.options.stacking&&this.hasExtremes&&this.hasExtremes(!0)||(b.apply(this,Array.prototype.slice.call(arguments,1)),h=this.processedXData),(this.isSeriesBoosting=a(h))?(this.options.data&&this.options.data.length&&(h=this.getFirstValidPoint(this.options.data),n(h)||e(h)||g(12,!1,this.chart)),this.enterBoost()):this.exitBoost&&this.exitBoost()):b.apply(this,Array.prototype.slice.call(arguments,1))});c(h,"hide",function(){this.canvas&&this.renderTarget&&(this.ogl&&this.ogl.clear(),this.boostClear())}); h.prototype.enterBoost=function(){this.alteredByBoost=[];["allowDG","directTouch","stickyTracking"].forEach(function(b){this.alteredByBoost.push({prop:b,val:this[b],own:Object.hasOwnProperty.call(this,b)})},this);this.directTouch=this.allowDG=!1;this.finishedAnimating=this.stickyTracking=!0;this.labelBySeries&&(this.labelBySeries=this.labelBySeries.destroy())};h.prototype.exitBoost=function(){(this.alteredByBoost||[]).forEach(function(b){b.own?this[b.prop]=b.val:delete this[b.prop]},this);this.boostClear&& this.boostClear()};h.prototype.hasExtremes=function(b){var a=this.options,c=this.xAxis&&this.xAxis.options,e=this.yAxis&&this.yAxis.options,d=this.colorAxis&&this.colorAxis.options;return a.data.length>(a.boostThreshold||Number.MAX_VALUE)&&n(e.min)&&n(e.max)&&(!b||n(c.min)&&n(c.max))&&(!d||n(d.min)&&n(d.max))};h.prototype.destroyGraphics=function(){var b=this,a=this,c=this.points,e,d;if(c)for(d=0;d