{"version":3,"file":"scripts.6cd21268b50b193d.js","mappings":"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","names":["global","factory","exports","module","define","amd","globalThis","self","Chart","this","noop","uid","id","isNullOrUndef","value","isArray","Array","type","Object","prototype","toString","call","slice","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","args","thisArg","apply","each","loopable","reverse","i","len","keys","length","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","target","create","klen","k","isValidKey","key","indexOf","_merger","options","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","keyResolvers","v","x","o","y","resolveObjectKey","obj","_getKeyResolver","_splitKey","parts","split","tmp","part","push","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","item","has","_isClickEvent","e","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","_factorize","result","sqrt","sort","pop","isNumber","n","isNaN","epsilon","abs","almostWhole","rounded","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","enumerable","forEach","method","base","res","object","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","add","from","requestAnimFrame","window","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","rest","debounce","delay","timeout","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","assign","animator","Animator","constructor","_request","_charts","Map","_running","_lastDate","_notify","chart","anims","date","numSteps","duration","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","_getAnims","charts","get","complete","progress","listen","event","cb","reduce","acc","cur","_duration","stop","cancel","remove","delete","lim","l","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","c","d","f","hex","h1","h2","eq","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","r","g","hueValue","calln","hsl2rgb","hue","map$2","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","RGB_RE","to","modHSL","ratio","clone","proto","fromObject","input","functionParse","rgbParse","m","exec","hueParse","p1","p2","hwb2rgb","hsv2rgb","Color","hexParse","ret","nameParse","unpack","unpacked","tkeys","j","ok","nk","replace","parseInt","transparent","toLowerCase","_rgb","_valid","valid","rgbString","hexString","isShort","alpha","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","t","interpolate$1","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","node","root","scope","defaults","Defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","name","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","_scriptable","startsWith","_indexable","_fallback","_isDomSupported","document","_getParentNode","domNode","parent","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","getStyle","el","getPropertyValue","positions","getPositionedStyle","styles","suffix","pos","width","height","top","bottom","useOffsetPos","shadowRoot","getRelativePosition","evt","canvas","currentDevicePixelRatio","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","touches","offsetX","offsetY","rect","getBoundingClientRect","clientX","clientY","xOffset","yOffset","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxWidth","maxHeight","containerSize","getContainerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","matches","match","toFontString","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","halfWidth","clearCanvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","sin","cos","lineTo","SQRT1_2","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","setRenderOpts","translation","fillStyle","textAlign","textBaseline","strokeStyle","lineWidth","strokeText","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxDescent","yDecoration","actualBoundingBoxAscent","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","_createResolver","scopes","prefixes","rootScopes","fallback","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","prop","_keys","_cached","_resolveWithPrefixes","proxy","prefix","readKey","needsSubResolver","createSubResolver","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","isScriptable","_resolveScriptable","Error","join","_resolveArray","isIndexable","arr","filter","resolver","allKeys","scriptable","indexable","_allKeys","resolve","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","next","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","delta","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","atEdge","elasticIn","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","locale","getNumberFormat","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","format","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","props","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","console","warn","inputs","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","createContext","parentContext","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","findStartAndEnd","splitByStyles","solidSegments","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","helpers","freeze","__proto__","easingEffects","_deprecated","fontString","pixelSize","fontStyle","fontFamily","binarySearch","metaset","controller","_cachedMeta","lookupMethod","_reversePixels","_sharedOptions","getRange","evaluateInteractionItems","position","handler","metasets","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","chartArea","inRange","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","minDistance","evaluationFunc","center","getCenterPoint","getNearestRadialItems","startAngle","endAngle","getProps","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","dataset","getDatasetMeta","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","params","layout","stacks","stack","horizontal","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","update","fullSize","setBoxDims","placeBoxes","userPadding","padding","placed","stackWeight","autoPadding","layouts","addBox","_layers","z","removeBox","layoutItem","configure","minPadding","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","isHorizontal","wrap","centerHorizontal","centerVertical","leftAndTop","concat","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","total","display","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","factor","handleMaxPadding","updatePos","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","config","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","entry","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","native","addListener","DomPlatform","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","removeAttribute","setAttribute","$proxies","attach","detach","proxies","isConnected","_detectPlatform","OffscreenCanvas","platforms","interpolators","boolean","c0","number","Animation","cfg","currentValue","_fn","_easing","easing","_start","_target","_prop","_from","_to","_promises","active","elapsed","remain","wait","promises","Promise","rej","resolved","animationOptions","colors","properties","numbers","show","animations","visible","hide","Animations","_properties","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","resolveTargetOptions","$shared","$animations","_createAnimations","awaitAll","anim","all","then","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_stacks","iAxis","vAxis","getStackKey","indexScale","valueScale","u","_top","_bottom","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","scaleID","_getOtherScale","reset","_destroy","_dataCheck","convertObjectDataToArray","adata","isExtensible","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","toClip","disabled","defaultClip","resolveDatasetElementOptions","resolveDataElementOptions","createDataContext","dataIndex","raw","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","Element","tooltipPosition","hasValue","final","defaultRoutes","formatters","numeric","tickValue","ticks","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","newTicks","spacing","majorStart","majorEnd","ceil","offset","grid","drawBorder","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","title","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","edge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","_startPixel","_endPixel","lineValue","getPixelForTick","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","super","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_length","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_cache","_dataLimitsCached","init","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","ticksLimit","maxTicksLimit","determineMaxTicks","_tickSize","majorIndices","enabled","getMajorIndices","numMajorIndices","first","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","diff","factors","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","minSize","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","getValueForPixel","getPixelForDecimal","decimal","getDecimalForPixel","getBasePixel","getBaseValue","createTickContext","createScaleContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","getLineWidthForValue","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","unregister","registry","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","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","localIds","createDescriptors","getOpts","pluginOpts","previousDescriptors","some","pluginScopeKeys","getIndexAxis","determineAxis","scaleOptions","axisFromPosition","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","error","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","hasFunction","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","_dataset","buildOrUpdateControllers","newControllers","order","isDatasetVisible","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","getVisibleDatasetCount","setDatasetVisibility","toggleDataVisibility","getDataVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","lastEvent","determineLastEvent","invalidatePlugins","abstract","version","DateAdapter","chartOptions","formats","timestamp","amount","unit","startOf","weekday","endOf","members","_adapters","_date","computeMinSampleSize","getAllScaleValues","$bar","visibleMetas","curr","updateMinAndPrev","parseValue","parseFloatBar","startValue","endValue","barStart","barEnd","_custom","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","borderSkipped","borderProps","enableBorderRadius","parseEdge","swap","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","ruler","_getRuler","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","barSign","halfGrid","maxBarThickness","computeFlexCategoryTraits","percent","chunk","computeFitCategoryTraits","thickness","stackIndex","rects","_index_","_value_","BubbleController","tooltip","callbacks","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","arcs","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","getRatioAndOffset","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","tooltipItem","dataLabel","formattedValue","LineController","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","cutoutPercentage","animationOpts","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","ScatterController","clipArc","pixelMargin","angleMargin","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","toRadiusCorners","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","lineJoin","drawFullCircleBorders","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","getLineMethod","stepped","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","_interpolate","_getInterpolationMethod","interpolated","path","segmentMethod","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","outer","boundingRects","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","addRectPath","hasRadius","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","decimated","getStartAndCountOfVisiblePointsSimplified","threshold","lttbDecimation","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_pointsFromSegments","linePoints","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","fillOption","decodeTargetIndex","firstCh","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","unshift","pointValue","firstValue","lastValue","simpleArc","_drawfill","getLineByIndex","_buildStackLine","sourcePoints","getLinesBelow","below","computeBoundary","computeCircularBoundary","_getTargetValue","computeLinearBoundary","_getTargetPixel","lineOpts","above","doFill","clipVertical","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","isListened","onLeave","hoveredItem","sameItem","itemsEqual","plugin_legend","_element","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","createTitle","titleBlock","WeakMap","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","doesNotFitWithAlign","caret","caretSize","caretPadding","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","createTooltipContext","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","Decimation","Filler","SubTitle","afterInit","afterDraw","labelCount","CategoryScale","_startValue","_valueRange","_addedLabels","added","findOrAddLabel","addedLabels","addIfString","lastIndexOf","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","maxTicks","stepSize","computeTickLimit","generateTicks$1","generationOptions","dataRange","precision","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","decimalPlaces","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","generateTicks","endExp","endSignificand","significand","lastTick","getTickBackdropHeight","measureLabelSize","determineLimits","updateLimits","limits","hLimits","vLimits","getTextAlignForAngle","leftForTextAlign","yForAngle","pathRadiusLine","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","fitWithPointLabels","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","setCenterPoint","buildPointLabelItems","extra","outerDistance","pointLabelPosition","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","adapters","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","ampersandTest","nativeURLSearchParams","URLSearchParams","isSupportObjectConstructor","decodesPlusesCorrectly","isSupportSize","__URLSearchParams__","encodesAmpersandsCorrectly","append","URLSearchParamsPolyfill","iterable","iterator","appendTo","dict","getAll","query","encode","propValue","useProxy","construct","Function","USPProto","polyfill","parseToDict","makeIterator","TypeError","search","encodeURIComponent","decode","decodeURIComponent","done","pairs","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","nodeType","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","doc","script","createElement","appendChild","removeChild","toType","rhtmlSuffix","jQuery","selector","isArrayLike","nodeName","elem","jquery","toArray","pushStack","elems","prevObject","even","grep","_elem","odd","extend","copy","copyIsArray","deep","isPlainObject","expando","random","isReady","msg","Ctor","isEmptyObject","globalEval","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","docElem","ownerDocument","test","namespaceURI","invert","callbackExpect","guid","_i","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","childNodes","els","find","seed","nid","groups","newSelector","newContext","getElementsByTagName","getElementsByClassName","testContext","tokenize","toSelector","querySelectorAll","select","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","tag","className","innerHTML","sortDetached","expr","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","xml","outerCache","nodeIndex","useCache","firstChild","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","lang","elemLang","hash","location","focus","safeActiveElement","activeElement","hasFocus","href","tabIndex","checked","selected","empty","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","parseOnly","tokens","soFar","preFilters","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","multipleContexts","contexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","matcherFromGroupMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","sibling","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","ex","adoptValue","reject","noValue","promise","fail","Callbacks","createOptions","_","flag","firing","memory","fired","locked","list","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","message","readyException","readyList","completed","readyWait","readyState","doScroll","access","chainable","emptyGet","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","composed","getRootNode","isHiddenWithinTree","css","adjustCSS","valueParts","tween","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","tr","td","_default","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","off","leverageNative","isSetup","namespace","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","Event","originalEvent","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","pointerId","pointerType","screenX","screenY","targetTouches","toElement","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","insertBefore","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","insert","rnumnonpx","rcustomProp","getStyles","opener","old","rboxStyle","curCSS","computed","minWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","vendorPropName","capName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","animationIterationCount","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","scrollboxSizeBuggy","expand","expanded","propHooks","run","eased","fx","scrollTop","scrollLeft","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","tweeners","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","tweener","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","selectedIndex","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ajaxHandleResponses","ct","finalDataType","firstDataType","ajaxConvert","conv2","conv","dataFilter","throws","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","rtrim","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","$","noConflict"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["node_modules\\chart.js\\dist\\chart.js","node_modules\\url-search-params-polyfill\\index.js","node_modules\\jquery\\dist\\jquery.js"],"sourcesContent":["/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chart = factory());\n})(this, (function () { 'use strict';\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\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 = new Animator();\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$2 = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map$2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map$2[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate$1(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate$1(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = 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 r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n__proto__: null,\neasingEffects: effects,\nisPatternOrGradient: isPatternOrGradient,\ncolor: color,\ngetHoverColor: getHoverColor,\nnoop: noop,\nuid: uid,\nisNullOrUndef: isNullOrUndef,\nisArray: isArray,\nisObject: isObject,\nisFinite: isNumberFinite,\nfiniteOrDefault: finiteOrDefault,\nvalueOrDefault: valueOrDefault,\ntoPercentage: toPercentage,\ntoDimension: toDimension,\ncallback: callback,\neach: each,\n_elementsEqual: _elementsEqual,\nclone: clone$1,\n_merger: _merger,\nmerge: merge,\nmergeIf: mergeIf,\n_mergerIf: _mergerIf,\n_deprecated: _deprecated,\nresolveObjectKey: resolveObjectKey,\n_splitKey: _splitKey,\n_capitalize: _capitalize,\ndefined: defined,\nisFunction: isFunction,\nsetsEqual: setsEqual,\n_isClickEvent: _isClickEvent,\ntoFontString: toFontString,\n_measureText: _measureText,\n_longestText: _longestText,\n_alignPixel: _alignPixel,\nclearCanvas: clearCanvas,\ndrawPoint: drawPoint,\ndrawPointLegend: drawPointLegend,\n_isPointInArea: _isPointInArea,\nclipArea: clipArea,\nunclipArea: unclipArea,\n_steppedLineTo: _steppedLineTo,\n_bezierCurveTo: _bezierCurveTo,\nrenderText: renderText,\naddRoundedRectPath: addRoundedRectPath,\n_lookup: _lookup,\n_lookupByKey: _lookupByKey,\n_rlookupByKey: _rlookupByKey,\n_filterBetween: _filterBetween,\nlistenArrayEvents: listenArrayEvents,\nunlistenArrayEvents: unlistenArrayEvents,\n_arrayUnique: _arrayUnique,\n_createResolver: _createResolver,\n_attachContext: _attachContext,\n_descriptors: _descriptors,\n_parseObjectDataRadialScale: _parseObjectDataRadialScale,\nsplineCurve: splineCurve,\nsplineCurveMonotone: splineCurveMonotone,\n_updateBezierControlPoints: _updateBezierControlPoints,\n_isDomSupported: _isDomSupported,\n_getParentNode: _getParentNode,\ngetStyle: getStyle,\ngetRelativePosition: getRelativePosition,\ngetMaximumSize: getMaximumSize,\nretinaScale: retinaScale,\nsupportsEventListenerOptions: supportsEventListenerOptions,\nreadUsedSize: readUsedSize,\nfontString: fontString,\nrequestAnimFrame: requestAnimFrame,\nthrottled: throttled,\ndebounce: debounce,\n_toLeftRightCenter: _toLeftRightCenter,\n_alignStartEnd: _alignStartEnd,\n_textX: _textX,\n_getStartAndCountOfVisiblePoints: _getStartAndCountOfVisiblePoints,\n_scaleRangesChanged: _scaleRangesChanged,\n_pointInLine: _pointInLine,\n_steppedInterpolation: _steppedInterpolation,\n_bezierInterpolation: _bezierInterpolation,\nformatNumber: formatNumber,\ntoLineHeight: toLineHeight,\n_readValueToProps: _readValueToProps,\ntoTRBL: toTRBL,\ntoTRBLCorners: toTRBLCorners,\ntoPadding: toPadding,\ntoFont: toFont,\nresolve: resolve,\n_addGrace: _addGrace,\ncreateContext: createContext,\nPI: PI,\nTAU: TAU,\nPITAU: PITAU,\nINFINITY: INFINITY,\nRAD_PER_DEG: RAD_PER_DEG,\nHALF_PI: HALF_PI,\nQUARTER_PI: QUARTER_PI,\nTWO_THIRDS_PI: TWO_THIRDS_PI,\nlog10: log10,\nsign: sign,\nniceNum: niceNum,\n_factorize: _factorize,\nisNumber: isNumber,\nalmostEquals: almostEquals,\nalmostWhole: almostWhole,\n_setMinAndMaxByKey: _setMinAndMaxByKey,\ntoRadians: toRadians,\ntoDegrees: toDegrees,\n_decimalPlaces: _decimalPlaces,\ngetAngleFromPoint: getAngleFromPoint,\ndistanceBetweenPoints: distanceBetweenPoints,\n_angleDiff: _angleDiff,\n_normalizeAngle: _normalizeAngle,\n_angleBetween: _angleBetween,\n_limitValue: _limitValue,\n_int16Range: _int16Range,\n_isBetween: _isBetween,\ngetRtlAdapter: getRtlAdapter,\noverrideTextDirection: overrideTextDirection,\nrestoreTextDirection: restoreTextDirection,\n_boundSegment: _boundSegment,\n_boundSegments: _boundSegments,\n_computeSegments: _computeSegments\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 {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction 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}\nfunction 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}\nfunction 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({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction 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 = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction 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](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar 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\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : 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({element, datasetIndex: meta.index, index});\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\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n 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({element: data[i], datasetIndex, index: i});\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 = ['left', 'top', 'right', 'bottom'];\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 ?\n v0.index - v1.index :\n 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] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction 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] || {size: 0, count: 1};\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, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\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 = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\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(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\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] || {count: 1, placed: 0, weight: 1};\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}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\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 z: 0,\n draw(chartArea) {\n item.draw(chartArea);\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) =>\n 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, {left: 0, top: 0, right: 0, bottom: 0});\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';\nconst 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 === '';\nfunction 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 ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\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, {childList: true, subtree: true});\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, {childList: true, subtree: true});\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, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass 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 ['height', 'width'].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 = _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\nvar platforms = /*#__PURE__*/Object.freeze({\n__proto__: null,\n_detectPlatform: _detectPlatform,\nBasePlatform: BasePlatform,\nBasicPlatform: BasicPlatform,\nDomPlatform: DomPlatform\n});\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\n ? c1.mix(c0, factor).hexString()\n : 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([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\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([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\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({res, rej});\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\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\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 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 || [key]).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, {$shared: false, $animations: {}});\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 for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\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 return value;\n}\nfunction convertObjectDataToArray(data) {\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 x: key,\n y: 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 }\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 {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\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 }\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), values: null};\nclass DatasetController {\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.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 }\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\n ? meta.vScale\n : 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 this._data = convertObjectDataToArray(data);\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 }\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]\n };\n return applyStack(stack, value, meta.index, {mode});\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 = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\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\n ? this.resolveDatasetElementOptions(mode)\n : 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 ||\n (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 ||\n (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 ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\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 {sharedOptions, includeOptions};\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([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\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 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}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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;\nfunction 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}\nfunction 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}\nfunction 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}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction 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 {titleX, titleY, maxWidth, rotation};\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 {min, max};\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 beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\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()\n ? this.width + margins.left + margins.right\n : 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, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\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, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\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, [this]);\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, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\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)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\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, [this]);\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);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\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) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\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) => ({width: widths[idx] || 0, height: heights[idx] || 0});\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 :\n min > 0 && max > 0 ? min :\n 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 ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(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()\n ? h * cos > w * sin ? w / cos : h / sin\n : 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} = 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 = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 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 optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\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 } 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 = y + textOffset - labelPadding.top;\n let left = x - 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 }\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 rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\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 {textAlign, x};\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 {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\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, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, 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 }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 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.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\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._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\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: [titleX, titleY],\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 if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\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 = [scope].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 = [this.controllers, this.scales, this.elements];\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 [...args].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 = 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 = [chart, args, descriptor.options];\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}\nfunction 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 {plugins, localIds};\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, {plugin, local: localIds[id]}, 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 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 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 (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\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);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\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'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\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 datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\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 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 _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 {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\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 = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : 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)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\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)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\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]\n ? a[l2] - b[l2]\n : 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, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction 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}\nfunction 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}\nclass Chart {\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(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\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 _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 = {width, height};\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', {size: newSize});\n callback(options.onResize, [this, newSize], 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(\n 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 }\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.prototype, {\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', {mode, cancelable: true}) === 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', {mode});\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(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\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)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === 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', {mode, cancelable: true}) === 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({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\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', {cancelable: true}) === 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({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === 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', {cancelable: true}) === 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 = 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, {chart: this, type: 'chart'}));\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, {visible});\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 this.notifyPlugins('destroy');\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 _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, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], 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}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar _adapters = {\n _date: DateAdapter\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}\nfunction 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}\nfunction 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}\nfunction 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 {start, end, reverse, top, bottom};\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 = {top: true, right: true, bottom: true, left: true};\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'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\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)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + 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]) ? {base, head: base} : 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)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\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 ||\n\t\t\t\t(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)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : 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}, 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 }\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'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : 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) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.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: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.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\nclass BubbleController extends DatasetController {\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 {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: meta.label,\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, {$shared: false});\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}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\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 {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\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)) {\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}\nDoughnutController.id = 'doughnut';\nDoughnutController.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: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.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}} = 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 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 tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\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 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 }\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}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\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 = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\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)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.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}} = 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 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 tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\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\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\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}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends DatasetController {\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 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 }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = 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}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\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, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction 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 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}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction 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 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 ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\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 const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\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 ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\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 const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\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, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\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 if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\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(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\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 / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\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 'circumference',\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) / 2;\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 let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction _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}\nfunction _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, {start, end: start + count - 1})) {\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 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, {property, start: value, end: value});\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, {start, end: start + count - 1});\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}\nLineElement.id = 'line';\nLineElement.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};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\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(['x', 'y'], 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(['x', 'y'], useFinalPosition);\n return {x, y};\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 return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], 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 {left, top, right, bottom};\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(['enableBorderRadius']);\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\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction 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 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(['x', 'y', 'base', 'horizontal'], 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}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\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(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\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', {value: data});\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 {start, count};\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([indexAxis, chart.options.indexAxis]) === '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 {property, start, end};\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({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\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: {tension: 0},\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 = [index];\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}\nfunction _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 ['origin', 'start', 'end', 'stack', 'shape'].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}\nfunction _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}\nfunction _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}\nfunction 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({x: null, y: scale.bottom}, 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({points, options: {}});\n}\nfunction 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}\nfunction 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}\nfunction 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 {first, last, point};\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 || {start: 0, end: TAU};\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}\nfunction 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, {line, target, above, below, area, scale, axis});\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, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\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, {move: lineLoop});\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, {move: lineLoop, reverse: true});\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, [this.chart], 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, fontSize, 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 = [0];\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] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, 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 = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\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 {color: fontColor, 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 || fontColor;\n ctx.fillStyle = legendItem.fontColor || 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 {\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)\n && _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)\n && _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, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\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({ctx: chart.ctx, options, chart});\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}} = 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: 0,\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) => !['generateLabels', 'filter', 'sort'].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 {titleX, titleY, maxWidth, rotation};\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: [titleX, titleY],\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 x = 0;\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 x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\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}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction 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}\nfunction 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\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (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 {width, height};\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}\nfunction 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}\nfunction 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'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction 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}\nclass Tooltip extends Element {\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 || config._chart;\n this._chart = this.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 ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(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(options.callbacks.beforeBody.apply(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(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(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(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(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, {chart: this.chart, tooltip: this, replay});\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 {x1, x2, x3, y1, y2, y3};\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 labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = 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 = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.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 = labelColors.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 = labelColors.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'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 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;\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}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\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', args) === 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 },\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: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\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 },\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: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\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({index, label: raw});\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);\nclass CategoryScale extends Scale {\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\n : 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({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return 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}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\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 [{value: rmin}, {value: rmax}];\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(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\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({value: min});\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 ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\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({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\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 = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\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 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}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\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, [raw, index]);\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 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 const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(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\n ? '0'\n : 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\n ? 0\n : (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}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\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 : [label];\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}\nfunction 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(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\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 buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\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 }\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 drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.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 renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\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) {\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(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\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 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()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\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} = 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) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\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.ticks.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 && !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(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.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};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction 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'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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 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 {min, max};\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\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : 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 = {start, end, factor: 1 / (start + 1 + end)};\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(timeOpts.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((a, b) => a - b).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 _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\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 const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\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, [exampleTime], 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}\nTimeScale.id = 'time';\nTimeScale.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 major: {\n enabled: false\n }\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 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 {time: min, pos: 0},\n {time: max, pos: 1}\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({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\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}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nChart.register(controllers, scales, elements, plugins);\nChart.helpers = {...helpers};\nChart._adapters = _adapters;\nChart.Animation = Animation;\nChart.Animations = Animations;\nChart.animator = animator;\nChart.controllers = registry.controllers.items;\nChart.DatasetController = DatasetController;\nChart.Element = Element;\nChart.elements = elements;\nChart.Interaction = Interaction;\nChart.layouts = layouts;\nChart.platforms = platforms;\nChart.Scale = Scale;\nChart.Ticks = Ticks;\nObject.assign(Chart, controllers, scales, elements, plugins, platforms);\nChart.Chart = Chart;\nif (typeof window !== 'undefined') {\n window.Chart = Chart;\n}\n\nreturn Chart;\n\n}));\n","/**!\n * url-search-params-polyfill\n *\n * @author Jerry Bendy (https://github.com/jerrybendy)\n * @licence MIT\n */\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n isSupportSize = nativeURLSearchParams && 'size' in nativeURLSearchParams.prototype,\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly && isSupportSize) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var useProxy = self.Proxy && nativeURLSearchParams && (!decodesPlusesCorrectly || !encodesAmpersandsCorrectly || !isSupportObjectConstructor || !isSupportSize);\n var propValue;\n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n\n /*\n * Apply polyfill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n // Fix #54, `toString.call(new URLSearchParams)` will return correct value when Proxy not used\n if (!useProxy && self.Symbol) {\n USPProto[self.Symbol.toStringTag] = 'URLSearchParams';\n }\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n if (!('forEach' in USPProto)) {\n USPProto.forEach = function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n }\n\n /**\n * Sort all name-value pairs\n */\n if (!('sort' in USPProto)) {\n USPProto.sort = function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n }\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('keys' in USPProto)) {\n USPProto.keys = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('values' in USPProto)) {\n USPProto.values = function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('entries' in USPProto)) {\n USPProto.entries = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n }\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n if (!('size' in USPProto)) {\n Object.defineProperty(USPProto, 'size', {\n get: function () {\n var dict = parseToDict(this.toString())\n if (USPProto === this) {\n throw new TypeError('Illegal invocation at URLSearchParams.invokeGetter')\n }\n return Object.keys(dict).reduce(function (prev, cur) {\n return prev + dict[cur].length;\n }, 0);\n }\n });\n }\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"