{"version":3,"file":"scripts.d65d68335f790f9d.js","mappings":"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","names":["requestAnimFrame","resolve","effects","color","isObject","defaults","isArray","valueOrDefault","unlistenArrayEvents","listenArrayEvents","resolveObjectKey","isNumberFinite","defined","sign","createContext","isNullOrUndef","_arrayUnique","toRadians","toPercentage","toDimension","TAU","formatNumber","_angleBetween","HALF_PI","PI","_getStartAndCountOfVisiblePoints","_scaleRangesChanged","isNumber","_parseObjectDataRadialScale","getRelativePosition","_rlookupByKey","_lookupByKey","_isPointInArea","getAngleFromPoint","toPadding","each","getMaximumSize","_getParentNode","readUsedSize","supportsEventListenerOptions","throttled","_isDomSupported","_factorize","finiteOrDefault","callback","_addGrace","_limitValue","toDegrees","_measureText","_int16Range","_alignPixel","clipArea","renderText","unclipArea","toFont","_toLeftRightCenter","_alignStartEnd","overrides","merge","_capitalize","descriptors","isFunction","_attachContext","_createResolver","_descriptors","mergeIf","uid","debounce","retinaScale","clearCanvas","setsEqual","_elementsEqual","_isClickEvent","_isBetween","_readValueToProps","_updateBezierControlPoints","_computeSegments","_boundSegments","_steppedInterpolation","_bezierInterpolation","_pointInLine","_steppedLineTo","_bezierCurveTo","drawPoint","addRoundedRectPath","toTRBL","toTRBLCorners","_boundSegment","_normalizeAngle","getRtlAdapter","overrideTextDirection","_textX","restoreTextDirection","drawPointLegend","distanceBetweenPoints","noop","_setMinAndMaxByKey","niceNum","almostWhole","almostEquals","_decimalPlaces","Ticks","log10","_longestText","_filterBetween","_lookup","Animator","constructor","this","_request","_charts","Map","_running","_lastDate","_notify","chart","anims","date","type","numSteps","duration","listeners","forEach","fn","initial","currentStep","Math","min","start","_refresh","call","window","_update","Date","now","remaining","running","items","length","item","i","draw","_active","_total","tick","pop","_getAnims","charts","get","complete","progress","set","listen","event","cb","push","add","has","reduce","acc","cur","max","_duration","stop","cancel","remove","delete","animator","transparent","interpolators","boolean","from","to","factor","c0","c1","valid","mix","hexString","number","Animation","cfg","target","prop","currentValue","_fn","_easing","easing","linear","_start","floor","delay","_loop","loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","method","Animations","config","_chart","_properties","configure","animationOptions","Object","keys","animation","animatedProps","getOwnPropertyNames","key","option","properties","_animateOptions","values","newOptions","options","resolveTargetOptions","animations","_createAnimations","$shared","awaitAll","$animations","then","props","charAt","value","size","assign","anim","all","scaleClip","scale","allowedOverflow","opts","reverse","end","defaultClip","xScale","yScale","x","y","top","right","bottom","left","toClip","t","r","b","l","disabled","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","ilen","index","applyStack","stack","dsIndex","singleMode","mode","datasetIndex","otherValue","found","convertObjectDataToArray","data","meta","iScale","vScale","iAxisKey","axis","vAxisKey","adata","Array","o","isStacked","stacked","getStackKey","indexScale","valueScale","id","getUserBounds","minDefined","maxDefined","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iAxis","vAxis","c","_top","_bottom","_visualValues","getFirstScaleId","scales","filter","shift","createDatasetContext","parent","dataset","createDataContext","element","dataIndex","raw","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","static","_ctx","ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","addElements","fill","isPluginEnabled","console","warn","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","indexAxis","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","datasets","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","scopes","getOptionScopes","createResolver","getContext","parsing","parse","count","sorted","_sorted","prev","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","range","parsedValue","NaN","getMinMax","otherScale","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","clip","elements","area","chartArea","drawActiveElementsOnTop","getStyle","resolveDatasetElementOptions","resolveDataElementOptions","context","_resolveElementOptions","elementType","cache","cacheKey","sharing","datasetElementScopeKeys","prefixes","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","_cacheable","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","arr","updateElements","removed","splice","_sync","args","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","getAllScaleValues","_cache","$bar","visibleMetas","concat","sort","a","computeMinSampleSize","curr","_length","updateMinAndPrev","abs","getPixelForValue","ticks","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","ratio","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","next","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","base","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","startEnd","swap","orig","v1","v2","v","setInflateAmount","inflateAmount","BarController","grouped","numbers","_index_","offset","grid","_value_","beginAtZero","obj","super","bars","getBasePixel","_getRuler","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","height","width","_getStacks","last","currentParsed","iScaleValue","skipNull","find","val","isNaN","indexOf","_getStackCount","_getStackIndex","name","_startPixel","_endPixel","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","stackIndex","rects","BubbleController","radius","points","point","iPixel","vPixel","skip","getRatioAndOffset","rotation","circumference","cutout","ratioX","ratioY","offsetX","offsetY","startAngle","endAngle","startX","cos","startY","sin","endX","endY","calcMax","angle","calcMin","maxX","maxY","minX","minY","DoughnutController","animateRotate","animateScale","spacing","_scriptable","_indexable","startsWith","aspectRatio","plugins","legend","generateLabels","pointStyle","map","style","text","fillStyle","backgroundColor","strokeStyle","borderColor","fontColor","lineWidth","borderWidth","onClick","e","legendItem","toggleDataVisibility","innerRadius","outerRadius","getter","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","centerX","centerY","arc","metaData","locale","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","weight","LineController","showLine","spanGaps","line","_dataset","animationsDisabled","_datasetIndex","_decimated","segment","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","border","firstPoint","lastPoint","updateControlPoints","PolarAreaController","angleLines","display","circular","pointLabels","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","animationOpts","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","interaction","registry","getElement","controllers","__proto__","abstract","Error","DateAdapterBase","override","members","prototype","init","formats","format","diff","startOf","endOf","adapters","_date","binarySearch","metaset","intersect","lookupMethod","_reversePixels","el","getRange","lo","hi","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","j","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","sqrt","pow","getIntersectItems","useFinalPosition","includeInvisible","isPointInArea","inRange","getNearestRadialItems","evaluationFunc","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","distance","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","array","pos","filterDynamicPositionByAxis","box","sortByWeight","v0","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","includes","_stack","placed","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","w","heightChanged","h","same","other","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","margin","fitBoxes","refitBoxes","refit","changed","setBoxDims","placeBoxes","userPadding","padding","addBox","_layers","z","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","acquireContext","canvas","releaseContext","addEventListener","listener","removeEventListener","getDevicePixelRatio","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","boxSizing","displayWidth","displayHeight","eventListenerOptions","passive","addListener","node","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","document","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","devicePixelRatio","resize","currentDevicePixelRatio","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","container","clientWidth","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","proxy","DomPlatform","removeAttribute","setAttribute","$proxies","attach","detach","proxies","isConnected","_detectPlatform","OffscreenCanvas","Element","tooltipPosition","hasValue","final","ret","autoSkip","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","round","tickLength","_tickSize","_maxLength","evenMajorSpacing","getEvenSpacing","factors","result","ceil","majorStart","majorEnd","len","reverseAlign","align","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","epsilon","lineValue","garbageCollect","caches","gc","gcLen","getTickMarkLength","drawTicks","getTitleHeight","fallback","font","lineHeight","createScaleContext","createTickContext","titleAlign","titleArgs","maxWidth","titleX","titleY","positionAxisID","Scale","_margins","maxHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","setContext","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","margins","grace","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","source","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","minRotation","maxRotation","tickWidth","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","title","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","mirror","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","widths","heights","jlen","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","string","valueAt","idx","pixel","decimal","getDecimalForPixel","getBaseValue","optionTicks","rot","autoSkipPadding","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","borderDash","dash","borderDashOffset","dashOffset","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","_getXAxisLabelAlignment","_getYAxisLabelAlignment","labelOffset","halfCount","strokeColor","textStrokeColor","strokeWidth","textStrokeWidth","backdrop","tickTextAlign","showLabelBackdrop","labelPadding","backdropPadding","backdropColor","translation","_computeLabelArea","drawBackground","save","fillRect","restore","findIndex","drawGrid","drawLine","p1","p2","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","drawOnChartArea","drawBorder","lastLineWidth","drawLabels","drawTitle","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","scope","create","isForType","isPrototypeOf","register","proto","getPrototypeOf","parentScope","isIChartComponent","registerDefaults","unregister","itemDefaults","defaultRoutes","routeDefaults","describe","routes","property","propertyParts","split","sourceName","sourceScope","join","parts","targetName","targetScope","route","Registry","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","some","localIds","local","getOpts","pluginOpts","pluginScopeKeys","scriptable","indexable","allKeys","getIndexAxis","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","toLowerCase","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","d","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","_proxy","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","platform","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","resolver","subPrefixes","getResolver","needContext","subResolver","descriptorDefaults","resolverCache","p","hasFunction","isScriptable","isIndexable","version","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","getSizeForArea","field","getDatasetArea","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","maintainAspectRatio","responsive","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","slice","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","visible","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","autoPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","events","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","hide","show","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","prefix","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","hover","deactivated","activated","eventFilter","_handleEvent","_getActiveElements","onHover","clipArc","pixelMargin","angleMargin","closePath","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","borderJoinStyle","inner","lineJoin","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","translate","radiusOffset","setStyle","lineCap","borderCapStyle","previous","getLineMethod","stepped","tension","cubicInterpolationMode","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segments","segmentMethod","usePath2D","LineElement","capBezierPoints","_points","_segments","_pointsUpdated","interpolate","_interpolate","interpolated","inRange$1","hitRadius","PointElement","hoverRadius","mouseX","mouseY","inXRange","inYRange","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","topLeft","topRight","bottomLeft","bottomRight","boundingRects","bounds","outer","skipX","skipY","hasRadius","addNormalRectPath","rect","inflateRect","amount","refRect","BarElement","addRectPath","BORDER_COLORS","BACKGROUND_COLORS","replace","getBorderColor","getBackgroundColor","colorizeDefaultDataset","colorizeDoughnutDataset","colorizePolarAreaDataset","getColorizer","containsColorsDefinitions","k","containsColorsDefinition","containsDefaultColorsDefenitions","plugin_colors","forceOverride","_args","chartOptions","containsColorDefenition","colorizer","lttbDecimation","samples","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","cleanDecimatedDataset","defineProperty","configurable","enumerable","writable","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","pointCount","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","threshold","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","sources","propagate","visited","_decodeFill","parseFillOption","parseFloat","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","unshift","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","_getTarget","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","clipVertical","clipY","lineLoop","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","itemWidth","measureText","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","adjustHitBoxes","rtl","rtlHelper","hitbox","leftForLtr","_draw","defaultColor","halfFontSize","cursor","textDirection","textWidth","setWidth","lineDash","drawOptions","SQRT2","xPlus","yBoxTop","xBoxLeft","drawLegendBox","strikethrough","fillText","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","isListened","hoveredItem","sameItem","onLeave","calculateItemWidth","calculateItemHeight","legendItemText","fontLineHeight","plugin_legend","_element","afterEvent","ci","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","createTitle","titleBlock","plugin_title","WeakMap","plugin_subtitle","positioners","average","xSet","eventPosition","nearestElement","tp","pushOrConcat","toPush","apply","splitNewlines","str","String","createTooltipItem","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","lines","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","cornerRadius","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","callbacks","defaultCallbacks","beforeTitle","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","titleColor","_drawColorBox","colorX","rtlColorX","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_fallback","Colors","Decimation","Filler","SubTitle","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","isFinite","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","tickValue","rad","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","LinearScale","formatters","numeric","log10Floor","changeExponent","m","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","significand","lastTick","LogarithmicScale","logarithmic","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","hLimits","vLimits","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","animate","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","rotate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","input","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","displayFormats","_unit","_majorUnit","_offsets","_normalized","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","minor","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","formatter","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","normalize","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","exports","module","define","amd","globalThis","self","marked","async","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","n","s","RegExp","test","u","getRegex","g","encodeURI","f","exec","trim","href","state","inLink","tokens","inlineTokens","rules","lexer","space","block","newline","code","codeBlockStyle","fences","match","lang","inline","anyPunctuation","heading","depth","hr","blockquote","blockTokens","list","ordered","loose","substring","repeat","trimStart","search","task","checked","trimEnd","html","pre","def","tag","header","rows","lheading","paragraph","escape","inRawBlock","link","reflink","nolink","emStrong","emStrongLDelim","punctuation","emStrongRDelimAst","emStrongRDelimUnd","codespan","br","del","autolink","url","_backpedal","inlineText","$","T","R","_","A","S","I","E","q","Z","L","P","Q","B","C","M","O","D","H","U","X","F","N","G","J","K","blockSkip","reflinkSearch","V","W","Y","ee","normal","te","ne","inlineQueue","links","lex","lexInline","startBlock","charCodeAt","startInline","se","listitem","checkbox","tablerow","tablecell","strong","em","image","re","ie","textRenderer","parseInline","renderers","fromCharCode","parseInt","escaped","le","preprocess","postprocess","processAllTokens","oe","setOptions","#e","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","use","childTokens","flat","level","passThroughHooks","#t","toString","catch","message","reject","ae","ce","getDefaults","he","pe","ue","ke","ge","fe","de","xe","Marked"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["node_modules\\chart.js\\dist\\chart.js","node_modules\\marked\\marked.min.js"],"sourcesContent":["/*!\n * Chart.js v4.4.6\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n let found = false;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n if (!found && !options.all) {\n return 0;\n }\n return value;\n}\nfunction convertObjectDataToArray(data, meta) {\n const { iScale , vScale } = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n const skipNull = (meta)=>{\n const parsed = meta._parsed.find((item)=>item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).some((key)=>isFunction(value[key]));\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.4.6\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nfunction containsDefaultColorsDefenitions() {\n return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n const containsColorDefenition = containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements) || containsDefaultColorsDefenitions();\n if (!options.forceOverride && containsColorDefenition) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n const xAverage = [\n ...xSet\n ].reduce((a, b)=>a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter((i)=>this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).marked={})}(this,(function(e){\"use strict\";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function n(t){e.defaults=t}e.defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};const s=/[&<>\"']/,r=new RegExp(s.source,\"g\"),i=/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,l=new RegExp(i.source,\"g\"),o={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},a=e=>o[e];function c(e,t){if(t){if(s.test(e))return e.replace(r,a)}else if(i.test(e))return e.replace(l,a);return e}const h=/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/gi;function p(e){return e.replace(h,((e,t)=>\"colon\"===(t=t.toLowerCase())?\":\":\"#\"===t.charAt(0)?\"x\"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):\"\"))}const u=/(^|[^\\[])\\^/g;function k(e,t){let n=\"string\"==typeof e?e:e.source;t=t||\"\";const s={replace:(e,t)=>{let r=\"string\"==typeof t?t:t.source;return r=r.replace(u,\"$1\"),n=n.replace(e,r),s},getRegex:()=>new RegExp(n,t)};return s}function g(e){try{e=encodeURI(e).replace(/%25/g,\"%\")}catch(e){return null}return e}const f={exec:()=>null};function d(e,t){const n=e.replace(/\\|/g,((e,t,n)=>{let s=!1,r=t;for(;--r>=0&&\"\\\\\"===n[r];)s=!s;return s?\"|\":\" |\"})).split(/ \\|/);let s=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:\"space\",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?e:x(e,\"\\n\")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\\s+)(?:```)/);if(null===n)return t;const s=n[1];return t.split(\"\\n\").map((e=>{const t=e.match(/^\\s+/);if(null===t)return e;const[n]=t;return n.length>=s.length?e.slice(s.length):e})).join(\"\\n\")}(e,t[3]||\"\");return{type:\"code\",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=x(e,\"#\");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=t[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\"\\n $1\");e=x(e.replace(/^ *>[ \\t]?/gm,\"\"),\"\\n\");const n=this.lexer.state.top;this.lexer.state.top=!0;const s=this.lexer.blockTokens(e);return this.lexer.state.top=n,{type:\"blockquote\",raw:t[0],tokens:s,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const s=n.length>1,r={type:\"list\",raw:\"\",ordered:s,start:s?+n.slice(0,-1):\"\",loose:!1,items:[]};n=s?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=s?n:\"[*+-]\");const i=new RegExp(`^( {0,3}${n})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);let l=\"\",o=\"\",a=!1;for(;e;){let n=!1;if(!(t=i.exec(e)))break;if(this.rules.block.hr.test(e))break;l=t[0],e=e.substring(l.length);let s=t[2].split(\"\\n\",1)[0].replace(/^\\t+/,(e=>\" \".repeat(3*e.length))),c=e.split(\"\\n\",1)[0],h=0;this.options.pedantic?(h=2,o=s.trimStart()):(h=t[2].search(/[^ ]/),h=h>4?1:h,o=s.slice(h),h+=t[1].length);let p=!1;if(!s&&/^ *$/.test(c)&&(l+=c+\"\\n\",e=e.substring(c.length+1),n=!0),!n){const t=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,h-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:\\`\\`\\`|~~~)`),i=new RegExp(`^ {0,${Math.min(3,h-1)}}#`);for(;e;){const a=e.split(\"\\n\",1)[0];if(c=a,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g,\" \")),r.test(c))break;if(i.test(c))break;if(t.test(c))break;if(n.test(e))break;if(c.search(/[^ ]/)>=h||!c.trim())o+=\"\\n\"+c.slice(h);else{if(p)break;if(s.search(/[^ ]/)>=4)break;if(r.test(s))break;if(i.test(s))break;if(n.test(s))break;o+=\"\\n\"+c}p||c.trim()||(p=!0),l+=a+\"\\n\",e=e.substring(a.length+1),s=c.slice(h)}}r.loose||(a?r.loose=!0:/\\n *\\n *$/.test(l)&&(a=!0));let u,k=null;this.options.gfm&&(k=/^\\[[ xX]\\] /.exec(o),k&&(u=\"[ ] \"!==k[0],o=o.replace(/^\\[[ xX]\\] +/,\"\"))),r.items.push({type:\"list_item\",raw:l,task:!!k,checked:u,loose:!1,text:o,tokens:[]}),r.raw+=l}r.items[r.items.length-1].raw=l.trimEnd(),r.items[r.items.length-1].text=o.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e\"space\"===e.type)),n=t.length>0&&t.some((e=>/\\n.*\\n/.test(e.raw)));r.loose=n}if(r.loose)for(let e=0;e$/,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:e,raw:t[0],href:n,title:s}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!/[:|]/.test(t[2]))return;const n=d(t[1]),s=t[2].replace(/^\\||\\| *$/g,\"\").split(\"|\"),r=t[3]&&t[3].trim()?t[3].replace(/\\n[ \\t]*$/,\"\").split(\"\\n\"):[],i={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(const e of s)/^ *-+: *$/.test(e)?i.align.push(\"right\"):/^ *:-+: *$/.test(e)?i.align.push(\"center\"):/^ *:-+ *$/.test(e)?i.align.push(\"left\"):i.align.push(null);for(const e of n)i.header.push({text:e,tokens:this.lexer.inline(e)});for(const e of r)i.rows.push(d(e,i.header.length).map((e=>({text:e,tokens:this.lexer.inline(e)}))));return i}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:\"=\"===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e=\"\\n\"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:c(t[1])}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\\/(pre|code|kbd|script)(\\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=x(e.slice(0,-1),\"\\\\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let s=0;s-1){const n=(0===t[0].indexOf(\"!\")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=\"\"}}let n=t[2],s=\"\";if(this.options.pedantic){const e=/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(n);e&&(n=e[1],s=e[3])}else s=t[3]?t[3].slice(1,-1):\"\";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),b(t,{href:n?n.replace(this.rules.inline.anyPunctuation,\"$1\"):n,title:s?s.replace(this.rules.inline.anyPunctuation,\"$1\"):s},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(/\\s+/g,\" \").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:\"text\",raw:e,text:e}}return b(n,e,n[0],this.lexer)}}emStrong(e,t,n=\"\"){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s)return;if(s[3]&&n.match(/[\\p{L}\\p{N}]/u))return;if(!(s[1]||s[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){const n=[...s[0]].length-1;let r,i,l=n,o=0;const a=\"*\"===s[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+n);null!=(s=a.exec(t));){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){l+=i;continue}if((s[5]||s[6])&&n%3&&!((n+i)%3)){o+=i;continue}if(l-=i,l>0)continue;i=Math.min(i,i+l+o);const t=[...s[0]][0].length,a=e.slice(0,n+s.index+t+i);if(Math.min(n,i)%2){const e=a.slice(1,-1);return{type:\"em\",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}const c=a.slice(2,-2);return{type:\"strong\",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\\n/g,\" \");const n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return n&&s&&(e=e.substring(1,e.length-1)),e=c(e,!0),{type:\"codespan\",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return\"@\"===t[2]?(e=c(t[1]),n=\"mailto:\"+e):(e=c(t[1]),n=e),{type:\"link\",raw:t[0],text:e,href:n,tokens:[{type:\"text\",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(\"@\"===t[2])e=c(t[0]),n=\"mailto:\"+e;else{let s;do{s=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\"}while(s!==t[0]);e=c(t[0]),n=\"www.\"===t[1]?\"http://\"+t[0]:t[0]}return{type:\"link\",raw:t[0],text:e,href:n,tokens:[{type:\"text\",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:c(t[0]),{type:\"text\",raw:t[0],text:e}}}}const m=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,y=/(?:[*+-]|\\d{1,9}[.)])/,$=k(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/).replace(/bull/g,y).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).getRegex(),z=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,T=/(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/,R=k(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/).replace(\"label\",T).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),_=k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,y).getRegex(),A=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",S=/|$))/,I=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|\\\\n*|$)|\\\\n*|$)|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$))\",\"i\").replace(\"comment\",S).replace(\"tag\",A).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),E=k(z).replace(\"hr\",m).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",A).getRegex(),q={blockquote:k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",E).getRegex(),code:/^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,def:R,fences:/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,hr:m,html:I,lheading:$,list:_,newline:/^(?: *(?:\\n|$))+/,paragraph:E,table:f,text:/^[^\\n]+/},Z=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",m).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\" {4}[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",A).getRegex(),L={...q,table:Z,paragraph:k(z).replace(\"hr\",m).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",Z).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",A).getRegex()},P={...q,html:k(\"^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))\").replace(\"comment\",S).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:f,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(z).replace(\"hr\",m).replace(\"heading\",\" *#{1,6} *[^\\n]\").replace(\"lheading\",$).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Q=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,v=/^( {2,}|\\\\)\\n(?!\\s*$)/,B=\"\\\\p{P}\\\\p{S}\",C=k(/^((?![*_])[\\spunctuation])/,\"u\").replace(/punctuation/g,B).getRegex(),M=k(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\"u\").replace(/punct/g,B).getRegex(),O=k(\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])\",\"gu\").replace(/punct/g,B).getRegex(),D=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\\\s]|$)|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])|[\\\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])\",\"gu\").replace(/punct/g,B).getRegex(),j=k(/\\\\([punct])/,\"gu\").replace(/punct/g,B).getRegex(),H=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),U=k(S).replace(\"(?:--\\x3e|$)\",\"--\\x3e\").getRegex(),X=k(\"^comment|^|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^|^\").replace(\"comment\",U).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),F=/(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/,N=k(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/).replace(\"label\",F).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),G=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",F).replace(\"ref\",T).getRegex(),J=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",T).getRegex(),K={_backpedal:f,anyPunctuation:j,autolink:H,blockSkip:/\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g,br:v,code:/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,del:f,emStrongLDelim:M,emStrongRDelimAst:O,emStrongRDelimUnd:D,escape:Q,link:N,nolink:J,punctuation:C,reflink:G,reflinkSearch:k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",G).replace(\"nolink\",J).getRegex(),tag:X,text:/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\t+\" \".repeat(n.length)));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.space(e))e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+=\"\\n\":t.push(n);else if(n=this.tokenizer.code(e))e=e.substring(n.raw.length),s=t[t.length-1],!s||\"paragraph\"!==s.type&&\"text\"!==s.type?t.push(n):(s.raw+=\"\\n\"+n.raw,s.text+=\"\\n\"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.list(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.def(e))e=e.substring(n.raw.length),s=t[t.length-1],!s||\"paragraph\"!==s.type&&\"text\"!==s.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(s.raw+=\"\\n\"+n.raw,s.text+=\"\\n\"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else{if(r=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startBlock.forEach((e=>{s=e.call({lexer:this},n),\"number\"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))s=t[t.length-1],i&&\"paragraph\"===s.type?(s.raw+=\"\\n\"+n.raw,s.text+=\"\\n\"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(n),i=r.length!==e.length,e=e.substring(n.raw.length);else if(n=this.tokenizer.text(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&\"text\"===s.type?(s.raw+=\"\\n\"+n.raw,s.text+=\"\\n\"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(n);else if(e){const t=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,s,r,i,l,o,a=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(i[0].slice(i[0].lastIndexOf(\"[\")+1,-1))&&(a=a.slice(0,i.index)+\"[\"+\"a\".repeat(i[0].length-2)+\"]\"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,i.index)+\"[\"+\"a\".repeat(i[0].length-2)+\"]\"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,i.index)+\"++\"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(l||(o=\"\"),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&\"text\"===n.type&&\"text\"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),s=t[t.length-1],s&&\"text\"===n.type&&\"text\"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,a,o))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e))){if(r=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startInline.forEach((e=>{s=e.call({lexer:this},n),\"number\"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(r))e=e.substring(n.raw.length),\"_\"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),l=!0,s=t[t.length-1],s&&\"text\"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(e){const t=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class se{options;constructor(t){this.options=t||e.defaults}code(e,t,n){const s=(t||\"\").match(/^\\S*/)?.[0];return e=e.replace(/\\n$/,\"\")+\"\\n\",s?'
'+(n?e:c(e,!0))+\"
\\n\":\"
\"+(n?e:c(e,!0))+\"
\\n\"}blockquote(e){return`
\\n${e}
\\n`}html(e,t){return e}heading(e,t,n){return`${e}\\n`}hr(){return\"
\\n\"}list(e,t,n){const s=t?\"ol\":\"ul\";return\"<\"+s+(t&&1!==n?' start=\"'+n+'\"':\"\")+\">\\n\"+e+\"\\n\"}listitem(e,t,n){return`
  • ${e}
  • \\n`}checkbox(e){return\"'}paragraph(e){return`

    ${e}

    \\n`}table(e,t){return t&&(t=`${t}`),\"\\n\\n\"+e+\"\\n\"+t+\"
    \\n\"}tablerow(e){return`\\n${e}\\n`}tablecell(e,t){const n=t.header?\"th\":\"td\";return(t.align?`<${n} align=\"${t.align}\">`:`<${n}>`)+e+`\\n`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return\"
    \"}del(e){return`${e}`}link(e,t,n){const s=g(e);if(null===s)return n;let r='
    \"+n+\"\",r}image(e,t,n){const s=g(e);if(null===s)return n;let r=`\"${n}\"`;return\",r}text(e){return e}}class re{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return\"\"+n}image(e,t,n){return\"\"+n}br(){return\"\"}}class ie{options;renderer;textRenderer;constructor(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new se,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new re}static parse(e,t){return new ie(t).parse(e)}static parseInline(e,t){return new ie(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let s=0;s0&&\"paragraph\"===n.tokens[0].type?(n.tokens[0].text=e+\" \"+n.tokens[0].text,n.tokens[0].tokens&&n.tokens[0].tokens.length>0&&\"text\"===n.tokens[0].tokens[0].type&&(n.tokens[0].tokens[0].text=e+\" \"+n.tokens[0].tokens[0].text)):n.tokens.unshift({type:\"text\",text:e+\" \"}):o+=e+\" \"}o+=this.parse(n.tokens,i),l+=this.renderer.listitem(o,r,!!s)}n+=this.renderer.list(l,t,s);continue}case\"html\":{const e=r;n+=this.renderer.html(e.text,e.block);continue}case\"paragraph\":{const e=r;n+=this.renderer.paragraph(this.parseInline(e.tokens));continue}case\"text\":{let i=r,l=i.tokens?this.parseInline(i.tokens):i.text;for(;s+1{const r=e[s].flat(1/0);n=n.concat(this.walkTokens(r,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error(\"extension name required\");if(\"renderer\"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let s=e.renderer.apply(this,t);return!1===s&&(s=n.apply(this,t)),s}:e.renderer}if(\"tokenizer\"in e){if(!e.level||\"block\"!==e.level&&\"inline\"!==e.level)throw new Error(\"extension level must be 'block' or 'inline'\");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(\"block\"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:\"inline\"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}\"childTokens\"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new se(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(\"options\"===n)continue;const s=n,r=e.renderer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||\"\"}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new w(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(n))continue;const s=n,r=e.tokenizer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new le;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(\"options\"===n)continue;const s=n,r=e.hooks[s],i=t[s];le.passThroughHooks.has(n)?t[s]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then((e=>i.call(t,e)));const n=r.call(t,e);return i.call(t,n)}:t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,s=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(s.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ne.lex(e,t??this.defaults)}parser(e,t){return ie.parse(e,t??this.defaults)}#e(e,t){return(n,s)=>{const r={...s},i={...this.defaults,...r};!0===this.defaults.async&&!1===r.async&&(i.silent||console.warn(\"marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.\"),i.async=!0);const l=this.#t(!!i.silent,!!i.async);if(null==n)return l(new Error(\"marked(): input parameter is undefined or null\"));if(\"string\"!=typeof n)return l(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(i.hooks&&(i.hooks.options=i),i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(n):n).then((t=>e(t,i))).then((e=>i.hooks?i.hooks.processAllTokens(e):e)).then((e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then((()=>e)):e)).then((e=>t(e,i))).then((e=>i.hooks?i.hooks.postprocess(e):e)).catch(l);try{i.hooks&&(n=i.hooks.preprocess(n));let s=e(n,i);i.hooks&&(s=i.hooks.processAllTokens(s)),i.walkTokens&&this.walkTokens(s,i.walkTokens);let r=t(s,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return l(e)}}}#t(e,t){return n=>{if(n.message+=\"\\nPlease report this to https://github.com/markedjs/marked.\",e){const e=\"

    An error occurred:

    \"+c(n.message+\"\",!0)+\"
    \";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}}const ae=new oe;function ce(e,t){return ae.parse(e,t)}ce.options=ce.setOptions=function(e){return ae.setOptions(e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.getDefaults=t,ce.defaults=e.defaults,ce.use=function(...e){return ae.use(...e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.walkTokens=function(e,t){return ae.walkTokens(e,t)},ce.parseInline=ae.parseInline,ce.Parser=ie,ce.parser=ie.parse,ce.Renderer=se,ce.TextRenderer=re,ce.Lexer=ne,ce.lexer=ne.lex,ce.Tokenizer=w,ce.Hooks=le,ce.parse=ce;const he=ce.options,pe=ce.setOptions,ue=ce.use,ke=ce.walkTokens,ge=ce.parseInline,fe=ce,de=ie.parse,xe=ne.lex;e.Hooks=le,e.Lexer=ne,e.Marked=oe,e.Parser=ie,e.Renderer=se,e.TextRenderer=re,e.Tokenizer=w,e.getDefaults=t,e.lexer=xe,e.marked=ce,e.options=he,e.parse=fe,e.parseInline=ge,e.parser=de,e.setOptions=pe,e.use=ue,e.walkTokens=ke}));\n"],"x_google_ignoreList":[]}