Current Path : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/ |
Current File : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/chartjs-lazy.min.js.map |
{"version":3,"sources":["../src/chartjs-lazy.js"],"names":["f","exports","module","define","amd","g","window","global","self","Chart","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","colorNames","getRgba","getHsla","getRgb","string","rgba","slice","getHsl","hsla","getHwb","getAlpha","vals","hexString","rgb","hexDouble","rgbString","alpha","rgbaString","percentString","percentaString","Math","round","b","hslString","hslaString","hwbString","hwb","keyword","reverseNames","match","parseInt","parseFloat","scale","h","isNaN","w","num","min","max","str","toString","toUpperCase","name","convert","Color","obj","valid","values","hsl","hsv","cmyk","setValues","red","lightness","v","value","whiteness","c","cyan","prototype","isValid","setSpace","arguments","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","val","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","pow","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","p","w1","w2","toJSON","clone","result","source","target","type","prop","hasOwnProperty","console","error","spaces","maxes","getValues","space","charAt","chans","capped","sname","args","Array","index","svalues","rgb2hsl","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","rgb2xyz","rgb2lab","rgb2lch","lab2lch","hsl2rgb","hsl2hsv","sv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2rgb","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab2rgb","lch2lab","lch2xyz","lch2rgb","delta","m","y","k","reverseKeywords","JSON","stringify","x","z","xyz","t1","t2","t3","hi","floor","q","wh","bl","lab","y2","hr","atan2","PI","sqrt","lch","cos","sin","cssKeywords","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","key","conversions","Converter","func","arg","pair","exec","from","to","convs","routeSpace","fspace","forEach","factory","moment","hookCallback","hooks","apply","isArray","input","Object","isObject","isObjectEmpty","isUndefined","isNumber","isDate","Date","map","arr","fn","res","push","hasOwnProp","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","some","fun","len","some$1","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","momentProperties","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","config","updateOffset","isMoment","absFloor","number","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","join","stack","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","keys","keys$1","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","sort","makeGetSet","keepTime","set$1","get","mom","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","localeData","removeFormattingTokens","replace","makeFormatFunction","array","output","formatMoment","invalidDate","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchSigned","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","indexOf","indexOf$1","daysInMonth","year","month","UTC","getUTCDate","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","date","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","parseTwoDigitYear","daysInYear","isLeapYear","getSetYear","createDate","d","M","ms","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","parseWeekday","parseIsoWeekday","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minPieces","minp","shortp","longp","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","minutes","seconds","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","globalLocale","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","oldLocale","_abbr","getSetGlobalLocale","data","getLocale","defineLocale","abbr","_config","parentLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","isoDates","isoTimes","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","configFromRFC2822","dayFormat","timezones","timezone","timezoneIndex","momentDate","momentDay","getDay","splice","configFromString","createFromInputFallback","_useUTC","defaults","currentDateArray","nowValue","now","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","ISO_8601","RFC_2822","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","second","millisecond","createFromConfig","prepareConfig","add","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","Duration","duration","years","quarters","quarter","weeks","days","milliseconds","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","offset","separator","utcOffset","sign","offsetFromString","matcher","matches","chunk","parts","cloneWithOffset","model","diff","setTime","local","getDateOffset","getTimezoneOffset","isUtc","createDuration","ret","diffRes","parseIso","momentsDifference","invalid","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","addSubtract","isAdding","subtract","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","defaultFormat","defaultFormatUtc","newLocaleData","lang","isoWeekYear","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","isoWeekday","toArray","toObject","toDate","toISOString","inspect","zone","isLocal","prefix","suffix","unix","creationData","isoWeek","isoWeeks","weekInfo","isoWeeksInYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","preParsePostFormat","proto$1","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","abs$1","toISOString$1","Y","D","total","proto$2","monthsFromDays","withSuffix","toIsoString","version","updateLocale","relativeTimeRounding","relativeTimeThreshold","threshold","limit","myMoment","helpers","Element","elements","Interaction","platform","plugins","register","initialize","canvasHelpers","canvas","Bar","context","Bubble","Doughnut","Line","PolarArea","Radar","Scatter","_set","hover","mode","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","axis","position","rectangle","borderSkipped","tooltips","callbacks","title","item","yLabel","labels","label","datasetLabel","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","me","meta","getMeta","getDataset","update","reset","rects","ilen","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","options","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","backgroundColor","valueAtIndexOrDefault","borderColor","borderWidth","updateElementGeometry","pivot","vscale","getValueScale","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","height","size","width","getValueScaleId","getIndexScaleId","getIndexScale","getStackCount","last","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackIndex","stackCount","pixels","start","left","top","end","getPixelForValue","getRightValue","imeta","ivalue","controller","id","stackIndex","leftSampleSize","rightSampleSize","leftCategorySize","rightCategorySize","fullBarSize","valueOrDefault","barThickness","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","setHoverStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","removeHoverStyle","rectangleElementOptions","horizontalBar","dataPoint","bubble","Point","points","each","point","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","radius","skip","hoverRadius","resolve","dataIndex","animation","animateRotate","animateScale","legendCallback","text","legend","generateLabels","ds","arc","arcOpts","fill","stroke","bw","fillStyle","strokeStyle","lineWidth","hidden","onClick","legendItem","cutoutPercentage","rotation","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","opts","availableWidth","right","availableHeight","bottom","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","element","arcs","hoverWidth","_chart","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","tension","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","pointOptions","pointRadius","pointHitRadius","calculatePointY","sumPos","sumNeg","dsMeta","stackedRightValue","rightValue","area","controlPoints","filter","pt","capControlPoint","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","angleLines","display","circular","pointLabels","ticks","beginAtZero","polarArea","count","countVisibleElements","xCenter","yCenter","visibleCount","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","scatter","easing","onProgress","onComplete","Animation","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","animationService","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","findIndex","requestAnimFrame","startDigest","startTime","framesToDrop","advance","endTime","defineProperty","types","instances","initConfig","configMerge","updateConfig","newOptions","scaleOptions","tooltip","positionIsHorizontal","construct","acquireContext","uid","aspectRatio","_bufferedRender","notify","retinaScale","devicePixelRatio","bindEvents","responsive","resize","ensureScalesHaveIDs","buildScales","initToolTip","clear","stop","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","style","newSize","onResize","responsiveAnimationDuration","scalesOptions","xAxisOptions","yAxisOptions","items","dtype","dposition","isDefault","scaleType","scaleClass","scaleService","getScaleConstructor","mergeTicksOptions","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","buildOrUpdateElements","updateLayout","updateDatasets","_bufferedRequest","layoutService","updateDataset","animationOptions","animationObject","easingFunction","effects","stepDecimal","easingValue","isNullOrUndef","transition","boxes","box","drawDatasets","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","method","getDatasetAtEvent","_meta","generateLegend","destroy","unbindEvents","releaseContext","toBase64Image","toDataURL","Tooltip","_chartInstance","listeners","_listeners","listener","eventHandler","events","addEventListener","removeEventListener","updateHoverStyle","enabled","changed","handleEvent","bufferedRequest","animationDuration","hoverOptions","lastActive","active","onHover","native","arrayEquals","Controller","arrayEvents","listenArrayEvents","_chartjs","configurable","enumerable","object","unlistenArrayEvents","stub","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","elementOpts","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","onDataSplice","onDataUnshift","inherits","scope","merge","color","interpolate","view","ease","actual","origin","c0","c1","configuration","_view","_start","tooltipPosition","hasValue","setFn","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","extensions","ChartElement","constructor","Surrogate","__super__","almostEquals","epsilon","almostWhole","rounded","reduce","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","log10","log","LN10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointsWithTangents","deltaK","mK","pointsLen","pointBefore","pointCurrent","pointAfter","slopeDeltaX","alphaK","betaK","tauK","squaredMagnitude","deltaX","loop","niceNum","range","exponent","fraction","niceFraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","getRelativePosition","evt","mouseX","mouseY","originalEvent","currentTarget","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","parseMaxStyle","styleValue","node","parentProperty","valueInPixels","parentNode","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","document","defaultView","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","getConstraintWidth","getConstraintHeight","container","clientWidth","cw","clientHeight","ch","el","property","currentStyle","getPropertyValue","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","fontFamily","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","parseVisibleItems","handler","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","deltaY","indexMode","nearest","sizeA","getArea","sizeB","intersectsItem","inXRange","inYRange","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","padding","filterByPosition","sortByWeight","reverse","_tmpIndex_","v0","v1","addBox","fullWidth","removeBox","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","getMinimumBoxSize","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","minBox","scaleMargin","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","_plugins","_cacheId","plugin","unregister","idx","getAll","hook","descriptors","descriptor","params","pluginService","PluginBase","Ticks","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","lineHeight","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","minor","major","labelsFromTicks","getLineValue","lineValue","getPixelForTick","computeTextSize","tick","parseFontOptions","globalDefaults","fontSize","family","parseLineHeight","toLineHeight","Scale","getTicks","_ticks","beforeUpdate","maxWidth","maxHeight","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","originalLabelWidth","labelWidth","cosRotation","sinRotation","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","scaleLabelLineHeight","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","innerWidth","pixel","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","shouldSkip","maxTicks","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","itemsToDraw","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","zeroLineIndex","tx1","ty1","tx2","ty2","x1","y1","x2","labelX","labelY","textAlign","textBaseline","labelYOffset","xLineValue","isLeft","labelXOffset","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","restore","translate","fillText","scaleLabelX","scaleLabelY","halfLineHeight","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","generators","linear","generationOptions","dataRange","spacing","stepSize","niceRange","niceMin","niceMax","numSpaces","logarithmic","tickVal","endExp","endSignificand","exp","significand","minNotZero","lastTick","tickValue","logDelta","tickString","numDecimal","toFixed","remain","toExponential","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","mergeOpacity","colorString","opacity","pushOrConcat","toPush","createTooltipItem","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","body","combinedBodyLength","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","vm","alignment","paddingAndSize","radiusAndPadding","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","positioners","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","fillRect","strokeRect","textColor","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","_lastActive","average","eventPosition","nearestElement","tp","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","globalOptionLineElements","lastDrawnIndex","currentVM","lineCap","xRange","errMargin","drawPoint","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","startCorner","cornerAt","corner","bounds","clearRect","roundedRect","rx","ry","rect","edgeLength","xOffset","yOffset","drawImage","SQRT2","sideSize","clip","flip","bezierCurveTo","drawRoundedRectangle","defaultValue","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","inputs","getContext","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","supportsEventListenerOptions","supports","eventListenerOptions","passive","createEvent","nativeEvent","fromNativeEvent","event","throttled","ticking","createResizer","resizer","createElement","cls","maxSize","cssText","className","innerHTML","expand","childNodes","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","classList","unwatchForRender","remove","addResizeListener","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","css","_style","setAttribute","getElementsByTagName","appendChild","createTextNode","_enabled","getElementById","removeAttribute","proxies","addEvent","removeEvent","basic","dom","implementation","filler","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","span","p0","d0","d1","afterDatasetsUpdate","$filler","beforeDatasetDraw","ci","boxWidth","lineDash","getBoxWidth","labelOpts","usePointStyle","Legend","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","drawLegendBox","isLineWidthZero","offSet","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","Title","lineCount","textSize","titleFont","titleX","titleY","createNewTitleBlockAndAttach","titleOpts","titleBlock","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","offsetAmt","valueCategory","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","fixedStepSize","LogarithmicScale","tickValues","newVal","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","measureLabelSize","determineLimits","fitWithPointLabels","plFont","largestPossibleRadius","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","drawingArea","setCenterPoint","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","LinearRadialScale","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","steps","UNITS","sorter","arrayUnique","hash","buildLookupTable","timestamps","distribution","table","prev","curr","lookup","lo","mid","i0","i1","skey","tkey","momentify","parser","parse","determineStepSize","capacity","interval","factor","determineUnit","minUnit","determineMajorUnit","generate","timeOpts","unitStepSize","majorTicksEnabled","first","computeOffsets","upper","lower","ticksFromTimestamps","majorUnit","TimeScale","timestamp","_horizontal","_table","_timestamps","displayFormats","getLabelCapacity","_unit","_majorUnit","_minorFormat","_majorFormat","_offsets","tooltipFormat","tickFormatFunction","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","exampleTime","exampleLabel","displayFormat"],"mappings":"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","sourcesContent":["/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.2.2\n *\n * Copyright 2016 Nick Downie\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n\n/**\n * Description of import into Moodle:\n *\n * - Download Chart.bundle.js from https://github.com/chartjs/Chart.js/releases.\n * - Copy Chart.bundle.js content to lib/amd/src/chartjs-lazy.js.\n * - Convert line endings to LF-Unix format.\n * - Keep these instructions to the file.\n * - Visit lib/tests/other/chartjstestpage.php to see if the library still works after the update.\n */\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n\t/* MIT license */\n var colorNames = require(5);\n\n module.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n }\n\n function getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/i,\n hex = /^#([a-fA-F0-9]{6})$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n }\n\n function getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n }\n\n function getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n }\n\n function getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n }\n\n function getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n }\n\n function getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n }\n\n// generators\n function hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n }\n\n function rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n }\n\n function rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n }\n\n function percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n }\n\n function percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n }\n\n function hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n }\n\n function hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n }\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\n function hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n }\n\n function keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n }\n\n// helpers\n function scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n }\n\n function hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n }\n\n\n//create a list of reverse color names\n var reverseNames = {};\n for (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n }\n\n},{\"5\":5}],2:[function(require,module,exports){\n\t/* MIT license */\n var convert = require(4);\n var string = require(1);\n\n var Color = function (obj) {\n if (obj instanceof Color) {\n return obj;\n }\n if (!(this instanceof Color)) {\n return new Color(obj);\n }\n\n this.valid = false;\n this.values = {\n rgb: [0, 0, 0],\n hsl: [0, 0, 0],\n hsv: [0, 0, 0],\n hwb: [0, 0, 0],\n cmyk: [0, 0, 0, 0],\n alpha: 1\n };\n\n // parse Color() argument\n var vals;\n if (typeof obj === 'string') {\n vals = string.getRgba(obj);\n if (vals) {\n this.setValues('rgb', vals);\n } else if (vals = string.getHsla(obj)) {\n this.setValues('hsl', vals);\n } else if (vals = string.getHwb(obj)) {\n this.setValues('hwb', vals);\n }\n } else if (typeof obj === 'object') {\n vals = obj;\n if (vals.r !== undefined || vals.red !== undefined) {\n this.setValues('rgb', vals);\n } else if (vals.l !== undefined || vals.lightness !== undefined) {\n this.setValues('hsl', vals);\n } else if (vals.v !== undefined || vals.value !== undefined) {\n this.setValues('hsv', vals);\n } else if (vals.w !== undefined || vals.whiteness !== undefined) {\n this.setValues('hwb', vals);\n } else if (vals.c !== undefined || vals.cyan !== undefined) {\n this.setValues('cmyk', vals);\n }\n }\n };\n\n Color.prototype = {\n isValid: function () {\n return this.valid;\n },\n rgb: function () {\n return this.setSpace('rgb', arguments);\n },\n hsl: function () {\n return this.setSpace('hsl', arguments);\n },\n hsv: function () {\n return this.setSpace('hsv', arguments);\n },\n hwb: function () {\n return this.setSpace('hwb', arguments);\n },\n cmyk: function () {\n return this.setSpace('cmyk', arguments);\n },\n\n rgbArray: function () {\n return this.values.rgb;\n },\n hslArray: function () {\n return this.values.hsl;\n },\n hsvArray: function () {\n return this.values.hsv;\n },\n hwbArray: function () {\n var values = this.values;\n if (values.alpha !== 1) {\n return values.hwb.concat([values.alpha]);\n }\n return values.hwb;\n },\n cmykArray: function () {\n return this.values.cmyk;\n },\n rgbaArray: function () {\n var values = this.values;\n return values.rgb.concat([values.alpha]);\n },\n hslaArray: function () {\n var values = this.values;\n return values.hsl.concat([values.alpha]);\n },\n alpha: function (val) {\n if (val === undefined) {\n return this.values.alpha;\n }\n this.setValues('alpha', val);\n return this;\n },\n\n red: function (val) {\n return this.setChannel('rgb', 0, val);\n },\n green: function (val) {\n return this.setChannel('rgb', 1, val);\n },\n blue: function (val) {\n return this.setChannel('rgb', 2, val);\n },\n hue: function (val) {\n if (val) {\n val %= 360;\n val = val < 0 ? 360 + val : val;\n }\n return this.setChannel('hsl', 0, val);\n },\n saturation: function (val) {\n return this.setChannel('hsl', 1, val);\n },\n lightness: function (val) {\n return this.setChannel('hsl', 2, val);\n },\n saturationv: function (val) {\n return this.setChannel('hsv', 1, val);\n },\n whiteness: function (val) {\n return this.setChannel('hwb', 1, val);\n },\n blackness: function (val) {\n return this.setChannel('hwb', 2, val);\n },\n value: function (val) {\n return this.setChannel('hsv', 2, val);\n },\n cyan: function (val) {\n return this.setChannel('cmyk', 0, val);\n },\n magenta: function (val) {\n return this.setChannel('cmyk', 1, val);\n },\n yellow: function (val) {\n return this.setChannel('cmyk', 2, val);\n },\n black: function (val) {\n return this.setChannel('cmyk', 3, val);\n },\n\n hexString: function () {\n return string.hexString(this.values.rgb);\n },\n rgbString: function () {\n return string.rgbString(this.values.rgb, this.values.alpha);\n },\n rgbaString: function () {\n return string.rgbaString(this.values.rgb, this.values.alpha);\n },\n percentString: function () {\n return string.percentString(this.values.rgb, this.values.alpha);\n },\n hslString: function () {\n return string.hslString(this.values.hsl, this.values.alpha);\n },\n hslaString: function () {\n return string.hslaString(this.values.hsl, this.values.alpha);\n },\n hwbString: function () {\n return string.hwbString(this.values.hwb, this.values.alpha);\n },\n keyword: function () {\n return string.keyword(this.values.rgb, this.values.alpha);\n },\n\n rgbNumber: function () {\n var rgb = this.values.rgb;\n return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n },\n\n luminosity: function () {\n // http://www.w3.org/TR/WCAG20/#relativeluminancedef\n var rgb = this.values.rgb;\n var lum = [];\n for (var i = 0; i < rgb.length; i++) {\n var chan = rgb[i] / 255;\n lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n }\n return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n },\n\n contrast: function (color2) {\n // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n var lum1 = this.luminosity();\n var lum2 = color2.luminosity();\n if (lum1 > lum2) {\n return (lum1 + 0.05) / (lum2 + 0.05);\n }\n return (lum2 + 0.05) / (lum1 + 0.05);\n },\n\n level: function (color2) {\n var contrastRatio = this.contrast(color2);\n if (contrastRatio >= 7.1) {\n return 'AAA';\n }\n\n return (contrastRatio >= 4.5) ? 'AA' : '';\n },\n\n dark: function () {\n // YIQ equation from http://24ways.org/2010/calculating-color-contrast\n var rgb = this.values.rgb;\n var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n return yiq < 128;\n },\n\n light: function () {\n return !this.dark();\n },\n\n negate: function () {\n var rgb = [];\n for (var i = 0; i < 3; i++) {\n rgb[i] = 255 - this.values.rgb[i];\n }\n this.setValues('rgb', rgb);\n return this;\n },\n\n lighten: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] += hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n\n darken: function (ratio) {\n var hsl = this.values.hsl;\n hsl[2] -= hsl[2] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n\n saturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] += hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n\n desaturate: function (ratio) {\n var hsl = this.values.hsl;\n hsl[1] -= hsl[1] * ratio;\n this.setValues('hsl', hsl);\n return this;\n },\n\n whiten: function (ratio) {\n var hwb = this.values.hwb;\n hwb[1] += hwb[1] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n\n blacken: function (ratio) {\n var hwb = this.values.hwb;\n hwb[2] += hwb[2] * ratio;\n this.setValues('hwb', hwb);\n return this;\n },\n\n greyscale: function () {\n var rgb = this.values.rgb;\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n this.setValues('rgb', [val, val, val]);\n return this;\n },\n\n clearer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha - (alpha * ratio));\n return this;\n },\n\n opaquer: function (ratio) {\n var alpha = this.values.alpha;\n this.setValues('alpha', alpha + (alpha * ratio));\n return this;\n },\n\n rotate: function (degrees) {\n var hsl = this.values.hsl;\n var hue = (hsl[0] + degrees) % 360;\n hsl[0] = hue < 0 ? 360 + hue : hue;\n this.setValues('hsl', hsl);\n return this;\n },\n\n /**\n * Ported from sass implementation in C\n * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n */\n mix: function (mixinColor, weight) {\n var color1 = this;\n var color2 = mixinColor;\n var p = weight === undefined ? 0.5 : weight;\n\n var w = 2 * p - 1;\n var a = color1.alpha() - color2.alpha();\n\n var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n var w2 = 1 - w1;\n\n return this\n .rgb(\n w1 * color1.red() + w2 * color2.red(),\n w1 * color1.green() + w2 * color2.green(),\n w1 * color1.blue() + w2 * color2.blue()\n )\n .alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n },\n\n toJSON: function () {\n return this.rgb();\n },\n\n clone: function () {\n // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n // making the final build way to big to embed in Chart.js. So let's do it manually,\n // assuming that values to clone are 1 dimension arrays containing only numbers,\n // except 'alpha' which is a number.\n var result = new Color();\n var source = this.values;\n var target = result.values;\n var value, type;\n\n for (var prop in source) {\n if (source.hasOwnProperty(prop)) {\n value = source[prop];\n type = ({}).toString.call(value);\n if (type === '[object Array]') {\n target[prop] = value.slice(0);\n } else if (type === '[object Number]') {\n target[prop] = value;\n } else {\n console.error('unexpected color value:', value);\n }\n }\n }\n\n return result;\n }\n };\n\n Color.prototype.spaces = {\n rgb: ['red', 'green', 'blue'],\n hsl: ['hue', 'saturation', 'lightness'],\n hsv: ['hue', 'saturation', 'value'],\n hwb: ['hue', 'whiteness', 'blackness'],\n cmyk: ['cyan', 'magenta', 'yellow', 'black']\n };\n\n Color.prototype.maxes = {\n rgb: [255, 255, 255],\n hsl: [360, 100, 100],\n hsv: [360, 100, 100],\n hwb: [360, 100, 100],\n cmyk: [100, 100, 100, 100]\n };\n\n Color.prototype.getValues = function (space) {\n var values = this.values;\n var vals = {};\n\n for (var i = 0; i < space.length; i++) {\n vals[space.charAt(i)] = values[space][i];\n }\n\n if (values.alpha !== 1) {\n vals.a = values.alpha;\n }\n\n // {r: 255, g: 255, b: 255, a: 0.4}\n return vals;\n };\n\n Color.prototype.setValues = function (space, vals) {\n var values = this.values;\n var spaces = this.spaces;\n var maxes = this.maxes;\n var alpha = 1;\n var i;\n\n this.valid = true;\n\n if (space === 'alpha') {\n alpha = vals;\n } else if (vals.length) {\n // [10, 10, 10]\n values[space] = vals.slice(0, space.length);\n alpha = vals[space.length];\n } else if (vals[space.charAt(0)] !== undefined) {\n // {r: 10, g: 10, b: 10}\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[space.charAt(i)];\n }\n\n alpha = vals.a;\n } else if (vals[spaces[space][0]] !== undefined) {\n // {red: 10, green: 10, blue: 10}\n var chans = spaces[space];\n\n for (i = 0; i < space.length; i++) {\n values[space][i] = vals[chans[i]];\n }\n\n alpha = vals.alpha;\n }\n\n values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n if (space === 'alpha') {\n return false;\n }\n\n var capped;\n\n // cap values of the space prior converting all values\n for (i = 0; i < space.length; i++) {\n capped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n values[space][i] = Math.round(capped);\n }\n\n // convert to all the other color spaces\n for (var sname in spaces) {\n if (sname !== space) {\n values[sname] = convert[space][sname](values[space]);\n }\n }\n\n return true;\n };\n\n Color.prototype.setSpace = function (space, args) {\n var vals = args[0];\n\n if (vals === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n\n // color.rgb(10, 10, 10)\n if (typeof vals === 'number') {\n vals = Array.prototype.slice.call(args);\n }\n\n this.setValues(space, vals);\n return this;\n };\n\n Color.prototype.setChannel = function (space, index, val) {\n var svalues = this.values[space];\n if (val === undefined) {\n // color.red()\n return svalues[index];\n } else if (val === svalues[index]) {\n // color.red(color.red())\n return this;\n }\n\n // color.red(100)\n svalues[index] = val;\n this.setValues(space, svalues);\n\n return this;\n };\n\n if (typeof window !== 'undefined') {\n window.Color = Color;\n }\n\n module.exports = Color;\n\n},{\"1\":1,\"4\":4}],3:[function(require,module,exports){\n\t/* MIT license */\n\n module.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n }\n\n\n function rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n }\n\n function rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n }\n\n function rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n }\n\n function rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n }\n\n function rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n }\n\n function rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n }\n\n function rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n }\n\n function rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n }\n\n function hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n }\n\n function hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n }\n\n function hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n }\n\n function hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n }\n\n function hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n }\n\n\n function hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n }\n\n function hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n }\n\n function hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n }\n\n function hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n }\n\n function hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n }\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\n function hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n }\n\n function hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n }\n\n function hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n }\n\n function hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n }\n\n function hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n }\n\n function cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n }\n\n function cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n }\n\n function cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n }\n\n function cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n }\n\n function cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n }\n\n\n function xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n }\n\n function xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n }\n\n function xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n }\n\n function lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n }\n\n function lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n }\n\n function lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n }\n\n function lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n }\n\n function lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n }\n\n function lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n }\n\n function keyword2rgb(keyword) {\n return cssKeywords[keyword];\n }\n\n function keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n }\n\n function keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n }\n\n function keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n }\n\n function keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n }\n\n function keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n }\n\n function keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n }\n\n var cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n };\n\n var reverseKeywords = {};\n for (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n }\n\n},{}],4:[function(require,module,exports){\n var conversions = require(3);\n\n var convert = function() {\n return new Converter();\n }\n\n for (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) {\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n\n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n }\n\n\n\t/* Converter does lazy conversion and caching */\n var Converter = function() {\n this.convs = {};\n };\n\n\t/* Either get the values for a space or\n\t set the values for a space, depending on args */\n Converter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args);\n }\n\n return this.setValues(space, values);\n };\n\n\t/* Set the values for a space, invalidating cache */\n Converter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n };\n\n\t/* Get the values for a space. If there's already\n\t a conversion for the space, fetch it, otherwise\n\t compute it */\n Converter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n };\n\n [\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n });\n\n module.exports = convert;\n},{\"3\":3}],5:[function(require,module,exports){\n 'use strict'\n\n module.exports = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n\n},{}],6:[function(require,module,exports){\n//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n ;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n }(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n var some$1 = some;\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n// Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n// compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var keys$1 = keys;\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n\n// MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n// format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n var indexOf$1 = indexOf;\n\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n }\n\n// FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n// ALIASES\n\n addUnitAlias('month', 'M');\n\n// PRIORITY\n\n addUnitPriority('month', 8);\n\n// PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n// LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n// MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n// FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\n addUnitAlias('year', 'y');\n\n// PRIORITIES\n\n addUnitPriority('year', 1);\n\n// PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n// HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n// HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n// MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n// start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n// FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n// PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n// HELPERS\n\n// LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n// MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n// FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n// PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n// HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n// LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n// MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n// FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n// ALIASES\n\n addUnitAlias('hour', 'h');\n\n// PRIORITY\n addUnitPriority('hour', 13);\n\n// PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n// LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n// internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n }\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n// returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys$1(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n// iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;\n\n// date and time from ref 2822 format\n function configFromRFC2822(config) {\n var string, match, dayFormat,\n dateFormat, timeFormat, tzFormat;\n var timezones = {\n ' GMT': ' +0000',\n ' EDT': ' -0400',\n ' EST': ' -0500',\n ' CDT': ' -0500',\n ' CST': ' -0600',\n ' MDT': ' -0600',\n ' MST': ' -0700',\n ' PDT': ' -0700',\n ' PST': ' -0800'\n };\n var military = 'YXWVUTSRQPONZABCDEFGHIKLM';\n var timezone, timezoneIndex;\n\n string = config._i\n .replace(/\\([^\\)]*\\)|[\\n\\t]/g, ' ') // Remove comments and folding whitespace\n .replace(/(\\s\\s+)/g, ' ') // Replace multiple-spaces with a single space\n .replace(/^\\s|\\s$/g, ''); // Remove leading and trailing spaces\n match = basicRfcRegex.exec(string);\n\n if (match) {\n dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';\n dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');\n timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');\n\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n if (match[1]) { // day of week given\n var momentDate = new Date(match[2]);\n var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];\n\n if (match[1].substr(0,3) !== momentDay) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return;\n }\n }\n\n switch (match[5].length) {\n case 2: // military\n if (timezoneIndex === 0) {\n timezone = ' +0000';\n } else {\n timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;\n timezone = ((timezoneIndex < 0) ? ' -' : ' +') +\n (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';\n }\n break;\n case 4: // Zone\n timezone = timezones[match[5]];\n break;\n default: // UT or +/-9999\n timezone = timezones[' GMT'];\n }\n match[5] = timezone;\n config._i = match.splice(1).join('');\n tzFormat = ' ZZ';\n config._f = dayFormat + dateFormat + timeFormat + tzFormat;\n configFromStringAndFormat(config);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n// date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n// Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n// constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n// date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n// date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n// TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n// FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n// PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n// ASP.NET json date format regex\n var aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\n var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n// TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString() {\n if (!this.isValid()) {\n return null;\n }\n var m = this.clone().utc();\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n\t\t\t\t/* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n\t\t\t\t/* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n\t\t\t\t/* falls through */\n case 'hour':\n this.minutes(0);\n\t\t\t\t/* falls through */\n case 'minute':\n this.seconds(0);\n\t\t\t\t/* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n// FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n// MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n// FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\n addUnitPriority('quarter', 7);\n\n// PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n// MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n// FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\n addUnitAlias('date', 'D');\n\n// PRIOROITY\n addUnitPriority('date', 9);\n\n// PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n// MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n// PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n// HELPERS\n\n// MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n// FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\n addUnitAlias('minute', 'm');\n\n// PRIORITY\n\n addUnitPriority('minute', 14);\n\n// PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\n addUnitAlias('second', 's');\n\n// PRIORITY\n\n addUnitPriority('second', 15);\n\n// PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n// ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n// PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n// MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n\n// Year\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n\n// Week Year\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\n proto.quarter = proto.quarters = getSetQuarter;\n\n// Month\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n\n// Week\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n\n// Hour\n proto.hour = proto.hours = getSetHour;\n\n// Minute\n proto.minute = proto.minutes = getSetMinute;\n\n// Second\n proto.second = proto.seconds = getSetSecond;\n\n// Millisecond\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n\n// Timezone\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n\n// Deprecations\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n// Month\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n// Side effect imports\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n// supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n// TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n// This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n// This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n// Deprecations\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n// Side effect imports\n\n\n hooks.version = '2.18.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n return hooks;\n\n })));\n\n},{}],7:[function(require,module,exports){\n /**\n * @namespace Chart\n */\n var Chart = require(29)();\n\n Chart.helpers = require(45);\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\n require(27)(Chart);\n\n Chart.defaults = require(25);\n Chart.Element = require(26);\n Chart.elements = require(40);\n Chart.Interaction = require(28);\n Chart.platform = require(48);\n\n require(31)(Chart);\n require(22)(Chart);\n require(23)(Chart);\n require(24)(Chart);\n require(30)(Chart);\n require(33)(Chart);\n require(32)(Chart);\n require(35)(Chart);\n\n require(54)(Chart);\n require(52)(Chart);\n require(53)(Chart);\n require(55)(Chart);\n require(56)(Chart);\n require(57)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\n require(15)(Chart);\n require(16)(Chart);\n require(17)(Chart);\n require(18)(Chart);\n require(19)(Chart);\n require(20)(Chart);\n require(21)(Chart);\n\n require(8)(Chart);\n require(9)(Chart);\n require(10)(Chart);\n require(11)(Chart);\n require(12)(Chart);\n require(13)(Chart);\n require(14)(Chart);\n\n// Loading built-it plugins\n var plugins = [];\n\n plugins.push(\n require(49)(Chart),\n require(50)(Chart),\n require(51)(Chart)\n );\n\n Chart.plugins.register(plugins);\n\n Chart.platform.initialize();\n\n module.exports = Chart;\n if (typeof window !== 'undefined') {\n window.Chart = Chart;\n }\n\n// DEPRECATIONS\n\n /**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\n Chart.canvasHelpers = Chart.helpers.canvas;\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"35\":35,\"40\":40,\"45\":45,\"48\":48,\"49\":49,\"50\":50,\"51\":51,\"52\":52,\"53\":53,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.Bar = function(context, config) {\n config.type = 'bar';\n\n return new Chart(context, config);\n };\n\n };\n\n},{}],9:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.Bubble = function(context, config) {\n config.type = 'bubble';\n return new Chart(context, config);\n };\n\n };\n\n},{}],10:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.Doughnut = function(context, config) {\n config.type = 'doughnut';\n\n return new Chart(context, config);\n };\n\n };\n\n},{}],11:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.Line = function(context, config) {\n config.type = 'line';\n\n return new Chart(context, config);\n };\n\n };\n\n},{}],12:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.PolarArea = function(context, config) {\n config.type = 'polarArea';\n\n return new Chart(context, config);\n };\n\n };\n\n},{}],13:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n Chart.Radar = function(context, config) {\n config.type = 'radar';\n\n return new Chart(context, config);\n };\n\n };\n\n},{}],14:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n Chart.Scatter = function(context, config) {\n config.type = 'scatter';\n return new Chart(context, config);\n };\n };\n\n},{}],15:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('bar', {\n hover: {\n mode: 'label'\n },\n\n scales: {\n xAxes: [{\n type: 'category',\n\n // Specific to Bar Controller\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n\n // offset settings\n offset: true,\n\n // grid line settings\n gridLines: {\n offsetGridLines: true\n }\n }],\n\n yAxes: [{\n type: 'linear'\n }]\n }\n });\n\n defaults._set('horizontalBar', {\n hover: {\n mode: 'index',\n axis: 'y'\n },\n\n scales: {\n xAxes: [{\n type: 'linear',\n position: 'bottom'\n }],\n\n yAxes: [{\n position: 'left',\n type: 'category',\n\n // Specific to Horizontal Bar Controller\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n\n // offset settings\n offset: true,\n\n // grid line settings\n gridLines: {\n offsetGridLines: true\n }\n }]\n },\n\n elements: {\n rectangle: {\n borderSkipped: 'left'\n }\n },\n\n tooltips: {\n callbacks: {\n title: function(item, data) {\n // Pick first xLabel for now\n var title = '';\n\n if (item.length > 0) {\n if (item[0].yLabel) {\n title = item[0].yLabel;\n } else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n title = data.labels[item[0].index];\n }\n }\n\n return title;\n },\n\n label: function(item, data) {\n var datasetLabel = data.datasets[item.datasetIndex].label || '';\n return datasetLabel + ': ' + item.xLabel;\n }\n },\n mode: 'index',\n axis: 'y'\n }\n });\n\n module.exports = function(Chart) {\n\n Chart.controllers.bar = Chart.DatasetController.extend({\n\n dataElementType: elements.Rectangle,\n\n initialize: function() {\n var me = this;\n var meta;\n\n Chart.DatasetController.prototype.initialize.apply(me, arguments);\n\n meta = me.getMeta();\n meta.stack = me.getDataset().stack;\n meta.bar = true;\n },\n\n update: function(reset) {\n var me = this;\n var rects = me.getMeta().data;\n var i, ilen;\n\n me._ruler = me.getRuler();\n\n for (i = 0, ilen = rects.length; i < ilen; ++i) {\n me.updateElement(rects[i], i, reset);\n }\n },\n\n updateElement: function(rectangle, index, reset) {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var dataset = me.getDataset();\n var custom = rectangle.custom || {};\n var rectangleOptions = chart.options.elements.rectangle;\n\n rectangle._xScale = me.getScaleForId(meta.xAxisID);\n rectangle._yScale = me.getScaleForId(meta.yAxisID);\n rectangle._datasetIndex = me.index;\n rectangle._index = index;\n\n rectangle._model = {\n datasetLabel: dataset.label,\n label: chart.data.labels[index],\n borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n };\n\n me.updateElementGeometry(rectangle, index, reset);\n\n rectangle.pivot();\n },\n\n /**\n * @private\n */\n updateElementGeometry: function(rectangle, index, reset) {\n var me = this;\n var model = rectangle._model;\n var vscale = me.getValueScale();\n var base = vscale.getBasePixel();\n var horizontal = vscale.isHorizontal();\n var ruler = me._ruler || me.getRuler();\n var vpixels = me.calculateBarValuePixels(me.index, index);\n var ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n model.horizontal = horizontal;\n model.base = reset ? base : vpixels.base;\n model.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n model.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n model.height = horizontal ? ipixels.size : undefined;\n model.width = horizontal ? undefined : ipixels.size;\n },\n\n /**\n * @private\n */\n getValueScaleId: function() {\n return this.getMeta().yAxisID;\n },\n\n /**\n * @private\n */\n getIndexScaleId: function() {\n return this.getMeta().xAxisID;\n },\n\n /**\n * @private\n */\n getValueScale: function() {\n return this.getScaleForId(this.getValueScaleId());\n },\n\n /**\n * @private\n */\n getIndexScale: function() {\n return this.getScaleForId(this.getIndexScaleId());\n },\n\n /**\n * Returns the effective number of stacks based on groups and bar visibility.\n * @private\n */\n getStackCount: function(last) {\n var me = this;\n var chart = me.chart;\n var scale = me.getIndexScale();\n var stacked = scale.options.stacked;\n var ilen = last === undefined ? chart.data.datasets.length : last + 1;\n var stacks = [];\n var i, meta;\n\n for (i = 0; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n if (meta.bar && chart.isDatasetVisible(i) &&\n (stacked === false ||\n (stacked === true && stacks.indexOf(meta.stack) === -1) ||\n (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n stacks.push(meta.stack);\n }\n }\n\n return stacks.length;\n },\n\n /**\n * Returns the stack index for the given dataset based on groups and bar visibility.\n * @private\n */\n getStackIndex: function(datasetIndex) {\n return this.getStackCount(datasetIndex) - 1;\n },\n\n /**\n * @private\n */\n getRuler: function() {\n var me = this;\n var scale = me.getIndexScale();\n var stackCount = me.getStackCount();\n var datasetIndex = me.index;\n var pixels = [];\n var isHorizontal = scale.isHorizontal();\n var start = isHorizontal ? scale.left : scale.top;\n var end = start + (isHorizontal ? scale.width : scale.height);\n var i, ilen;\n\n for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n pixels.push(scale.getPixelForValue(null, i, datasetIndex));\n }\n\n return {\n pixels: pixels,\n start: start,\n end: end,\n stackCount: stackCount,\n scale: scale\n };\n },\n\n /**\n * Note: pixel values are not clamped to the scale area.\n * @private\n */\n calculateBarValuePixels: function(datasetIndex, index) {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var scale = me.getValueScale();\n var datasets = chart.data.datasets;\n var value = scale.getRightValue(datasets[datasetIndex].data[index]);\n var stacked = scale.options.stacked;\n var stack = meta.stack;\n var start = 0;\n var i, imeta, ivalue, base, head, size;\n\n if (stacked || (stacked === undefined && stack !== undefined)) {\n for (i = 0; i < datasetIndex; ++i) {\n imeta = chart.getDatasetMeta(i);\n\n if (imeta.bar &&\n imeta.stack === stack &&\n imeta.controller.getValueScaleId() === scale.id &&\n chart.isDatasetVisible(i)) {\n\n ivalue = scale.getRightValue(datasets[i].data[index]);\n if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n start += ivalue;\n }\n }\n }\n }\n\n base = scale.getPixelForValue(start);\n head = scale.getPixelForValue(start + value);\n size = (head - base) / 2;\n\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2\n };\n },\n\n /**\n * @private\n */\n calculateBarIndexPixels: function(datasetIndex, index, ruler) {\n var me = this;\n var options = ruler.scale.options;\n var stackIndex = me.getStackIndex(datasetIndex);\n var pixels = ruler.pixels;\n var base = pixels[index];\n var length = pixels.length;\n var start = ruler.start;\n var end = ruler.end;\n var leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size;\n\n if (length === 1) {\n leftSampleSize = base > start ? base - start : end - base;\n rightSampleSize = base < end ? end - base : base - start;\n } else {\n if (index > 0) {\n leftSampleSize = (base - pixels[index - 1]) / 2;\n if (index === length - 1) {\n rightSampleSize = leftSampleSize;\n }\n }\n if (index < length - 1) {\n rightSampleSize = (pixels[index + 1] - base) / 2;\n if (index === 0) {\n leftSampleSize = rightSampleSize;\n }\n }\n }\n\n leftCategorySize = leftSampleSize * options.categoryPercentage;\n rightCategorySize = rightSampleSize * options.categoryPercentage;\n fullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount;\n size = fullBarSize * options.barPercentage;\n\n size = Math.min(\n helpers.valueOrDefault(options.barThickness, size),\n helpers.valueOrDefault(options.maxBarThickness, Infinity));\n\n base -= leftCategorySize;\n base += fullBarSize * stackIndex;\n base += (fullBarSize - size) / 2;\n\n return {\n size: size,\n base: base,\n head: base + size,\n center: base + size / 2\n };\n },\n\n draw: function() {\n var me = this;\n var chart = me.chart;\n var scale = me.getValueScale();\n var rects = me.getMeta().data;\n var dataset = me.getDataset();\n var ilen = rects.length;\n var i = 0;\n\n helpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n for (; i < ilen; ++i) {\n if (!isNaN(scale.getRightValue(dataset.data[i]))) {\n rects[i].draw();\n }\n }\n\n helpers.canvas.unclipArea(chart.ctx);\n },\n\n setHoverStyle: function(rectangle) {\n var dataset = this.chart.data.datasets[rectangle._datasetIndex];\n var index = rectangle._index;\n var custom = rectangle.custom || {};\n var model = rectangle._model;\n\n model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n },\n\n removeHoverStyle: function(rectangle) {\n var dataset = this.chart.data.datasets[rectangle._datasetIndex];\n var index = rectangle._index;\n var custom = rectangle.custom || {};\n var model = rectangle._model;\n var rectangleElementOptions = this.chart.options.elements.rectangle;\n\n model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);\n model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);\n model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);\n }\n });\n\n Chart.controllers.horizontalBar = Chart.controllers.bar.extend({\n /**\n * @private\n */\n getValueScaleId: function() {\n return this.getMeta().xAxisID;\n },\n\n /**\n * @private\n */\n getIndexScaleId: function() {\n return this.getMeta().yAxisID;\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],16:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('bubble', {\n hover: {\n mode: 'single'\n },\n\n scales: {\n xAxes: [{\n type: 'linear', // bubble should probably use a linear scale by default\n position: 'bottom',\n id: 'x-axis-0' // need an ID so datasets can reference the scale\n }],\n yAxes: [{\n type: 'linear',\n position: 'left',\n id: 'y-axis-0'\n }]\n },\n\n tooltips: {\n callbacks: {\n title: function() {\n // Title doesn't make sense for scatter since we format the data as a point\n return '';\n },\n label: function(item, data) {\n var datasetLabel = data.datasets[item.datasetIndex].label || '';\n var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n }\n }\n }\n });\n\n\n module.exports = function(Chart) {\n\n Chart.controllers.bubble = Chart.DatasetController.extend({\n /**\n * @protected\n */\n dataElementType: elements.Point,\n\n /**\n * @protected\n */\n update: function(reset) {\n var me = this;\n var meta = me.getMeta();\n var points = meta.data;\n\n // Update Points\n helpers.each(points, function(point, index) {\n me.updateElement(point, index, reset);\n });\n },\n\n /**\n * @protected\n */\n updateElement: function(point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var xScale = me.getScaleForId(meta.xAxisID);\n var yScale = me.getScaleForId(meta.yAxisID);\n var options = me._resolveElementOptions(point, index);\n var data = me.getDataset().data[index];\n var dsIndex = me.index;\n\n var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n point._xScale = xScale;\n point._yScale = yScale;\n point._options = options;\n point._datasetIndex = dsIndex;\n point._index = index;\n point._model = {\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n hitRadius: options.hitRadius,\n pointStyle: options.pointStyle,\n radius: reset ? 0 : options.radius,\n skip: custom.skip || isNaN(x) || isNaN(y),\n x: x,\n y: y,\n };\n\n point.pivot();\n },\n\n /**\n * @protected\n */\n setHoverStyle: function(point) {\n var model = point._model;\n var options = point._options;\n\n model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n model.radius = options.radius + options.hoverRadius;\n },\n\n /**\n * @protected\n */\n removeHoverStyle: function(point) {\n var model = point._model;\n var options = point._options;\n\n model.backgroundColor = options.backgroundColor;\n model.borderColor = options.borderColor;\n model.borderWidth = options.borderWidth;\n model.radius = options.radius;\n },\n\n /**\n * @private\n */\n _resolveElementOptions: function(point, index) {\n var me = this;\n var chart = me.chart;\n var datasets = chart.data.datasets;\n var dataset = datasets[me.index];\n var custom = point.custom || {};\n var options = chart.options.elements.point;\n var resolve = helpers.options.resolve;\n var data = dataset.data[index];\n var values = {};\n var i, ilen, key;\n\n // Scriptable options\n var context = {\n chart: chart,\n dataIndex: index,\n dataset: dataset,\n datasetIndex: me.index\n };\n\n var keys = [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'hoverBackgroundColor',\n 'hoverBorderColor',\n 'hoverBorderWidth',\n 'hoverRadius',\n 'hitRadius',\n 'pointStyle'\n ];\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n values[key] = resolve([\n custom[key],\n dataset[key],\n options[key]\n ], context, index);\n }\n\n // Custom radius resolution\n values.radius = resolve([\n custom.radius,\n data ? data.r : undefined,\n dataset.radius,\n options.radius\n ], context, index);\n\n return values;\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],17:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('doughnut', {\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n hover: {\n mode: 'single'\n },\n legendCallback: function(chart) {\n var text = [];\n text.push('<ul class=\"' + chart.id + '-legend\">');\n\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n\n if (datasets.length) {\n for (var i = 0; i < datasets[0].data.length; ++i) {\n text.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n if (labels[i]) {\n text.push(labels[i]);\n }\n text.push('</li>');\n }\n }\n\n text.push('</ul>');\n return text.join('');\n },\n legend: {\n labels: {\n generateLabels: function(chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function(label, i) {\n var meta = chart.getDatasetMeta(0);\n var ds = data.datasets[0];\n var arc = meta.data[i];\n var custom = arc && arc.custom || {};\n var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n var arcOpts = chart.options.elements.arc;\n var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n return {\n text: label,\n fillStyle: fill,\n strokeStyle: stroke,\n lineWidth: bw,\n hidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick: function(e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n // toggle visibility of index if exists\n if (meta.data[index]) {\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n }\n\n chart.update();\n }\n },\n\n // The percentage of the chart that we cut out of the middle.\n cutoutPercentage: 50,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: Math.PI * -0.5,\n\n // The total circumference of the chart.\n circumference: Math.PI * 2.0,\n\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function() {\n return '';\n },\n label: function(tooltipItem, data) {\n var dataLabel = data.labels[tooltipItem.index];\n var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n if (helpers.isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return dataLabel;\n }\n }\n }\n });\n\n defaults._set('pie', helpers.clone(defaults.doughnut));\n defaults._set('pie', {\n cutoutPercentage: 0\n });\n\n module.exports = function(Chart) {\n\n Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n dataElementType: elements.Arc,\n\n linkScales: helpers.noop,\n\n // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n getRingIndex: function(datasetIndex) {\n var ringIndex = 0;\n\n for (var j = 0; j < datasetIndex; ++j) {\n if (this.chart.isDatasetVisible(j)) {\n ++ringIndex;\n }\n }\n\n return ringIndex;\n },\n\n update: function(reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var arcOpts = opts.elements.arc;\n var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n var minSize = Math.min(availableWidth, availableHeight);\n var offset = {x: 0, y: 0};\n var meta = me.getMeta();\n var cutoutPercentage = opts.cutoutPercentage;\n var circumference = opts.circumference;\n\n // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n if (circumference < Math.PI * 2.0) {\n var startAngle = opts.rotation % (Math.PI * 2.0);\n startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n var endAngle = startAngle + circumference;\n var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n var cutout = cutoutPercentage / 100.0;\n var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n minSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n }\n\n chart.borderWidth = me.getMaxBorderWidth(meta.data);\n chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n chart.offsetX = offset.x * chart.outerRadius;\n chart.offsetY = offset.y * chart.outerRadius;\n\n meta.total = me.calculateTotal();\n\n me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n helpers.each(meta.data, function(arc, index) {\n me.updateElement(arc, index, reset);\n });\n },\n\n updateElement: function(arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var animationOpts = opts.animation;\n var centerX = (chartArea.left + chartArea.right) / 2;\n var centerY = (chartArea.top + chartArea.bottom) / 2;\n var startAngle = opts.rotation; // non reset case handled later\n var endAngle = opts.rotation; // non reset case handled later\n var dataset = me.getDataset();\n var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n helpers.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n\n // Desired view properties\n _model: {\n x: centerX + chart.offsetX,\n y: centerY + chart.offsetY,\n startAngle: startAngle,\n endAngle: endAngle,\n circumference: circumference,\n outerRadius: outerRadius,\n innerRadius: innerRadius,\n label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n }\n });\n\n var model = arc._model;\n // Resets the visual styles\n this.removeHoverStyle(arc);\n\n // Set correct angles if not resetting\n if (!reset || !animationOpts.animateRotate) {\n if (index === 0) {\n model.startAngle = opts.rotation;\n } else {\n model.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n }\n\n model.endAngle = model.startAngle + model.circumference;\n }\n\n arc.pivot();\n },\n\n removeHoverStyle: function(arc) {\n Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n },\n\n calculateTotal: function() {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var total = 0;\n var value;\n\n helpers.each(meta.data, function(element, index) {\n value = dataset.data[index];\n if (!isNaN(value) && !element.hidden) {\n total += Math.abs(value);\n }\n });\n\n\t\t\t\t/* if (total === 0) {\n\t\t\t\t total = NaN;\n\t\t\t\t }*/\n\n return total;\n },\n\n calculateCircumference: function(value) {\n var total = this.getMeta().total;\n if (total > 0 && !isNaN(value)) {\n return (Math.PI * 2.0) * (value / total);\n }\n return 0;\n },\n\n // gets the max border or hover width to properly scale pie charts\n getMaxBorderWidth: function(arcs) {\n var max = 0;\n var index = this.index;\n var length = arcs.length;\n var borderWidth;\n var hoverWidth;\n\n for (var i = 0; i < length; i++) {\n borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n max = borderWidth > max ? borderWidth : max;\n max = hoverWidth > max ? hoverWidth : max;\n }\n return max;\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],18:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('line', {\n showLines: true,\n spanGaps: false,\n\n hover: {\n mode: 'label'\n },\n\n scales: {\n xAxes: [{\n type: 'category',\n id: 'x-axis-0'\n }],\n yAxes: [{\n type: 'linear',\n id: 'y-axis-0'\n }]\n }\n });\n\n module.exports = function(Chart) {\n\n function lineEnabled(dataset, options) {\n return helpers.valueOrDefault(dataset.showLine, options.showLines);\n }\n\n Chart.controllers.line = Chart.DatasetController.extend({\n\n datasetElementType: elements.Line,\n\n dataElementType: elements.Point,\n\n update: function(reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data || [];\n var options = me.chart.options;\n var lineElementOptions = options.elements.line;\n var scale = me.getScaleForId(meta.yAxisID);\n var i, ilen, custom;\n var dataset = me.getDataset();\n var showLine = lineEnabled(dataset, options);\n\n // Update Line\n if (showLine) {\n custom = line.custom || {};\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n dataset.lineTension = dataset.tension;\n }\n\n // Utility\n line._scale = scale;\n line._datasetIndex = me.index;\n // Data\n line._children = points;\n // Model\n line._model = {\n // Appearance\n // The default behavior of lines is to break at null values, according\n // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n // This option gives lines the ability to span gaps\n spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n };\n\n line.pivot();\n }\n\n // Update Points\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n me.updateElement(points[i], i, reset);\n }\n\n if (showLine && line._model.tension !== 0) {\n me.updateBezierControlPoints();\n }\n\n // Now pivot the point for animation\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n points[i].pivot();\n }\n },\n\n getPointBackgroundColor: function(point, index) {\n var backgroundColor = this.chart.options.elements.point.backgroundColor;\n var dataset = this.getDataset();\n var custom = point.custom || {};\n\n if (custom.backgroundColor) {\n backgroundColor = custom.backgroundColor;\n } else if (dataset.pointBackgroundColor) {\n backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n } else if (dataset.backgroundColor) {\n backgroundColor = dataset.backgroundColor;\n }\n\n return backgroundColor;\n },\n\n getPointBorderColor: function(point, index) {\n var borderColor = this.chart.options.elements.point.borderColor;\n var dataset = this.getDataset();\n var custom = point.custom || {};\n\n if (custom.borderColor) {\n borderColor = custom.borderColor;\n } else if (dataset.pointBorderColor) {\n borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n } else if (dataset.borderColor) {\n borderColor = dataset.borderColor;\n }\n\n return borderColor;\n },\n\n getPointBorderWidth: function(point, index) {\n var borderWidth = this.chart.options.elements.point.borderWidth;\n var dataset = this.getDataset();\n var custom = point.custom || {};\n\n if (!isNaN(custom.borderWidth)) {\n borderWidth = custom.borderWidth;\n } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n } else if (!isNaN(dataset.borderWidth)) {\n borderWidth = dataset.borderWidth;\n }\n\n return borderWidth;\n },\n\n updateElement: function(point, index, reset) {\n var me = this;\n var meta = me.getMeta();\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var datasetIndex = me.index;\n var value = dataset.data[index];\n var yScale = me.getScaleForId(meta.yAxisID);\n var xScale = me.getScaleForId(meta.xAxisID);\n var pointOptions = me.chart.options.elements.point;\n var x, y;\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n dataset.pointRadius = dataset.radius;\n }\n if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n dataset.pointHitRadius = dataset.hitRadius;\n }\n\n x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n // Utility\n point._xScale = xScale;\n point._yScale = yScale;\n point._datasetIndex = datasetIndex;\n point._index = index;\n\n // Desired view properties\n point._model = {\n x: x,\n y: y,\n skip: custom.skip || isNaN(x) || isNaN(y),\n // Appearance\n radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n backgroundColor: me.getPointBackgroundColor(point, index),\n borderColor: me.getPointBorderColor(point, index),\n borderWidth: me.getPointBorderWidth(point, index),\n tension: meta.dataset._model ? meta.dataset._model.tension : 0,\n steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n // Tooltip\n hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n };\n },\n\n calculatePointY: function(value, index, datasetIndex) {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var yScale = me.getScaleForId(meta.yAxisID);\n var sumPos = 0;\n var sumNeg = 0;\n var i, ds, dsMeta;\n\n if (yScale.options.stacked) {\n for (i = 0; i < datasetIndex; i++) {\n ds = chart.data.datasets[i];\n dsMeta = chart.getDatasetMeta(i);\n if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n var stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n if (stackedRightValue < 0) {\n sumNeg += stackedRightValue || 0;\n } else {\n sumPos += stackedRightValue || 0;\n }\n }\n }\n\n var rightValue = Number(yScale.getRightValue(value));\n if (rightValue < 0) {\n return yScale.getPixelForValue(sumNeg + rightValue);\n }\n return yScale.getPixelForValue(sumPos + rightValue);\n }\n\n return yScale.getPixelForValue(value);\n },\n\n updateBezierControlPoints: function() {\n var me = this;\n var meta = me.getMeta();\n var area = me.chart.chartArea;\n var points = (meta.data || []);\n var i, ilen, point, model, controlPoints;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (meta.dataset._model.spanGaps) {\n points = points.filter(function(pt) {\n return !pt._model.skip;\n });\n }\n\n function capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n }\n\n if (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n helpers.splineCurveMonotone(points);\n } else {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n model = point._model;\n controlPoints = helpers.splineCurve(\n helpers.previousItem(points, i)._model,\n model,\n helpers.nextItem(points, i)._model,\n meta.dataset._model.tension\n );\n model.controlPointPreviousX = controlPoints.previous.x;\n model.controlPointPreviousY = controlPoints.previous.y;\n model.controlPointNextX = controlPoints.next.x;\n model.controlPointNextY = controlPoints.next.y;\n }\n }\n\n if (me.chart.options.elements.line.capBezierPoints) {\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n model = points[i]._model;\n model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n }\n }\n },\n\n draw: function() {\n var me = this;\n var chart = me.chart;\n var meta = me.getMeta();\n var points = meta.data || [];\n var area = chart.chartArea;\n var ilen = points.length;\n var i = 0;\n\n helpers.canvas.clipArea(chart.ctx, area);\n\n if (lineEnabled(me.getDataset(), chart.options)) {\n meta.dataset.draw();\n }\n\n helpers.canvas.unclipArea(chart.ctx);\n\n // Draw the points\n for (; i < ilen; ++i) {\n points[i].draw(area);\n }\n },\n\n setHoverStyle: function(point) {\n // Point\n var dataset = this.chart.data.datasets[point._datasetIndex];\n var index = point._index;\n var custom = point.custom || {};\n var model = point._model;\n\n model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n },\n\n removeHoverStyle: function(point) {\n var me = this;\n var dataset = me.chart.data.datasets[point._datasetIndex];\n var index = point._index;\n var custom = point.custom || {};\n var model = point._model;\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n dataset.pointRadius = dataset.radius;\n }\n\n model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius);\n model.backgroundColor = me.getPointBackgroundColor(point, index);\n model.borderColor = me.getPointBorderColor(point, index);\n model.borderWidth = me.getPointBorderWidth(point, index);\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],19:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('polarArea', {\n scale: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n gridLines: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n ticks: {\n beginAtZero: true\n }\n },\n\n // Boolean - Whether to animate the rotation of the chart\n animation: {\n animateRotate: true,\n animateScale: true\n },\n\n startAngle: -0.5 * Math.PI,\n legendCallback: function(chart) {\n var text = [];\n text.push('<ul class=\"' + chart.id + '-legend\">');\n\n var data = chart.data;\n var datasets = data.datasets;\n var labels = data.labels;\n\n if (datasets.length) {\n for (var i = 0; i < datasets[0].data.length; ++i) {\n text.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n if (labels[i]) {\n text.push(labels[i]);\n }\n text.push('</li>');\n }\n }\n\n text.push('</ul>');\n return text.join('');\n },\n legend: {\n labels: {\n generateLabels: function(chart) {\n var data = chart.data;\n if (data.labels.length && data.datasets.length) {\n return data.labels.map(function(label, i) {\n var meta = chart.getDatasetMeta(0);\n var ds = data.datasets[0];\n var arc = meta.data[i];\n var custom = arc.custom || {};\n var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n var arcOpts = chart.options.elements.arc;\n var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n return {\n text: label,\n fillStyle: fill,\n strokeStyle: stroke,\n lineWidth: bw,\n hidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick: function(e, legendItem) {\n var index = legendItem.index;\n var chart = this.chart;\n var i, ilen, meta;\n\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n meta = chart.getDatasetMeta(i);\n meta.data[index].hidden = !meta.data[index].hidden;\n }\n\n chart.update();\n }\n },\n\n // Need to override these to give a nice default\n tooltips: {\n callbacks: {\n title: function() {\n return '';\n },\n label: function(item, data) {\n return data.labels[item.index] + ': ' + item.yLabel;\n }\n }\n }\n });\n\n module.exports = function(Chart) {\n\n Chart.controllers.polarArea = Chart.DatasetController.extend({\n\n dataElementType: elements.Arc,\n\n linkScales: helpers.noop,\n\n update: function(reset) {\n var me = this;\n var chart = me.chart;\n var chartArea = chart.chartArea;\n var meta = me.getMeta();\n var opts = chart.options;\n var arcOpts = opts.elements.arc;\n var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n me.innerRadius = me.outerRadius - chart.radiusLength;\n\n meta.count = me.countVisibleElements();\n\n helpers.each(meta.data, function(arc, index) {\n me.updateElement(arc, index, reset);\n });\n },\n\n updateElement: function(arc, index, reset) {\n var me = this;\n var chart = me.chart;\n var dataset = me.getDataset();\n var opts = chart.options;\n var animationOpts = opts.animation;\n var scale = chart.scale;\n var labels = chart.data.labels;\n\n var circumference = me.calculateCircumference(dataset.data[index]);\n var centerX = scale.xCenter;\n var centerY = scale.yCenter;\n\n // If there is NaN data before us, we need to calculate the starting angle correctly.\n // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data\n var visibleCount = 0;\n var meta = me.getMeta();\n for (var i = 0; i < index; ++i) {\n if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {\n ++visibleCount;\n }\n }\n\n // var negHalfPI = -0.5 * Math.PI;\n var datasetStartAngle = opts.startAngle;\n var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n var startAngle = datasetStartAngle + (circumference * visibleCount);\n var endAngle = startAngle + (arc.hidden ? 0 : circumference);\n\n var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n helpers.extend(arc, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n _scale: scale,\n\n // Desired view properties\n _model: {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius: reset ? resetRadius : distance,\n startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n label: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n }\n });\n\n // Apply border and fill style\n me.removeHoverStyle(arc);\n\n arc.pivot();\n },\n\n removeHoverStyle: function(arc) {\n Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n },\n\n countVisibleElements: function() {\n var dataset = this.getDataset();\n var meta = this.getMeta();\n var count = 0;\n\n helpers.each(meta.data, function(element, index) {\n if (!isNaN(dataset.data[index]) && !element.hidden) {\n count++;\n }\n });\n\n return count;\n },\n\n calculateCircumference: function(value) {\n var count = this.getMeta().count;\n if (count > 0 && !isNaN(value)) {\n return (2 * Math.PI) / count;\n }\n return 0;\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],20:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('radar', {\n scale: {\n type: 'radialLinear'\n },\n elements: {\n line: {\n tension: 0 // no bezier in radar\n }\n }\n });\n\n module.exports = function(Chart) {\n\n Chart.controllers.radar = Chart.DatasetController.extend({\n\n datasetElementType: elements.Line,\n\n dataElementType: elements.Point,\n\n linkScales: helpers.noop,\n\n update: function(reset) {\n var me = this;\n var meta = me.getMeta();\n var line = meta.dataset;\n var points = meta.data;\n var custom = line.custom || {};\n var dataset = me.getDataset();\n var lineElementOptions = me.chart.options.elements.line;\n var scale = me.chart.scale;\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n dataset.lineTension = dataset.tension;\n }\n\n helpers.extend(meta.dataset, {\n // Utility\n _datasetIndex: me.index,\n _scale: scale,\n // Data\n _children: points,\n _loop: true,\n // Model\n _model: {\n // Appearance\n tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n }\n });\n\n meta.dataset.pivot();\n\n // Update Points\n helpers.each(points, function(point, index) {\n me.updateElement(point, index, reset);\n }, me);\n\n // Update bezier control points\n me.updateBezierControlPoints();\n },\n updateElement: function(point, index, reset) {\n var me = this;\n var custom = point.custom || {};\n var dataset = me.getDataset();\n var scale = me.chart.scale;\n var pointElementOptions = me.chart.options.elements.point;\n var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n // Compatibility: If the properties are defined with only the old name, use those values\n if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n dataset.pointRadius = dataset.radius;\n }\n if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n dataset.pointHitRadius = dataset.hitRadius;\n }\n\n helpers.extend(point, {\n // Utility\n _datasetIndex: me.index,\n _index: index,\n _scale: scale,\n\n // Desired view properties\n _model: {\n x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n y: reset ? scale.yCenter : pointPosition.y,\n\n // Appearance\n tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\n // Tooltip\n hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n }\n });\n\n point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n },\n updateBezierControlPoints: function() {\n var chartArea = this.chart.chartArea;\n var meta = this.getMeta();\n\n helpers.each(meta.data, function(point, index) {\n var model = point._model;\n var controlPoints = helpers.splineCurve(\n helpers.previousItem(meta.data, index, true)._model,\n model,\n helpers.nextItem(meta.data, index, true)._model,\n model.tension\n );\n\n // Prevent the bezier going outside of the bounds of the graph\n model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n // Now pivot the point for animation\n point.pivot();\n });\n },\n\n setHoverStyle: function(point) {\n // Point\n var dataset = this.chart.data.datasets[point._datasetIndex];\n var custom = point.custom || {};\n var index = point._index;\n var model = point._model;\n\n model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n },\n\n removeHoverStyle: function(point) {\n var dataset = this.chart.data.datasets[point._datasetIndex];\n var custom = point.custom || {};\n var index = point._index;\n var model = point._model;\n var pointElementOptions = this.chart.options.elements.point;\n\n model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius);\n model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);\n model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);\n model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);\n }\n });\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],21:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n\n defaults._set('scatter', {\n hover: {\n mode: 'single'\n },\n\n scales: {\n xAxes: [{\n id: 'x-axis-1', // need an ID so datasets can reference the scale\n type: 'linear', // scatter should not use a category axis\n position: 'bottom'\n }],\n yAxes: [{\n id: 'y-axis-1',\n type: 'linear',\n position: 'left'\n }]\n },\n\n showLines: false,\n\n tooltips: {\n callbacks: {\n title: function() {\n return ''; // doesn't make sense for scatter since data are formatted as a point\n },\n label: function(item) {\n return '(' + item.xLabel + ', ' + item.yLabel + ')';\n }\n }\n }\n });\n\n module.exports = function(Chart) {\n\n // Scatter charts use line controllers\n Chart.controllers.scatter = Chart.controllers.line;\n\n };\n\n},{\"25\":25}],22:[function(require,module,exports){\n\t/* global window: false */\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n animation: {\n duration: 1000,\n easing: 'easeOutQuart',\n onProgress: helpers.noop,\n onComplete: helpers.noop\n }\n });\n\n module.exports = function(Chart) {\n\n Chart.Animation = Element.extend({\n chart: null, // the animation associated chart instance\n currentStep: 0, // the current animation step\n numSteps: 60, // default number of steps\n easing: '', // the easing to use for this animation\n render: null, // render function used by the animation service\n\n onAnimationProgress: null, // user specified callback to fire on each step of the animation\n onAnimationComplete: null, // user specified callback to fire when the animation finishes\n });\n\n Chart.animationService = {\n frameDuration: 17,\n animations: [],\n dropFrames: 0,\n request: null,\n\n /**\n * @param {Chart} chart - The chart to animate.\n * @param {Chart.Animation} animation - The animation that we will animate.\n * @param {Number} duration - The animation duration in ms.\n * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n */\n addAnimation: function(chart, animation, duration, lazy) {\n var animations = this.animations;\n var i, ilen;\n\n animation.chart = chart;\n\n if (!lazy) {\n chart.animating = true;\n }\n\n for (i = 0, ilen = animations.length; i < ilen; ++i) {\n if (animations[i].chart === chart) {\n animations[i] = animation;\n return;\n }\n }\n\n animations.push(animation);\n\n // If there are no animations queued, manually kickstart a digest, for lack of a better word\n if (animations.length === 1) {\n this.requestAnimationFrame();\n }\n },\n\n cancelAnimation: function(chart) {\n var index = helpers.findIndex(this.animations, function(animation) {\n return animation.chart === chart;\n });\n\n if (index !== -1) {\n this.animations.splice(index, 1);\n chart.animating = false;\n }\n },\n\n requestAnimationFrame: function() {\n var me = this;\n if (me.request === null) {\n // Skip animation frame requests until the active one is executed.\n // This can happen when processing mouse events, e.g. 'mousemove'\n // and 'mouseout' events will trigger multiple renders.\n me.request = helpers.requestAnimFrame.call(window, function() {\n me.request = null;\n me.startDigest();\n });\n }\n },\n\n /**\n * @private\n */\n startDigest: function() {\n var me = this;\n var startTime = Date.now();\n var framesToDrop = 0;\n\n if (me.dropFrames > 1) {\n framesToDrop = Math.floor(me.dropFrames);\n me.dropFrames = me.dropFrames % 1;\n }\n\n me.advance(1 + framesToDrop);\n\n var endTime = Date.now();\n\n me.dropFrames += (endTime - startTime) / me.frameDuration;\n\n // Do we have more stuff to animate?\n if (me.animations.length > 0) {\n me.requestAnimationFrame();\n }\n },\n\n /**\n * @private\n */\n advance: function(count) {\n var animations = this.animations;\n var animation, chart;\n var i = 0;\n\n while (i < animations.length) {\n animation = animations[i];\n chart = animation.chart;\n\n animation.currentStep = (animation.currentStep || 0) + count;\n animation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n helpers.callback(animation.render, [chart, animation], chart);\n helpers.callback(animation.onAnimationProgress, [animation], chart);\n\n if (animation.currentStep >= animation.numSteps) {\n helpers.callback(animation.onAnimationComplete, [animation], chart);\n chart.animating = false;\n animations.splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n };\n\n /**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\n Object.defineProperty(Chart.Animation.prototype, 'animationObject', {\n get: function() {\n return this;\n }\n });\n\n /**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\n Object.defineProperty(Chart.Animation.prototype, 'chartInstance', {\n get: function() {\n return this.chart;\n },\n set: function(value) {\n this.chart = value;\n }\n });\n\n };\n\n},{\"25\":25,\"26\":26,\"45\":45}],23:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var helpers = require(45);\n var Interaction = require(28);\n var platform = require(48);\n\n module.exports = function(Chart) {\n var plugins = Chart.plugins;\n\n // Create a dictionary of chart types, to allow for extension of existing types\n Chart.types = {};\n\n // Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n // Destroy method on the chart will remove the instance of the chart from this reference.\n Chart.instances = {};\n\n // Controllers available for dataset visualization eg. bar, line, slice, etc.\n Chart.controllers = {};\n\n /**\n * Initializes the given config with global and chart default values.\n */\n function initConfig(config) {\n config = config || {};\n\n // Do NOT use configMerge() for the data object because this method merges arrays\n // and so would change references to labels and datasets, preventing data updates.\n var data = config.data = config.data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n\n config.options = helpers.configMerge(\n defaults.global,\n defaults[config.type],\n config.options || {});\n\n return config;\n }\n\n /**\n * Updates the config of the chart\n * @param chart {Chart} chart to update the options for\n */\n function updateConfig(chart) {\n var newOptions = chart.options;\n\n // Update Scale(s) with options\n if (newOptions.scale) {\n chart.scale.options = newOptions.scale;\n } else if (newOptions.scales) {\n newOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) {\n chart.scales[scaleOptions.id].options = scaleOptions;\n });\n }\n\n // Tooltip\n chart.tooltip._options = newOptions.tooltips;\n }\n\n function positionIsHorizontal(position) {\n return position === 'top' || position === 'bottom';\n }\n\n helpers.extend(Chart.prototype, /** @lends Chart */ {\n /**\n * @private\n */\n construct: function(item, config) {\n var me = this;\n\n config = initConfig(config);\n\n var context = platform.acquireContext(item, config);\n var canvas = context && context.canvas;\n var height = canvas && canvas.height;\n var width = canvas && canvas.width;\n\n me.id = helpers.uid();\n me.ctx = context;\n me.canvas = canvas;\n me.config = config;\n me.width = width;\n me.height = height;\n me.aspectRatio = height ? width / height : null;\n me.options = config.options;\n me._bufferedRender = false;\n\n /**\n * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n * the \"instance\" still need to be defined since it might be called from plugins.\n * @prop Chart#chart\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\n me.chart = me;\n me.controller = me; // chart.chart.controller #inception\n\n // Add the chart instance to the global namespace\n Chart.instances[me.id] = me;\n\n // Define alias to the config data: `chart.data === chart.config.data`\n Object.defineProperty(me, 'data', {\n get: function() {\n return me.config.data;\n },\n set: function(value) {\n me.config.data = value;\n }\n });\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n me.initialize();\n me.update();\n },\n\n /**\n * @private\n */\n initialize: function() {\n var me = this;\n\n // Before init plugin notification\n plugins.notify(me, 'beforeInit');\n\n helpers.retinaScale(me, me.options.devicePixelRatio);\n\n me.bindEvents();\n\n if (me.options.responsive) {\n // Initial resize before chart draws (must be silent to preserve initial animations).\n me.resize(true);\n }\n\n // Make sure scales have IDs and are built before we build any controllers.\n me.ensureScalesHaveIDs();\n me.buildScales();\n me.initToolTip();\n\n // After init plugin notification\n plugins.notify(me, 'afterInit');\n\n return me;\n },\n\n clear: function() {\n helpers.canvas.clear(this);\n return this;\n },\n\n stop: function() {\n // Stops any current animation loop occurring\n Chart.animationService.cancelAnimation(this);\n return this;\n },\n\n resize: function(silent) {\n var me = this;\n var options = me.options;\n var canvas = me.canvas;\n var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n // the canvas render width and height will be casted to integers so make sure that\n // the canvas display style uses the same integer values to avoid blurring effect.\n\n // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased\n var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n if (me.width === newWidth && me.height === newHeight) {\n return;\n }\n\n canvas.width = me.width = newWidth;\n canvas.height = me.height = newHeight;\n canvas.style.width = newWidth + 'px';\n canvas.style.height = newHeight + 'px';\n\n helpers.retinaScale(me, options.devicePixelRatio);\n\n if (!silent) {\n // Notify any plugins about the resize\n var newSize = {width: newWidth, height: newHeight};\n plugins.notify(me, 'resize', [newSize]);\n\n // Notify of resize\n if (me.options.onResize) {\n me.options.onResize(me, newSize);\n }\n\n me.stop();\n me.update(me.options.responsiveAnimationDuration);\n }\n },\n\n ensureScalesHaveIDs: function() {\n var options = this.options;\n var scalesOptions = options.scales || {};\n var scaleOptions = options.scale;\n\n helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n });\n\n helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n });\n\n if (scaleOptions) {\n scaleOptions.id = scaleOptions.id || 'scale';\n }\n },\n\n /**\n * Builds a map of scale ID to scale object for future lookup.\n */\n buildScales: function() {\n var me = this;\n var options = me.options;\n var scales = me.scales = {};\n var items = [];\n\n if (options.scales) {\n items = items.concat(\n (options.scales.xAxes || []).map(function(xAxisOptions) {\n return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n }),\n (options.scales.yAxes || []).map(function(yAxisOptions) {\n return {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n })\n );\n }\n\n if (options.scale) {\n items.push({\n options: options.scale,\n dtype: 'radialLinear',\n isDefault: true,\n dposition: 'chartArea'\n });\n }\n\n helpers.each(items, function(item) {\n var scaleOptions = item.options;\n var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n var scaleClass = Chart.scaleService.getScaleConstructor(scaleType);\n if (!scaleClass) {\n return;\n }\n\n if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n var scale = new scaleClass({\n id: scaleOptions.id,\n options: scaleOptions,\n ctx: me.ctx,\n chart: me\n });\n\n scales[scale.id] = scale;\n scale.mergeTicksOptions();\n\n // TODO(SB): I think we should be able to remove this custom case (options.scale)\n // and consider it as a regular scale part of the \"scales\"\" map only! This would\n // make the logic easier and remove some useless? custom code.\n if (item.isDefault) {\n me.scale = scale;\n }\n });\n\n Chart.scaleService.addScalesToLayout(this);\n },\n\n buildOrUpdateControllers: function() {\n var me = this;\n var types = [];\n var newControllers = [];\n\n helpers.each(me.data.datasets, function(dataset, datasetIndex) {\n var meta = me.getDatasetMeta(datasetIndex);\n var type = dataset.type || me.config.type;\n\n if (meta.type && meta.type !== type) {\n me.destroyDatasetMeta(datasetIndex);\n meta = me.getDatasetMeta(datasetIndex);\n }\n meta.type = type;\n\n types.push(meta.type);\n\n if (meta.controller) {\n meta.controller.updateIndex(datasetIndex);\n } else {\n var ControllerClass = Chart.controllers[meta.type];\n if (ControllerClass === undefined) {\n throw new Error('\"' + meta.type + '\" is not a chart type.');\n }\n\n meta.controller = new ControllerClass(me, datasetIndex);\n newControllers.push(meta.controller);\n }\n }, me);\n\n return newControllers;\n },\n\n /**\n * Reset the elements of all datasets\n * @private\n */\n resetElements: function() {\n var me = this;\n helpers.each(me.data.datasets, function(dataset, datasetIndex) {\n me.getDatasetMeta(datasetIndex).controller.reset();\n }, me);\n },\n\n /**\n * Resets the chart back to it's state before the initial animation\n */\n reset: function() {\n this.resetElements();\n this.tooltip.initialize();\n },\n\n update: function(config) {\n var me = this;\n\n if (!config || typeof config !== 'object') {\n // backwards compatibility\n config = {\n duration: config,\n lazy: arguments[1]\n };\n }\n\n updateConfig(me);\n\n if (plugins.notify(me, 'beforeUpdate') === false) {\n return;\n }\n\n // In case the entire data object changed\n me.tooltip._data = me.data;\n\n // Make sure dataset controllers are updated and new controllers are reset\n var newControllers = me.buildOrUpdateControllers();\n\n // Make sure all dataset controllers have correct meta data counts\n helpers.each(me.data.datasets, function(dataset, datasetIndex) {\n me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n }, me);\n\n me.updateLayout();\n\n // Can only reset the new controllers after the scales have been updated\n helpers.each(newControllers, function(controller) {\n controller.reset();\n });\n\n me.updateDatasets();\n\n // Do this before render so that any plugins that need final scale updates can use it\n plugins.notify(me, 'afterUpdate');\n\n if (me._bufferedRender) {\n me._bufferedRequest = {\n duration: config.duration,\n easing: config.easing,\n lazy: config.lazy\n };\n } else {\n me.render(config);\n }\n },\n\n /**\n * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n * hook, in which case, plugins will not be called on `afterLayout`.\n * @private\n */\n updateLayout: function() {\n var me = this;\n\n if (plugins.notify(me, 'beforeLayout') === false) {\n return;\n }\n\n Chart.layoutService.update(this, this.width, this.height);\n\n /**\n * Provided for backward compatibility, use `afterLayout` instead.\n * @method IPlugin#afterScaleUpdate\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\n plugins.notify(me, 'afterScaleUpdate');\n plugins.notify(me, 'afterLayout');\n },\n\n /**\n * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n * @private\n */\n updateDatasets: function() {\n var me = this;\n\n if (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n return;\n }\n\n for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me.updateDataset(i);\n }\n\n plugins.notify(me, 'afterDatasetsUpdate');\n },\n\n /**\n * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n * @private\n */\n updateDataset: function(index) {\n var me = this;\n var meta = me.getDatasetMeta(index);\n var args = {\n meta: meta,\n index: index\n };\n\n if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n return;\n }\n\n meta.controller.update();\n\n plugins.notify(me, 'afterDatasetUpdate', [args]);\n },\n\n render: function(config) {\n var me = this;\n\n if (!config || typeof config !== 'object') {\n // backwards compatibility\n config = {\n duration: config,\n lazy: arguments[1]\n };\n }\n\n var duration = config.duration;\n var lazy = config.lazy;\n\n if (plugins.notify(me, 'beforeRender') === false) {\n return;\n }\n\n var animationOptions = me.options.animation;\n var onComplete = function(animation) {\n plugins.notify(me, 'afterRender');\n helpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n };\n\n if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n var animation = new Chart.Animation({\n numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n easing: config.easing || animationOptions.easing,\n\n render: function(chart, animationObject) {\n var easingFunction = helpers.easing.effects[animationObject.easing];\n var currentStep = animationObject.currentStep;\n var stepDecimal = currentStep / animationObject.numSteps;\n\n chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n },\n\n onAnimationProgress: animationOptions.onProgress,\n onAnimationComplete: onComplete\n });\n\n Chart.animationService.addAnimation(me, animation, duration, lazy);\n } else {\n me.draw();\n\n // See https://github.com/chartjs/Chart.js/issues/3781\n onComplete(new Chart.Animation({numSteps: 0, chart: me}));\n }\n\n return me;\n },\n\n draw: function(easingValue) {\n var me = this;\n\n me.clear();\n\n if (helpers.isNullOrUndef(easingValue)) {\n easingValue = 1;\n }\n\n me.transition(easingValue);\n\n if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n return;\n }\n\n // Draw all the scales\n helpers.each(me.boxes, function(box) {\n box.draw(me.chartArea);\n }, me);\n\n if (me.scale) {\n me.scale.draw();\n }\n\n me.drawDatasets(easingValue);\n\n // Finally draw the tooltip\n me.tooltip.draw();\n\n plugins.notify(me, 'afterDraw', [easingValue]);\n },\n\n /**\n * @private\n */\n transition: function(easingValue) {\n var me = this;\n\n for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n if (me.isDatasetVisible(i)) {\n me.getDatasetMeta(i).controller.transition(easingValue);\n }\n }\n\n me.tooltip.transition(easingValue);\n },\n\n /**\n * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n * @private\n */\n drawDatasets: function(easingValue) {\n var me = this;\n\n if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n return;\n }\n\n // Draw datasets reversed to support proper line stacking\n for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n if (me.isDatasetVisible(i)) {\n me.drawDataset(i, easingValue);\n }\n }\n\n plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n },\n\n /**\n * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n * @private\n */\n drawDataset: function(index, easingValue) {\n var me = this;\n var meta = me.getDatasetMeta(index);\n var args = {\n meta: meta,\n index: index,\n easingValue: easingValue\n };\n\n if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n return;\n }\n\n meta.controller.draw(easingValue);\n\n plugins.notify(me, 'afterDatasetDraw', [args]);\n },\n\n // Get the single element that was clicked on\n // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n getElementAtEvent: function(e) {\n return Interaction.modes.single(this, e);\n },\n\n getElementsAtEvent: function(e) {\n return Interaction.modes.label(this, e, {intersect: true});\n },\n\n getElementsAtXAxis: function(e) {\n return Interaction.modes['x-axis'](this, e, {intersect: true});\n },\n\n getElementsAtEventForMode: function(e, mode, options) {\n var method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options);\n }\n\n return [];\n },\n\n getDatasetAtEvent: function(e) {\n return Interaction.modes.dataset(this, e, {intersect: true});\n },\n\n getDatasetMeta: function(datasetIndex) {\n var me = this;\n var dataset = me.data.datasets[datasetIndex];\n if (!dataset._meta) {\n dataset._meta = {};\n }\n\n var meta = dataset._meta[me.id];\n if (!meta) {\n meta = dataset._meta[me.id] = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null\n };\n }\n\n return meta;\n },\n\n getVisibleDatasetCount: function() {\n var count = 0;\n for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n if (this.isDatasetVisible(i)) {\n count++;\n }\n }\n return count;\n },\n\n isDatasetVisible: function(datasetIndex) {\n var meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n },\n\n generateLegend: function() {\n return this.options.legendCallback(this);\n },\n\n /**\n * @private\n */\n destroyDatasetMeta: function(datasetIndex) {\n var id = this.id;\n var dataset = this.data.datasets[datasetIndex];\n var meta = dataset._meta && dataset._meta[id];\n\n if (meta) {\n meta.controller.destroy();\n delete dataset._meta[id];\n }\n },\n\n destroy: function() {\n var me = this;\n var canvas = me.canvas;\n var i, ilen;\n\n me.stop();\n\n // dataset controllers need to cleanup associated data\n for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me.destroyDatasetMeta(i);\n }\n\n if (canvas) {\n me.unbindEvents();\n helpers.canvas.clear(me);\n platform.releaseContext(me.ctx);\n me.canvas = null;\n me.ctx = null;\n }\n\n plugins.notify(me, 'destroy');\n\n delete Chart.instances[me.id];\n },\n\n toBase64Image: function() {\n return this.canvas.toDataURL.apply(this.canvas, arguments);\n },\n\n initToolTip: function() {\n var me = this;\n me.tooltip = new Chart.Tooltip({\n _chart: me,\n _chartInstance: me, // deprecated, backward compatibility\n _data: me.data,\n _options: me.options.tooltips\n }, me);\n },\n\n /**\n * @private\n */\n bindEvents: function() {\n var me = this;\n var listeners = me._listeners = {};\n var listener = function() {\n me.eventHandler.apply(me, arguments);\n };\n\n helpers.each(me.options.events, function(type) {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n });\n\n // Elements used to detect size change should not be injected for non responsive charts.\n // See https://github.com/chartjs/Chart.js/issues/2210\n if (me.options.responsive) {\n listener = function() {\n me.resize();\n };\n\n platform.addEventListener(me, 'resize', listener);\n listeners.resize = listener;\n }\n },\n\n /**\n * @private\n */\n unbindEvents: function() {\n var me = this;\n var listeners = me._listeners;\n if (!listeners) {\n return;\n }\n\n delete me._listeners;\n helpers.each(listeners, function(listener, type) {\n platform.removeEventListener(me, type, listener);\n });\n },\n\n updateHoverStyle: function(elements, mode, enabled) {\n var method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n var element, i, ilen;\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n element = elements[i];\n if (element) {\n this.getDatasetMeta(element._datasetIndex).controller[method](element);\n }\n }\n },\n\n /**\n * @private\n */\n eventHandler: function(e) {\n var me = this;\n var tooltip = me.tooltip;\n\n if (plugins.notify(me, 'beforeEvent', [e]) === false) {\n return;\n }\n\n // Buffer any update calls so that renders do not occur\n me._bufferedRender = true;\n me._bufferedRequest = null;\n\n var changed = me.handleEvent(e);\n changed |= tooltip && tooltip.handleEvent(e);\n\n plugins.notify(me, 'afterEvent', [e]);\n\n var bufferedRequest = me._bufferedRequest;\n if (bufferedRequest) {\n // If we have an update that was triggered, we need to do a normal render\n me.render(bufferedRequest);\n } else if (changed && !me.animating) {\n // If entering, leaving, or changing elements, animate the change via pivot\n me.stop();\n\n // We only need to render at this point. Updating will cause scales to be\n // recomputed generating flicker & using more memory than necessary.\n me.render(me.options.hover.animationDuration, true);\n }\n\n me._bufferedRender = false;\n me._bufferedRequest = null;\n\n return me;\n },\n\n /**\n * Handle an event\n * @private\n * @param {IEvent} event the event to handle\n * @return {Boolean} true if the chart needs to re-render\n */\n handleEvent: function(e) {\n var me = this;\n var options = me.options || {};\n var hoverOptions = options.hover;\n var changed = false;\n\n me.lastActive = me.lastActive || [];\n\n // Find Active Elements for hover and tooltips\n if (e.type === 'mouseout') {\n me.active = [];\n } else {\n me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n }\n\n // Invoke onHover hook\n // Need to call with native event here to not break backwards compatibility\n helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n if (e.type === 'mouseup' || e.type === 'click') {\n if (options.onClick) {\n // Use e.native here for backwards compatibility\n options.onClick.call(me, e.native, me.active);\n }\n }\n\n // Remove styling for last active (even if it may still be active)\n if (me.lastActive.length) {\n me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n }\n\n // Built in hover styling\n if (me.active.length && hoverOptions.mode) {\n me.updateHoverStyle(me.active, hoverOptions.mode, true);\n }\n\n changed = !helpers.arrayEquals(me.active, me.lastActive);\n\n // Remember Last Actives\n me.lastActive = me.active;\n\n return changed;\n }\n });\n\n /**\n * Provided for backward compatibility, use Chart instead.\n * @class Chart.Controller\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\n Chart.Controller = Chart;\n };\n\n},{\"25\":25,\"28\":28,\"45\":45,\"48\":48}],24:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n\n module.exports = function(Chart) {\n\n var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n /**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\n function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach(function(key) {\n var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n var base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value: function() {\n var args = Array.prototype.slice.call(arguments);\n var res = base.apply(this, args);\n\n helpers.each(array._chartjs.listeners, function(object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n\n return res;\n }\n });\n });\n }\n\n /**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\n function unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach(function(key) {\n delete array[key];\n });\n\n delete array._chartjs;\n }\n\n // Base class for all dataset controllers (line, bar, etc)\n Chart.DatasetController = function(chart, datasetIndex) {\n this.initialize(chart, datasetIndex);\n };\n\n helpers.extend(Chart.DatasetController.prototype, {\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n * @type {Chart.core.element}\n */\n datasetElementType: null,\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.Point).\n * @type {Chart.core.element}\n */\n dataElementType: null,\n\n initialize: function(chart, datasetIndex) {\n var me = this;\n me.chart = chart;\n me.index = datasetIndex;\n me.linkScales();\n me.addElements();\n },\n\n updateIndex: function(datasetIndex) {\n this.index = datasetIndex;\n },\n\n linkScales: function() {\n var me = this;\n var meta = me.getMeta();\n var dataset = me.getDataset();\n\n if (meta.xAxisID === null) {\n meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n }\n if (meta.yAxisID === null) {\n meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n }\n },\n\n getDataset: function() {\n return this.chart.data.datasets[this.index];\n },\n\n getMeta: function() {\n return this.chart.getDatasetMeta(this.index);\n },\n\n getScaleForId: function(scaleID) {\n return this.chart.scales[scaleID];\n },\n\n reset: function() {\n this.update(true);\n },\n\n /**\n * @private\n */\n destroy: function() {\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n },\n\n createMetaDataset: function() {\n var me = this;\n var type = me.datasetElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index\n });\n },\n\n createMetaData: function(index) {\n var me = this;\n var type = me.dataElementType;\n return type && new type({\n _chart: me.chart,\n _datasetIndex: me.index,\n _index: index\n });\n },\n\n addElements: function() {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data || [];\n var metaData = meta.data;\n var i, ilen;\n\n for (i = 0, ilen = data.length; i < ilen; ++i) {\n metaData[i] = metaData[i] || me.createMetaData(i);\n }\n\n meta.dataset = meta.dataset || me.createMetaDataset();\n },\n\n addElementAndReset: function(index) {\n var element = this.createMetaData(index);\n this.getMeta().data.splice(index, 0, element);\n this.updateElement(element, index, true);\n },\n\n buildOrUpdateElements: function() {\n var me = this;\n var dataset = me.getDataset();\n var data = dataset.data || (dataset.data = []);\n\n // In order to correctly handle data addition/deletion animation (an thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal meta data accordingly.\n if (me._data !== data) {\n if (me._data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(me._data, me);\n }\n\n listenArrayEvents(data, me);\n me._data = data;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n me.resyncElements();\n },\n\n update: helpers.noop,\n\n transition: function(easingValue) {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n\n for (; i < ilen; ++i) {\n elements[i].transition(easingValue);\n }\n\n if (meta.dataset) {\n meta.dataset.transition(easingValue);\n }\n },\n\n draw: function() {\n var meta = this.getMeta();\n var elements = meta.data || [];\n var ilen = elements.length;\n var i = 0;\n\n if (meta.dataset) {\n meta.dataset.draw();\n }\n\n for (; i < ilen; ++i) {\n elements[i].draw();\n }\n },\n\n removeHoverStyle: function(element, elementOpts) {\n var dataset = this.chart.data.datasets[element._datasetIndex];\n var index = element._index;\n var custom = element.custom || {};\n var valueOrDefault = helpers.valueAtIndexOrDefault;\n var model = element._model;\n\n model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n },\n\n setHoverStyle: function(element) {\n var dataset = this.chart.data.datasets[element._datasetIndex];\n var index = element._index;\n var custom = element.custom || {};\n var valueOrDefault = helpers.valueAtIndexOrDefault;\n var getHoverColor = helpers.getHoverColor;\n var model = element._model;\n\n model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n },\n\n /**\n * @private\n */\n resyncElements: function() {\n var me = this;\n var meta = me.getMeta();\n var data = me.getDataset().data;\n var numMeta = meta.data.length;\n var numData = data.length;\n\n if (numData < numMeta) {\n meta.data.splice(numData, numMeta - numData);\n } else if (numData > numMeta) {\n me.insertElements(numMeta, numData - numMeta);\n }\n },\n\n /**\n * @private\n */\n insertElements: function(start, count) {\n for (var i = 0; i < count; ++i) {\n this.addElementAndReset(start + i);\n }\n },\n\n /**\n * @private\n */\n onDataPush: function() {\n this.insertElements(this.getDataset().data.length - 1, arguments.length);\n },\n\n /**\n * @private\n */\n onDataPop: function() {\n this.getMeta().data.pop();\n },\n\n /**\n * @private\n */\n onDataShift: function() {\n this.getMeta().data.shift();\n },\n\n /**\n * @private\n */\n onDataSplice: function(start, count) {\n this.getMeta().data.splice(start, count);\n this.insertElements(start, arguments.length - 2);\n },\n\n /**\n * @private\n */\n onDataUnshift: function() {\n this.insertElements(0, arguments.length);\n }\n });\n\n Chart.DatasetController.extend = helpers.inherits;\n };\n\n},{\"45\":45}],25:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n\n module.exports = {\n /**\n * @private\n */\n _set: function(scope, values) {\n return helpers.merge(this[scope] || (this[scope] = {}), values);\n }\n };\n\n},{\"45\":45}],26:[function(require,module,exports){\n 'use strict';\n\n var color = require(2);\n var helpers = require(45);\n\n function interpolate(start, view, model, ease) {\n var keys = Object.keys(model);\n var i, ilen, key, actual, origin, target, type, c0, c1;\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n\n target = model[key];\n\n // if a value is added to the model after pivot() has been called, the view\n // doesn't contain it, so let's initialize the view to the target value.\n if (!view.hasOwnProperty(key)) {\n view[key] = target;\n }\n\n actual = view[key];\n\n if (actual === target || key[0] === '_') {\n continue;\n }\n\n if (!start.hasOwnProperty(key)) {\n start[key] = actual;\n }\n\n origin = start[key];\n\n type = typeof target;\n\n if (type === typeof origin) {\n if (type === 'string') {\n c0 = color(origin);\n if (c0.valid) {\n c1 = color(target);\n if (c1.valid) {\n view[key] = c1.mix(c0, ease).rgbString();\n continue;\n }\n }\n } else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n view[key] = origin + (target - origin) * ease;\n continue;\n }\n }\n\n view[key] = target;\n }\n }\n\n var Element = function(configuration) {\n helpers.extend(this, configuration);\n this.initialize.apply(this, arguments);\n };\n\n helpers.extend(Element.prototype, {\n\n initialize: function() {\n this.hidden = false;\n },\n\n pivot: function() {\n var me = this;\n if (!me._view) {\n me._view = helpers.clone(me._model);\n }\n me._start = {};\n return me;\n },\n\n transition: function(ease) {\n var me = this;\n var model = me._model;\n var start = me._start;\n var view = me._view;\n\n // No animation -> No Transition\n if (!model || ease === 1) {\n me._view = model;\n me._start = null;\n return me;\n }\n\n if (!view) {\n view = me._view = {};\n }\n\n if (!start) {\n start = me._start = {};\n }\n\n interpolate(start, view, model, ease);\n\n return me;\n },\n\n tooltipPosition: function() {\n return {\n x: this._model.x,\n y: this._model.y\n };\n },\n\n hasValue: function() {\n return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n }\n });\n\n Element.extend = helpers.inherits;\n\n module.exports = Element;\n\n},{\"2\":2,\"45\":45}],27:[function(require,module,exports){\n\t/* global window: false */\n\t/* global document: false */\n 'use strict';\n\n var color = require(2);\n var defaults = require(25);\n var helpers = require(45);\n\n module.exports = function(Chart) {\n\n // -- Basic js utility methods\n\n helpers.extend = function(base) {\n var setFn = function(value, key) {\n base[key] = value;\n };\n for (var i = 1, ilen = arguments.length; i < ilen; i++) {\n helpers.each(arguments[i], setFn);\n }\n return base;\n };\n\n helpers.configMerge = function(/* objects ... */) {\n return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n merger: function(key, target, source, options) {\n var tval = target[key] || {};\n var sval = source[key];\n\n if (key === 'scales') {\n // scale config merging is complex. Add our own function here for that\n target[key] = helpers.scaleMerge(tval, sval);\n } else if (key === 'scale') {\n // used in polar area & radar charts since there is only one scale\n target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]);\n } else {\n helpers._merger(key, target, source, options);\n }\n }\n });\n };\n\n helpers.scaleMerge = function(/* objects ... */) {\n return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n merger: function(key, target, source, options) {\n if (key === 'xAxes' || key === 'yAxes') {\n var slen = source[key].length;\n var i, type, scale;\n\n if (!target[key]) {\n target[key] = [];\n }\n\n for (i = 0; i < slen; ++i) {\n scale = source[key][i];\n type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n if (i >= target[key].length) {\n target[key].push({});\n }\n\n if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n // new/untyped scale or type changed: let's apply the new defaults\n // then merge source scale to correctly overwrite the defaults.\n helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]);\n } else {\n // scales type are the same\n helpers.merge(target[key][i], scale);\n }\n }\n } else {\n helpers._merger(key, target, source, options);\n }\n }\n });\n };\n\n helpers.where = function(collection, filterCallback) {\n if (helpers.isArray(collection) && Array.prototype.filter) {\n return collection.filter(filterCallback);\n }\n var filtered = [];\n\n helpers.each(collection, function(item) {\n if (filterCallback(item)) {\n filtered.push(item);\n }\n });\n\n return filtered;\n };\n helpers.findIndex = Array.prototype.findIndex ?\n function(array, callback, scope) {\n return array.findIndex(callback, scope);\n } :\n function(array, callback, scope) {\n scope = scope === undefined ? array : scope;\n for (var i = 0, ilen = array.length; i < ilen; ++i) {\n if (callback.call(scope, array[i], i, array)) {\n return i;\n }\n }\n return -1;\n };\n helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n // Default to start of the array\n if (helpers.isNullOrUndef(startIndex)) {\n startIndex = -1;\n }\n for (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n var currentItem = arrayToSearch[i];\n if (filterCallback(currentItem)) {\n return currentItem;\n }\n }\n };\n helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n // Default to end of the array\n if (helpers.isNullOrUndef(startIndex)) {\n startIndex = arrayToSearch.length;\n }\n for (var i = startIndex - 1; i >= 0; i--) {\n var currentItem = arrayToSearch[i];\n if (filterCallback(currentItem)) {\n return currentItem;\n }\n }\n };\n helpers.inherits = function(extensions) {\n // Basic javascript inheritance based on the model created in Backbone.js\n var me = this;\n var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n return me.apply(this, arguments);\n };\n\n var Surrogate = function() {\n this.constructor = ChartElement;\n };\n Surrogate.prototype = me.prototype;\n ChartElement.prototype = new Surrogate();\n\n ChartElement.extend = helpers.inherits;\n\n if (extensions) {\n helpers.extend(ChartElement.prototype, extensions);\n }\n\n ChartElement.__super__ = me.prototype;\n\n return ChartElement;\n };\n // -- Math methods\n helpers.isNumber = function(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n };\n helpers.almostEquals = function(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n };\n helpers.almostWhole = function(x, epsilon) {\n var rounded = Math.round(x);\n return (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n };\n helpers.max = function(array) {\n return array.reduce(function(max, value) {\n if (!isNaN(value)) {\n return Math.max(max, value);\n }\n return max;\n }, Number.NEGATIVE_INFINITY);\n };\n helpers.min = function(array) {\n return array.reduce(function(min, value) {\n if (!isNaN(value)) {\n return Math.min(min, value);\n }\n return min;\n }, Number.POSITIVE_INFINITY);\n };\n helpers.sign = Math.sign ?\n function(x) {\n return Math.sign(x);\n } :\n function(x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n };\n helpers.log10 = Math.log10 ?\n function(x) {\n return Math.log10(x);\n } :\n function(x) {\n return Math.log(x) / Math.LN10;\n };\n helpers.toRadians = function(degrees) {\n return degrees * (Math.PI / 180);\n };\n helpers.toDegrees = function(radians) {\n return radians * (180 / Math.PI);\n };\n // Gets the angle from vertical upright to the point about a centre.\n helpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n var distanceFromXCenter = anglePoint.x - centrePoint.x;\n var distanceFromYCenter = anglePoint.y - centrePoint.y;\n var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * Math.PI)) {\n angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle: angle,\n distance: radialDistanceFromCenter\n };\n };\n helpers.distanceBetweenPoints = function(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n };\n helpers.aliasPixel = function(pixelWidth) {\n return (pixelWidth % 2 === 0) ? 0 : 0.5;\n };\n helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n var previous = firstPoint.skip ? middlePoint : firstPoint;\n var current = middlePoint;\n var next = afterPoint.skip ? middlePoint : afterPoint;\n\n var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n var s01 = d01 / (d01 + d12);\n var s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n var fa = t * s01; // scaling factor for triangle Ta\n var fb = t * s12;\n\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 };\n helpers.EPSILON = Number.EPSILON || 1e-14;\n helpers.splineCurveMonotone = function(points) {\n // This function calculates Bézier control points in a similar way than |splineCurve|,\n // but preserves monotonicity of the provided data and ensures no local extremums are added\n // between the dataset discrete points due to the interpolation.\n // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n var pointsWithTangents = (points || []).map(function(point) {\n return {\n model: point._model,\n deltaK: 0,\n mK: 0\n };\n });\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n var pointsLen = pointsWithTangents.length;\n var i, pointBefore, pointCurrent, pointAfter;\n for (i = 0; i < pointsLen; ++i) {\n pointCurrent = pointsWithTangents[i];\n if (pointCurrent.model.skip) {\n continue;\n }\n\n pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n if (pointAfter && !pointAfter.model.skip) {\n var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n }\n\n if (!pointBefore || pointBefore.model.skip) {\n pointCurrent.mK = pointCurrent.deltaK;\n } else if (!pointAfter || pointAfter.model.skip) {\n pointCurrent.mK = pointBefore.deltaK;\n } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n pointCurrent.mK = 0;\n } else {\n pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n }\n }\n\n // Adjust tangents to ensure monotonic properties\n var alphaK, betaK, tauK, squaredMagnitude;\n for (i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointsWithTangents[i];\n pointAfter = pointsWithTangents[i + 1];\n if (pointCurrent.model.skip || pointAfter.model.skip) {\n continue;\n }\n\n if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n pointCurrent.mK = pointAfter.mK = 0;\n continue;\n }\n\n alphaK = pointCurrent.mK / pointCurrent.deltaK;\n betaK = pointAfter.mK / pointCurrent.deltaK;\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n pointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n }\n\n // Compute control points\n var deltaX;\n for (i = 0; i < pointsLen; ++i) {\n pointCurrent = pointsWithTangents[i];\n if (pointCurrent.model.skip) {\n continue;\n }\n\n pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n if (pointBefore && !pointBefore.model.skip) {\n deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n }\n if (pointAfter && !pointAfter.model.skip) {\n deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n }\n }\n };\n helpers.nextItem = function(collection, index, loop) {\n if (loop) {\n return index >= collection.length - 1 ? collection[0] : collection[index + 1];\n }\n return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n };\n helpers.previousItem = function(collection, index, loop) {\n if (loop) {\n return index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n }\n return index <= 0 ? collection[0] : collection[index - 1];\n };\n // Implementation of the nice number algorithm used in determining where axis labels will go\n helpers.niceNum = function(range, round) {\n var exponent = Math.floor(helpers.log10(range));\n var fraction = range / Math.pow(10, exponent);\n var niceFraction;\n\n if (round) {\n if (fraction < 1.5) {\n niceFraction = 1;\n } else if (fraction < 3) {\n niceFraction = 2;\n } else if (fraction < 7) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n } else if (fraction <= 1.0) {\n niceFraction = 1;\n } else if (fraction <= 2) {\n niceFraction = 2;\n } else if (fraction <= 5) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n\n return niceFraction * Math.pow(10, exponent);\n };\n // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n helpers.requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n callback();\n };\n }\n return window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) {\n return window.setTimeout(callback, 1000 / 60);\n };\n }());\n // -- DOM methods\n helpers.getRelativePosition = function(evt, chart) {\n var mouseX, mouseY;\n var e = evt.originalEvent || evt;\n var canvas = evt.currentTarget || evt.srcElement;\n var boundingRect = canvas.getBoundingClientRect();\n\n var touches = e.touches;\n if (touches && touches.length > 0) {\n mouseX = touches[0].clientX;\n mouseY = touches[0].clientY;\n\n } else {\n mouseX = e.clientX;\n mouseY = e.clientY;\n }\n\n // Scale mouse coordinates into canvas coordinates\n // by following the pattern laid out by 'jerryj' in the comments of\n // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n return {\n x: mouseX,\n y: mouseY\n };\n\n };\n\n // Private helper function to convert max-width/max-height values that may be percentages into a number\n function parseMaxStyle(styleValue, node, parentProperty) {\n var valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n }\n\n /**\n * Returns if the given value contains an effective constraint.\n * @private\n */\n function isConstrainedValue(value) {\n return value !== undefined && value !== null && value !== 'none';\n }\n\n // Private helper to get a constraint dimension\n // @param domNode : the node to check the constraint on\n // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n // @param percentageProperty : property of parent to use when calculating width as a percentage\n // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n function getConstraintDimension(domNode, maxStyle, percentageProperty) {\n var view = document.defaultView;\n var parentNode = domNode.parentNode;\n var constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n var hasCNode = isConstrainedValue(constrainedNode);\n var hasCContainer = isConstrainedValue(constrainedContainer);\n var infinity = Number.POSITIVE_INFINITY;\n\n if (hasCNode || hasCContainer) {\n return Math.min(\n hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n }\n\n return 'none';\n }\n // returns Number or undefined if no constraint\n helpers.getConstraintWidth = function(domNode) {\n return getConstraintDimension(domNode, 'max-width', 'clientWidth');\n };\n // returns Number or undefined if no constraint\n helpers.getConstraintHeight = function(domNode) {\n return getConstraintDimension(domNode, 'max-height', 'clientHeight');\n };\n helpers.getMaximumWidth = function(domNode) {\n var container = domNode.parentNode;\n if (!container) {\n return domNode.clientWidth;\n }\n\n var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10);\n var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10);\n var w = container.clientWidth - paddingLeft - paddingRight;\n var cw = helpers.getConstraintWidth(domNode);\n return isNaN(cw) ? w : Math.min(w, cw);\n };\n helpers.getMaximumHeight = function(domNode) {\n var container = domNode.parentNode;\n if (!container) {\n return domNode.clientHeight;\n }\n\n var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10);\n var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10);\n var h = container.clientHeight - paddingTop - paddingBottom;\n var ch = helpers.getConstraintHeight(domNode);\n return isNaN(ch) ? h : Math.min(h, ch);\n };\n helpers.getStyle = function(el, property) {\n return el.currentStyle ?\n el.currentStyle[property] :\n document.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n };\n helpers.retinaScale = function(chart, forceRatio) {\n var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1;\n if (pixelRatio === 1) {\n return;\n }\n\n var canvas = chart.canvas;\n var height = chart.height;\n var width = chart.width;\n\n canvas.height = height * pixelRatio;\n canvas.width = width * pixelRatio;\n chart.ctx.scale(pixelRatio, pixelRatio);\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n canvas.style.height = height + 'px';\n canvas.style.width = width + 'px';\n };\n // -- Canvas methods\n helpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n };\n helpers.longestText = function(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n var data = cache.data = cache.data || {};\n var gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.font = font;\n var longest = 0;\n helpers.each(arrayOfThings, function(thing) {\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n longest = helpers.measureText(ctx, data, gc, longest, thing);\n } else if (helpers.isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n helpers.each(thing, function(nestedThing) {\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n longest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n }\n });\n }\n });\n\n var gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (var i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n };\n helpers.measureText = function(ctx, data, gc, longest, string) {\n var 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 };\n helpers.numberOfLabelLines = function(arrayOfThings) {\n var numberOfLines = 1;\n helpers.each(arrayOfThings, function(thing) {\n if (helpers.isArray(thing)) {\n if (thing.length > numberOfLines) {\n numberOfLines = thing.length;\n }\n }\n });\n return numberOfLines;\n };\n\n helpers.color = !color ?\n function(value) {\n console.error('Color.js not found!');\n return value;\n } :\n function(value) {\n\t\t\t\t/* global CanvasGradient */\n if (value instanceof CanvasGradient) {\n value = defaults.global.defaultColor;\n }\n\n return color(value);\n };\n\n helpers.getHoverColor = function(colorValue) {\n\t\t\t/* global CanvasPattern */\n return (colorValue instanceof CanvasPattern) ?\n colorValue :\n helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n };\n };\n\n},{\"2\":2,\"25\":25,\"45\":45}],28:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n\n /**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\n function getRelativePosition(e, chart) {\n if (e.native) {\n return {\n x: e.x,\n y: e.y\n };\n }\n\n return helpers.getRelativePosition(e, chart);\n }\n\n /**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\n function parseVisibleItems(chart, handler) {\n var datasets = chart.data.datasets;\n var meta, i, j, ilen, jlen;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n if (!chart.isDatasetVisible(i)) {\n continue;\n }\n\n meta = chart.getDatasetMeta(i);\n for (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n var element = meta.data[j];\n if (!element._view.skip) {\n handler(element);\n }\n }\n }\n }\n\n /**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\n function getIntersectItems(chart, position) {\n var elements = [];\n\n parseVisibleItems(chart, function(element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n }\n });\n\n return elements;\n }\n\n /**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\n function getNearestItems(chart, position, intersect, distanceMetric) {\n var minDistance = Number.POSITIVE_INFINITY;\n var nearestItems = [];\n\n parseVisibleItems(chart, function(element) {\n if (intersect && !element.inRange(position.x, position.y)) {\n return;\n }\n\n var center = element.getCenterPoint();\n var distance = distanceMetric(position, center);\n\n if (distance < minDistance) {\n nearestItems = [element];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n nearestItems.push(element);\n }\n });\n\n return nearestItems;\n }\n\n /**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\n function getDistanceMetricForAxis(axis) {\n var useX = axis.indexOf('x') !== -1;\n var useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n }\n\n function indexMode(chart, e, options) {\n var position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n options.axis = options.axis || 'x';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n var elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.data.datasets.forEach(function(dataset, datasetIndex) {\n if (chart.isDatasetVisible(datasetIndex)) {\n var meta = chart.getDatasetMeta(datasetIndex);\n var element = meta.data[items[0]._index];\n\n // don't count items that are skipped (null data)\n if (element && !element._view.skip) {\n elements.push(element);\n }\n }\n });\n\n return elements;\n }\n\n /**\n * @interface IInteractionOptions\n */\n /**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n /**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\n module.exports = {\n // Helper function for different modes\n modes: {\n single: function(chart, e) {\n var position = getRelativePosition(e, chart);\n var elements = [];\n\n parseVisibleItems(chart, function(element) {\n if (element.inRange(position.x, position.y)) {\n elements.push(element);\n return elements;\n }\n });\n\n return elements.slice(0, 1);\n },\n\n /**\n * @function Chart.Interaction.modes.label\n * @deprecated since version 2.4.0\n * @todo remove at version 3\n * @private\n */\n label: indexMode,\n\n /**\n * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n * @function Chart.Interaction.modes.index\n * @since v2.4.0\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @param options {IInteractionOptions} options to use during interaction\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n index: indexMode,\n\n /**\n * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n * If the options.intersect is false, we find the nearest item and return the items in that dataset\n * @function Chart.Interaction.modes.dataset\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @param options {IInteractionOptions} options to use during interaction\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n dataset: function(chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n if (items.length > 0) {\n items = chart.getDatasetMeta(items[0]._datasetIndex).data;\n }\n\n return items;\n },\n\n /**\n * @function Chart.Interaction.modes.x-axis\n * @deprecated since version 2.4.0. Use index mode and intersect == true\n * @todo remove at version 3\n * @private\n */\n 'x-axis': function(chart, e) {\n return indexMode(chart, e, {intersect: true});\n },\n\n /**\n * Point mode returns all elements that hit test based on the event position\n * of the event\n * @function Chart.Interaction.modes.intersect\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n point: function(chart, e) {\n var position = getRelativePosition(e, chart);\n return getIntersectItems(chart, position);\n },\n\n /**\n * nearest mode returns the element closest to the point\n * @function Chart.Interaction.modes.intersect\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @param options {IInteractionOptions} options to use\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n nearest: function(chart, e, options) {\n var position = getRelativePosition(e, chart);\n options.axis = options.axis || 'xy';\n var distanceMetric = getDistanceMetricForAxis(options.axis);\n var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n // We have multiple items at the same distance from the event. Now sort by smallest\n if (nearestItems.length > 1) {\n nearestItems.sort(function(a, b) {\n var sizeA = a.getArea();\n var sizeB = b.getArea();\n var ret = sizeA - sizeB;\n\n if (ret === 0) {\n // if equal sort by dataset index\n ret = a._datasetIndex - b._datasetIndex;\n }\n\n return ret;\n });\n }\n\n // Return only 1 item\n return nearestItems.slice(0, 1);\n },\n\n /**\n * x mode returns the elements that hit-test at the current x coordinate\n * @function Chart.Interaction.modes.x\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @param options {IInteractionOptions} options to use\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n x: function(chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n\n parseVisibleItems(chart, function(element) {\n if (element.inXRange(position.x)) {\n items.push(element);\n }\n\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n },\n\n /**\n * y mode returns the elements that hit-test at the current y coordinate\n * @function Chart.Interaction.modes.y\n * @param chart {chart} the chart we are returning items from\n * @param e {Event} the event we are find things at\n * @param options {IInteractionOptions} options to use\n * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n */\n y: function(chart, e, options) {\n var position = getRelativePosition(e, chart);\n var items = [];\n var intersectsItem = false;\n\n parseVisibleItems(chart, function(element) {\n if (element.inYRange(position.y)) {\n items.push(element);\n }\n\n if (element.inRange(position.x, position.y)) {\n intersectsItem = true;\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (options.intersect && !intersectsItem) {\n items = [];\n }\n return items;\n }\n }\n };\n\n},{\"45\":45}],29:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n\n defaults._set('global', {\n responsive: true,\n responsiveAnimationDuration: 0,\n maintainAspectRatio: true,\n events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n hover: {\n onHover: null,\n mode: 'nearest',\n intersect: true,\n animationDuration: 400\n },\n onClick: null,\n defaultColor: 'rgba(0,0,0,0.1)',\n defaultFontColor: '#666',\n defaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n defaultFontSize: 12,\n defaultFontStyle: 'normal',\n showLines: true,\n\n // Element defaults defined in element extensions\n elements: {},\n\n // Layout options such as padding\n layout: {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n }\n });\n\n module.exports = function() {\n\n // Occupy the global variable of Chart, and create a simple base class\n var Chart = function(item, config) {\n this.construct(item, config);\n return this;\n };\n\n Chart.Chart = Chart;\n\n return Chart;\n };\n\n},{\"25\":25}],30:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n\n module.exports = function(Chart) {\n\n function filterByPosition(array, position) {\n return helpers.where(array, function(v) {\n return v.position === position;\n });\n }\n\n function sortByWeight(array, reverse) {\n array.forEach(function(v, i) {\n v._tmpIndex_ = i;\n return v;\n });\n array.sort(function(a, b) {\n var v0 = reverse ? b : a;\n var v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0._tmpIndex_ - v1._tmpIndex_ :\n v0.weight - v1.weight;\n });\n array.forEach(function(v) {\n delete v._tmpIndex_;\n });\n }\n\n /**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n // The layout service is very self explanatory. It's responsible for the layout within a chart.\n // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n // It is this service's responsibility of carrying out that layout.\n Chart.layoutService = {\n defaults: {},\n\n /**\n * Register a box to a chart.\n * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n * @param {Chart} chart - the chart to use\n * @param {ILayoutItem} item - the item to add to be layed out\n */\n addBox: function(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullWidth = item.fullWidth || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n\n chart.boxes.push(item);\n },\n\n /**\n * Remove a layoutItem from a chart\n * @param {Chart} chart - the chart to remove the box from\n * @param {Object} layoutItem - the item to remove from the layout\n */\n removeBox: function(chart, layoutItem) {\n var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n * Sets (or updates) options on the given `item`.\n * @param {Chart} chart - the chart in which the item lives (or will be added to)\n * @param {Object} item - the item to configure with the given options\n * @param {Object} options - the new item options.\n */\n configure: function(chart, item, options) {\n var props = ['fullWidth', 'position', 'weight'];\n var ilen = props.length;\n var i = 0;\n var prop;\n\n for (; i < ilen; ++i) {\n prop = props[i];\n if (options.hasOwnProperty(prop)) {\n item[prop] = options[prop];\n }\n }\n },\n\n /**\n * Fits boxes of the given chart into the given size by having each box measure itself\n * then running a fitting algorithm\n * @param {Chart} chart - the chart\n * @param {Number} width - the width to fit into\n * @param {Number} height - the height to fit into\n */\n update: function(chart, width, height) {\n if (!chart) {\n return;\n }\n\n var layoutOptions = chart.options.layout || {};\n var padding = helpers.options.toPadding(layoutOptions.padding);\n var leftPadding = padding.left;\n var rightPadding = padding.right;\n var topPadding = padding.top;\n var bottomPadding = padding.bottom;\n\n var leftBoxes = filterByPosition(chart.boxes, 'left');\n var rightBoxes = filterByPosition(chart.boxes, 'right');\n var topBoxes = filterByPosition(chart.boxes, 'top');\n var bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n // Sort boxes by weight. A higher weight is further away from the chart area\n sortByWeight(leftBoxes, true);\n sortByWeight(rightBoxes, false);\n sortByWeight(topBoxes, true);\n sortByWeight(bottomBoxes, false);\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n // What we do to find the best sizing, we do the following\n // 1. Determine the minimum size of the chart area.\n // 2. Split the remaining width equally between each vertical axis\n // 3. Split the remaining height equally between each horizontal axis\n // 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n // 5. Adjust the sizes of each axis based on it's minimum reported size.\n // 6. Refit each axis\n // 7. Position each axis in the final location\n // 8. Tell the chart the final location of the chart area\n // 9. Tell any axes that overlay the chart area the positions of the chart area\n\n // Step 1\n var chartWidth = width - leftPadding - rightPadding;\n var chartHeight = height - topPadding - bottomPadding;\n var chartAreaWidth = chartWidth / 2; // min 50%\n var chartAreaHeight = chartHeight / 2; // min 50%\n\n // Step 2\n var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n // Step 3\n var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n // Step 4\n var maxChartAreaWidth = chartWidth;\n var maxChartAreaHeight = chartHeight;\n var minBoxSizes = [];\n\n function getMinimumBoxSize(box) {\n var minSize;\n var isHorizontal = box.isHorizontal();\n\n if (isHorizontal) {\n minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n maxChartAreaHeight -= minSize.height;\n } else {\n minSize = box.update(verticalBoxWidth, chartAreaHeight);\n maxChartAreaWidth -= minSize.width;\n }\n\n minBoxSizes.push({\n horizontal: isHorizontal,\n minSize: minSize,\n box: box,\n });\n }\n\n helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n var maxHorizontalLeftPadding = 0;\n var maxHorizontalRightPadding = 0;\n var maxVerticalTopPadding = 0;\n var maxVerticalBottomPadding = 0;\n\n helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n if (horizontalBox.getPadding) {\n var boxPadding = horizontalBox.getPadding();\n maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n }\n });\n\n helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n if (verticalBox.getPadding) {\n var boxPadding = verticalBox.getPadding();\n maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n }\n });\n\n // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n // be if the axes are drawn at their minimum sizes.\n // Steps 5 & 6\n var totalLeftBoxesWidth = leftPadding;\n var totalRightBoxesWidth = rightPadding;\n var totalTopBoxesHeight = topPadding;\n var totalBottomBoxesHeight = bottomPadding;\n\n // Function to fit a box\n function fitBox(box) {\n var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n return minBox.box === box;\n });\n\n if (minBoxSize) {\n if (box.isHorizontal()) {\n var scaleMargin = {\n left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n top: 0,\n bottom: 0\n };\n\n // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n // on the margin. Sometimes they need to increase in size slightly\n box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n } else {\n box.update(minBoxSize.minSize.width, maxChartAreaHeight);\n }\n }\n }\n\n // Update, and calculate the left and right margins for the horizontal boxes\n helpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n helpers.each(leftBoxes, function(box) {\n totalLeftBoxesWidth += box.width;\n });\n\n helpers.each(rightBoxes, function(box) {\n totalRightBoxesWidth += box.width;\n });\n\n // Set the Left and Right margins for the horizontal boxes\n helpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n // Figure out how much margin is on the top and bottom of the vertical boxes\n helpers.each(topBoxes, function(box) {\n totalTopBoxesHeight += box.height;\n });\n\n helpers.each(bottomBoxes, function(box) {\n totalBottomBoxesHeight += box.height;\n });\n\n function finalFitVerticalBox(box) {\n var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n return minSize.box === box;\n });\n\n var scaleMargin = {\n left: 0,\n right: 0,\n top: totalTopBoxesHeight,\n bottom: totalBottomBoxesHeight\n };\n\n if (minBoxSize) {\n box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n }\n }\n\n // Let the left layout know the final margin\n helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n totalLeftBoxesWidth = leftPadding;\n totalRightBoxesWidth = rightPadding;\n totalTopBoxesHeight = topPadding;\n totalBottomBoxesHeight = bottomPadding;\n\n helpers.each(leftBoxes, function(box) {\n totalLeftBoxesWidth += box.width;\n });\n\n helpers.each(rightBoxes, function(box) {\n totalRightBoxesWidth += box.width;\n });\n\n helpers.each(topBoxes, function(box) {\n totalTopBoxesHeight += box.height;\n });\n helpers.each(bottomBoxes, function(box) {\n totalBottomBoxesHeight += box.height;\n });\n\n // We may be adding some padding to account for rotated x axis labels\n var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n totalLeftBoxesWidth += leftPaddingAddition;\n totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n totalTopBoxesHeight += topPaddingAddition;\n totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n // Figure out if our chart area changed. This would occur if the dataset layout label rotation\n // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n // without calling `fit` again\n var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n helpers.each(leftBoxes, function(box) {\n box.height = newMaxChartAreaHeight;\n });\n\n helpers.each(rightBoxes, function(box) {\n box.height = newMaxChartAreaHeight;\n });\n\n helpers.each(topBoxes, function(box) {\n if (!box.fullWidth) {\n box.width = newMaxChartAreaWidth;\n }\n });\n\n helpers.each(bottomBoxes, function(box) {\n if (!box.fullWidth) {\n box.width = newMaxChartAreaWidth;\n }\n });\n\n maxChartAreaHeight = newMaxChartAreaHeight;\n maxChartAreaWidth = newMaxChartAreaWidth;\n }\n\n // Step 7 - Position the boxes\n var left = leftPadding + leftPaddingAddition;\n var top = topPadding + topPaddingAddition;\n\n function placeBox(box) {\n if (box.isHorizontal()) {\n box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n box.top = top;\n box.bottom = top + box.height;\n\n // Move to next point\n top = box.bottom;\n\n } else {\n\n box.left = left;\n box.right = left + box.width;\n box.top = totalTopBoxesHeight;\n box.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n // Move to next point\n left = box.right;\n }\n }\n\n helpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n // Account for chart width and height\n left += maxChartAreaWidth;\n top += maxChartAreaHeight;\n\n helpers.each(rightBoxes, placeBox);\n helpers.each(bottomBoxes, placeBox);\n\n // Step 8\n chart.chartArea = {\n left: totalLeftBoxesWidth,\n top: totalTopBoxesHeight,\n right: totalLeftBoxesWidth + maxChartAreaWidth,\n bottom: totalTopBoxesHeight + maxChartAreaHeight\n };\n\n // Step 9\n helpers.each(chartAreaBoxes, function(box) {\n box.left = chart.chartArea.left;\n box.top = chart.chartArea.top;\n box.right = chart.chartArea.right;\n box.bottom = chart.chartArea.bottom;\n\n box.update(maxChartAreaWidth, maxChartAreaHeight);\n });\n }\n };\n };\n\n},{\"45\":45}],31:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n plugins: {}\n });\n\n module.exports = function(Chart) {\n\n /**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\n Chart.plugins = {\n /**\n * Globally registered plugins.\n * @private\n */\n _plugins: [],\n\n /**\n * This identifier is used to invalidate the descriptors cache attached to each chart\n * when a global plugin is registered or unregistered. In this case, the cache ID is\n * incremented and descriptors are regenerated during following API calls.\n * @private\n */\n _cacheId: 0,\n\n /**\n * Registers the given plugin(s) if not already registered.\n * @param {Array|Object} plugins plugin instance(s).\n */\n register: function(plugins) {\n var p = this._plugins;\n ([]).concat(plugins).forEach(function(plugin) {\n if (p.indexOf(plugin) === -1) {\n p.push(plugin);\n }\n });\n\n this._cacheId++;\n },\n\n /**\n * Unregisters the given plugin(s) only if registered.\n * @param {Array|Object} plugins plugin instance(s).\n */\n unregister: function(plugins) {\n var p = this._plugins;\n ([]).concat(plugins).forEach(function(plugin) {\n var idx = p.indexOf(plugin);\n if (idx !== -1) {\n p.splice(idx, 1);\n }\n });\n\n this._cacheId++;\n },\n\n /**\n * Remove all registered plugins.\n * @since 2.1.5\n */\n clear: function() {\n this._plugins = [];\n this._cacheId++;\n },\n\n /**\n * Returns the number of registered plugins?\n * @returns {Number}\n * @since 2.1.5\n */\n count: function() {\n return this._plugins.length;\n },\n\n /**\n * Returns all registered plugin instances.\n * @returns {Array} array of plugin objects.\n * @since 2.1.5\n */\n getAll: function() {\n return this._plugins;\n },\n\n /**\n * Calls enabled plugins for `chart` on the specified hook and with the given args.\n * This method immediately returns as soon as a plugin explicitly returns false. The\n * returned value can be used, for instance, to interrupt the current action.\n * @param {Object} chart - The chart instance for which plugins should be called.\n * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n * @param {Array} [args] - Extra arguments to apply to the hook call.\n * @returns {Boolean} false if any of the plugins return false, else returns true.\n */\n notify: function(chart, hook, args) {\n var descriptors = this.descriptors(chart);\n var ilen = descriptors.length;\n var i, descriptor, plugin, params, method;\n\n for (i = 0; i < ilen; ++i) {\n descriptor = descriptors[i];\n plugin = descriptor.plugin;\n method = plugin[hook];\n if (typeof method === 'function') {\n params = [chart].concat(args || []);\n params.push(descriptor.options);\n if (method.apply(plugin, params) === false) {\n return false;\n }\n }\n }\n\n return true;\n },\n\n /**\n * Returns descriptors of enabled plugins for the given chart.\n * @returns {Array} [{ plugin, options }]\n * @private\n */\n descriptors: function(chart) {\n var cache = chart._plugins || (chart._plugins = {});\n if (cache.id === this._cacheId) {\n return cache.descriptors;\n }\n\n var plugins = [];\n var descriptors = [];\n var config = (chart && chart.config) || {};\n var options = (config.options && config.options.plugins) || {};\n\n this._plugins.concat(config.plugins || []).forEach(function(plugin) {\n var idx = plugins.indexOf(plugin);\n if (idx !== -1) {\n return;\n }\n\n var id = plugin.id;\n var opts = options[id];\n if (opts === false) {\n return;\n }\n\n if (opts === true) {\n opts = helpers.clone(defaults.global.plugins[id]);\n }\n\n plugins.push(plugin);\n descriptors.push({\n plugin: plugin,\n options: opts || {}\n });\n });\n\n cache.descriptors = descriptors;\n cache.id = this._cacheId;\n return descriptors;\n }\n };\n\n /**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n /**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n /**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n */\n /**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n /**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n /**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n /**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n /**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n /**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n /**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n /**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n /**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n\n /**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\n Chart.pluginService = Chart.plugins;\n\n /**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\n Chart.PluginBase = Element.extend({});\n };\n\n},{\"25\":25,\"26\":26,\"45\":45}],32:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n var Ticks = require(34);\n\n defaults._set('scale', {\n display: true,\n position: 'left',\n offset: false,\n\n // grid line settings\n gridLines: {\n display: true,\n color: 'rgba(0, 0, 0, 0.1)',\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickMarkLength: 10,\n zeroLineWidth: 1,\n zeroLineColor: 'rgba(0,0,0,0.25)',\n zeroLineBorderDash: [],\n zeroLineBorderDashOffset: 0.0,\n offsetGridLines: false,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n // scale label\n scaleLabel: {\n // display property\n display: false,\n\n // actual label\n labelString: '',\n\n // line height\n lineHeight: 1.2,\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n beginAtZero: false,\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n padding: 0,\n reverse: false,\n display: true,\n autoSkip: true,\n autoSkipPadding: 0,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {}\n }\n });\n\n function labelsFromTicks(ticks) {\n var labels = [];\n var i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n labels.push(ticks[i].label);\n }\n\n return labels;\n }\n\n function getLineValue(scale, index, offsetGridLines) {\n var lineValue = scale.getPixelForTick(index);\n\n if (offsetGridLines) {\n if (index === 0) {\n lineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n }\n }\n return lineValue;\n }\n\n module.exports = function(Chart) {\n\n function computeTextSize(context, tick, font) {\n return helpers.isArray(tick) ?\n helpers.longestText(context, font, tick) :\n context.measureText(tick).width;\n }\n\n function parseFontOptions(options) {\n var valueOrDefault = helpers.valueOrDefault;\n var globalDefaults = defaults.global;\n var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n return {\n size: size,\n style: style,\n family: family,\n font: helpers.fontString(size, style, family)\n };\n }\n\n function parseLineHeight(options) {\n return helpers.options.toLineHeight(\n helpers.valueOrDefault(options.lineHeight, 1.2),\n helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n }\n\n Chart.Scale = Element.extend({\n /**\n * Get the padding needed for the scale\n * @method getPadding\n * @private\n * @returns {Padding} the necessary padding\n */\n getPadding: function() {\n var me = this;\n return {\n left: me.paddingLeft || 0,\n top: me.paddingTop || 0,\n right: me.paddingRight || 0,\n bottom: me.paddingBottom || 0\n };\n },\n\n /**\n * Returns the scale tick objects ({label, major})\n * @since 2.7\n */\n getTicks: function() {\n return this._ticks;\n },\n\n // These methods are ordered by lifecyle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n mergeTicksOptions: function() {\n var ticks = this.options.ticks;\n if (ticks.minor === false) {\n ticks.minor = {\n display: false\n };\n }\n if (ticks.major === false) {\n ticks.major = {\n display: false\n };\n }\n for (var key in ticks) {\n if (key !== 'major' && key !== 'minor') {\n if (typeof ticks.minor[key] === 'undefined') {\n ticks.minor[key] = ticks[key];\n }\n if (typeof ticks.major[key] === 'undefined') {\n ticks.major[key] = ticks[key];\n }\n }\n }\n },\n beforeUpdate: function() {\n helpers.callback(this.options.beforeUpdate, [this]);\n },\n update: function(maxWidth, maxHeight, margins) {\n var me = this;\n var i, ilen, labels, label, ticks, tick;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = helpers.extend({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n me.longestTextCache = me.longestTextCache || {};\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n\n // Data min/max\n me.beforeDataLimits();\n me.determineDataLimits();\n me.afterDataLimits();\n\n // Ticks - `this.ticks` is now DEPRECATED!\n // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n // and must not be accessed directly from outside this class. `this.ticks` being\n // around for long time and not marked as private, we can't change its structure\n // without unexpected breaking changes. If you need to access the scale ticks,\n // use scale.getTicks() instead.\n\n me.beforeBuildTicks();\n\n // New implementations should return an array of objects but for BACKWARD COMPAT,\n // we still support no return (`this.ticks` internally set by calling this method).\n ticks = me.buildTicks() || [];\n\n me.afterBuildTicks();\n\n me.beforeTickToLabelConversion();\n\n // New implementations should return the formatted tick labels but for BACKWARD\n // COMPAT, we still support no return (`this.ticks` internally changed by calling\n // this method and supposed to contain only string values).\n labels = me.convertTicksToLabels(ticks) || me.ticks;\n\n me.afterTickToLabelConversion();\n\n me.ticks = labels; // BACKWARD COMPATIBILITY\n\n // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n tick = ticks[i];\n if (!tick) {\n ticks.push(tick = {\n label: label,\n major: false\n });\n } else {\n tick.label = label;\n }\n }\n\n me._ticks = ticks;\n\n // Tick Rotation\n me.beforeCalculateTickRotation();\n me.calculateTickRotation();\n me.afterCalculateTickRotation();\n // Fit\n me.beforeFit();\n me.fit();\n me.afterFit();\n //\n me.afterUpdate();\n\n return me.minSize;\n\n },\n afterUpdate: function() {\n helpers.callback(this.options.afterUpdate, [this]);\n },\n\n //\n\n beforeSetDimensions: function() {\n helpers.callback(this.options.beforeSetDimensions, [this]);\n },\n setDimensions: function() {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n },\n afterSetDimensions: function() {\n helpers.callback(this.options.afterSetDimensions, [this]);\n },\n\n // Data limits\n beforeDataLimits: function() {\n helpers.callback(this.options.beforeDataLimits, [this]);\n },\n determineDataLimits: helpers.noop,\n afterDataLimits: function() {\n helpers.callback(this.options.afterDataLimits, [this]);\n },\n\n //\n beforeBuildTicks: function() {\n helpers.callback(this.options.beforeBuildTicks, [this]);\n },\n buildTicks: helpers.noop,\n afterBuildTicks: function() {\n helpers.callback(this.options.afterBuildTicks, [this]);\n },\n\n beforeTickToLabelConversion: function() {\n helpers.callback(this.options.beforeTickToLabelConversion, [this]);\n },\n convertTicksToLabels: function() {\n var me = this;\n // Convert ticks to strings\n var tickOpts = me.options.ticks;\n me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n },\n afterTickToLabelConversion: function() {\n helpers.callback(this.options.afterTickToLabelConversion, [this]);\n },\n\n //\n\n beforeCalculateTickRotation: function() {\n helpers.callback(this.options.beforeCalculateTickRotation, [this]);\n },\n calculateTickRotation: function() {\n var me = this;\n var context = me.ctx;\n var tickOpts = me.options.ticks;\n var labels = labelsFromTicks(me._ticks);\n\n // Get the width of each grid by calculating the difference\n // between x offsets between 0 and 1.\n var tickFont = parseFontOptions(tickOpts);\n context.font = tickFont.font;\n\n var labelRotation = tickOpts.minRotation || 0;\n\n if (labels.length && me.options.display && me.isHorizontal()) {\n var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n var labelWidth = originalLabelWidth;\n var cosRotation, sinRotation;\n\n // Allow 3 pixels x2 padding either side for label readability\n var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n // Max label rotation can be set or default to 90 - also act as a loop counter\n while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n var angleRadians = helpers.toRadians(labelRotation);\n cosRotation = Math.cos(angleRadians);\n sinRotation = Math.sin(angleRadians);\n\n if (sinRotation * originalLabelWidth > me.maxHeight) {\n // go back one step\n labelRotation--;\n break;\n }\n\n labelRotation++;\n labelWidth = cosRotation * originalLabelWidth;\n }\n }\n\n me.labelRotation = labelRotation;\n },\n afterCalculateTickRotation: function() {\n helpers.callback(this.options.afterCalculateTickRotation, [this]);\n },\n\n //\n\n beforeFit: function() {\n helpers.callback(this.options.beforeFit, [this]);\n },\n fit: function() {\n var me = this;\n // Reset\n var minSize = me.minSize = {\n width: 0,\n height: 0\n };\n\n var labels = labelsFromTicks(me._ticks);\n\n var opts = me.options;\n var tickOpts = opts.ticks;\n var scaleLabelOpts = opts.scaleLabel;\n var gridLineOpts = opts.gridLines;\n var display = opts.display;\n var isHorizontal = me.isHorizontal();\n\n var tickFont = parseFontOptions(tickOpts);\n var tickMarkLength = opts.gridLines.tickMarkLength;\n\n // Width\n if (isHorizontal) {\n // subtract the margins to line up with the chartArea if we are a full width scale\n minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n } else {\n minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n }\n\n // height\n if (isHorizontal) {\n minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n } else {\n minSize.height = me.maxHeight; // fill all the height\n }\n\n // Are we showing a title for the scale?\n if (scaleLabelOpts.display && display) {\n var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n if (isHorizontal) {\n minSize.height += deltaHeight;\n } else {\n minSize.width += deltaHeight;\n }\n }\n\n // Don't bother fitting the ticks if we are not showing them\n if (tickOpts.display && display) {\n var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n var lineSpace = tickFont.size * 0.5;\n var tickPadding = me.options.ticks.padding;\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n me.longestLabelWidth = largestTextWidth;\n\n var angleRadians = helpers.toRadians(me.labelRotation);\n var cosRotation = Math.cos(angleRadians);\n var sinRotation = Math.sin(angleRadians);\n\n // TODO - improve this calculation\n var labelHeight = (sinRotation * largestTextWidth)\n + (tickFont.size * tallestLabelHeightInLines)\n + (lineSpace * (tallestLabelHeightInLines - 1))\n + lineSpace; // padding\n\n minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n me.ctx.font = tickFont.font;\n var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (me.labelRotation !== 0) {\n me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n } else {\n me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n me.paddingRight = lastLabelWidth / 2 + 3;\n }\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n if (tickOpts.mirror) {\n largestTextWidth = 0;\n } else {\n // use lineSpace for consistency with horizontal axis\n // tickPadding is not implemented for horizontal\n largestTextWidth += tickPadding + lineSpace;\n }\n\n minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n me.paddingTop = tickFont.size / 2;\n me.paddingBottom = tickFont.size / 2;\n }\n }\n\n me.handleMargins();\n\n me.width = minSize.width;\n me.height = minSize.height;\n },\n\n /**\n * Handle margins and padding interactions\n * @private\n */\n handleMargins: function() {\n var me = this;\n if (me.margins) {\n me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n }\n },\n\n afterFit: function() {\n helpers.callback(this.options.afterFit, [this]);\n },\n\n // Shared Methods\n isHorizontal: function() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n },\n isFullWidth: function() {\n return (this.options.fullWidth);\n },\n\n // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n getRightValue: function(rawValue) {\n // Null and undefined values first\n if (helpers.isNullOrUndef(rawValue)) {\n return NaN;\n }\n // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n if (typeof rawValue === 'number' && !isFinite(rawValue)) {\n return NaN;\n }\n // If it is in fact an object, dive in one more level\n if (rawValue) {\n if (this.isHorizontal()) {\n if (rawValue.x !== undefined) {\n return this.getRightValue(rawValue.x);\n }\n } else if (rawValue.y !== undefined) {\n return this.getRightValue(rawValue.y);\n }\n }\n\n // Value is good, return it\n return rawValue;\n },\n\n // Used to get the value to display in the tooltip for the data at the given index\n // function getLabelForIndex(index, datasetIndex)\n getLabelForIndex: helpers.noop,\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue: helpers.noop,\n\n // Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n getValueForPixel: helpers.noop,\n\n // Used for tick location, should\n getPixelForTick: function(index) {\n var me = this;\n var offset = me.options.offset;\n if (me.isHorizontal()) {\n var innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n var pixel = (tickWidth * index) + me.paddingLeft;\n\n if (offset) {\n pixel += tickWidth / 2;\n }\n\n var finalVal = me.left + Math.round(pixel);\n finalVal += me.isFullWidth() ? me.margins.left : 0;\n return finalVal;\n }\n var innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n return me.top + (index * (innerHeight / (me._ticks.length - 1)));\n },\n\n // Utility for getting the pixel location of a percentage of scale\n getPixelForDecimal: function(decimal) {\n var me = this;\n if (me.isHorizontal()) {\n var innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n var valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n var finalVal = me.left + Math.round(valueOffset);\n finalVal += me.isFullWidth() ? me.margins.left : 0;\n return finalVal;\n }\n return me.top + (decimal * me.height);\n },\n\n getBasePixel: function() {\n return this.getPixelForValue(this.getBaseValue());\n },\n\n getBaseValue: function() {\n var me = this;\n var min = me.min;\n var max = me.max;\n\n return me.beginAtZero ? 0 :\n min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n },\n\n /**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @private\n */\n _autoSkip: function(ticks) {\n var skipRatio;\n var me = this;\n var isHorizontal = me.isHorizontal();\n var optionTicks = me.options.ticks.minor;\n var tickCount = ticks.length;\n var labelRotationRadians = helpers.toRadians(me.labelRotation);\n var cosRotation = Math.cos(labelRotationRadians);\n var longestRotatedLabel = me.longestLabelWidth * cosRotation;\n var result = [];\n var i, tick, shouldSkip;\n\n // figure out the maximum number of gridlines to show\n var maxTicks;\n if (optionTicks.maxTicksLimit) {\n maxTicks = optionTicks.maxTicksLimit;\n }\n\n if (isHorizontal) {\n skipRatio = false;\n\n if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n }\n\n // if they defined a max number of optionTicks,\n // increase skipRatio until that number is met\n if (maxTicks && tickCount > maxTicks) {\n skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n }\n }\n\n for (i = 0; i < tickCount; i++) {\n tick = ticks[i];\n\n // Since we always show the last tick,we need may need to hide the last shown one before\n shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n if (shouldSkip && i !== tickCount - 1 || helpers.isNullOrUndef(tick.label)) {\n // leave tick in place but make sure it's not displayed (#4635)\n delete tick.label;\n }\n result.push(tick);\n }\n return result;\n },\n\n // Actually draw the scale on the canvas\n // @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n draw: function(chartArea) {\n var me = this;\n var options = me.options;\n if (!options.display) {\n return;\n }\n\n var context = me.ctx;\n var globalDefaults = defaults.global;\n var optionTicks = options.ticks.minor;\n var optionMajorTicks = options.ticks.major || optionTicks;\n var gridLines = options.gridLines;\n var scaleLabel = options.scaleLabel;\n\n var isRotated = me.labelRotation !== 0;\n var isHorizontal = me.isHorizontal();\n\n var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n var tickFont = parseFontOptions(optionTicks);\n var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n var majorTickFont = parseFontOptions(optionMajorTicks);\n\n var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n var scaleLabelFont = parseFontOptions(scaleLabel);\n var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n var labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n var itemsToDraw = [];\n\n var xTickStart = options.position === 'right' ? me.left : me.right - tl;\n var xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n var yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl;\n var yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom;\n\n helpers.each(ticks, function(tick, index) {\n // autoskipper skipped this tick (#4635)\n if (tick.label === undefined) {\n return;\n }\n\n var label = tick.label;\n var lineWidth, lineColor, borderDash, borderDashOffset;\n if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n // Draw the first index specially\n lineWidth = gridLines.zeroLineWidth;\n lineColor = gridLines.zeroLineColor;\n borderDash = gridLines.zeroLineBorderDash;\n borderDashOffset = gridLines.zeroLineBorderDashOffset;\n } else {\n lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n }\n\n // Common properties\n var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n var textAlign = 'middle';\n var textBaseline = 'middle';\n var tickPadding = optionTicks.padding;\n\n if (isHorizontal) {\n var labelYOffset = tl + tickPadding;\n\n if (options.position === 'bottom') {\n // bottom\n textBaseline = !isRotated ? 'top' : 'middle';\n textAlign = !isRotated ? 'center' : 'right';\n labelY = me.top + labelYOffset;\n } else {\n // top\n textBaseline = !isRotated ? 'bottom' : 'middle';\n textAlign = !isRotated ? 'center' : 'left';\n labelY = me.bottom - labelYOffset;\n }\n\n var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n if (xLineValue < me.left) {\n lineColor = 'rgba(0,0,0,0)';\n }\n xLineValue += helpers.aliasPixel(lineWidth);\n\n labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n tx1 = tx2 = x1 = x2 = xLineValue;\n ty1 = yTickStart;\n ty2 = yTickEnd;\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n } else {\n var isLeft = options.position === 'left';\n var labelXOffset;\n\n if (optionTicks.mirror) {\n textAlign = isLeft ? 'left' : 'right';\n labelXOffset = tickPadding;\n } else {\n textAlign = isLeft ? 'right' : 'left';\n labelXOffset = tl + tickPadding;\n }\n\n labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n if (yLineValue < me.top) {\n lineColor = 'rgba(0,0,0,0)';\n }\n yLineValue += helpers.aliasPixel(lineWidth);\n\n labelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n tx1 = xTickStart;\n tx2 = xTickEnd;\n x1 = chartArea.left;\n x2 = chartArea.right;\n ty1 = ty2 = y1 = y2 = yLineValue;\n }\n\n itemsToDraw.push({\n tx1: tx1,\n ty1: ty1,\n tx2: tx2,\n ty2: ty2,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n labelX: labelX,\n labelY: labelY,\n glWidth: lineWidth,\n glColor: lineColor,\n glBorderDash: borderDash,\n glBorderDashOffset: borderDashOffset,\n rotation: -1 * labelRotationRadians,\n label: label,\n major: tick.major,\n textBaseline: textBaseline,\n textAlign: textAlign\n });\n });\n\n // Draw all of the tick labels, tick marks, and grid lines at the correct places\n helpers.each(itemsToDraw, function(itemToDraw) {\n if (gridLines.display) {\n context.save();\n context.lineWidth = itemToDraw.glWidth;\n context.strokeStyle = itemToDraw.glColor;\n if (context.setLineDash) {\n context.setLineDash(itemToDraw.glBorderDash);\n context.lineDashOffset = itemToDraw.glBorderDashOffset;\n }\n\n context.beginPath();\n\n if (gridLines.drawTicks) {\n context.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n context.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n }\n\n if (gridLines.drawOnChartArea) {\n context.moveTo(itemToDraw.x1, itemToDraw.y1);\n context.lineTo(itemToDraw.x2, itemToDraw.y2);\n }\n\n context.stroke();\n context.restore();\n }\n\n if (optionTicks.display) {\n // Make sure we draw text in the correct color and font\n context.save();\n context.translate(itemToDraw.labelX, itemToDraw.labelY);\n context.rotate(itemToDraw.rotation);\n context.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n context.textBaseline = itemToDraw.textBaseline;\n context.textAlign = itemToDraw.textAlign;\n\n var label = itemToDraw.label;\n if (helpers.isArray(label)) {\n for (var i = 0, y = 0; i < label.length; ++i) {\n // We just make sure the multiline element is a string here..\n context.fillText('' + label[i], 0, y);\n // apply same lineSpacing as calculated @ L#320\n y += (tickFont.size * 1.5);\n }\n } else {\n context.fillText(label, 0, 0);\n }\n context.restore();\n }\n });\n\n if (scaleLabel.display) {\n // Draw the scale label\n var scaleLabelX;\n var scaleLabelY;\n var rotation = 0;\n var halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n if (isHorizontal) {\n scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n scaleLabelY = options.position === 'bottom'\n ? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n : me.top + halfLineHeight + scaleLabelPadding.top;\n } else {\n var isLeft = options.position === 'left';\n scaleLabelX = isLeft\n ? me.left + halfLineHeight + scaleLabelPadding.top\n : me.right - halfLineHeight - scaleLabelPadding.top;\n scaleLabelY = me.top + ((me.bottom - me.top) / 2);\n rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n }\n\n context.save();\n context.translate(scaleLabelX, scaleLabelY);\n context.rotate(rotation);\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.fillStyle = scaleLabelFontColor; // render in correct colour\n context.font = scaleLabelFont.font;\n context.fillText(scaleLabel.labelString, 0, 0);\n context.restore();\n }\n\n if (gridLines.drawBorder) {\n // Draw the line at the edge of the axis\n context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n var x1 = me.left;\n var x2 = me.right;\n var y1 = me.top;\n var y2 = me.bottom;\n\n var aliasPixel = helpers.aliasPixel(context.lineWidth);\n if (isHorizontal) {\n y1 = y2 = options.position === 'top' ? me.bottom : me.top;\n y1 += aliasPixel;\n y2 += aliasPixel;\n } else {\n x1 = x2 = options.position === 'left' ? me.right : me.left;\n x1 += aliasPixel;\n x2 += aliasPixel;\n }\n\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n context.stroke();\n }\n }\n });\n };\n\n},{\"25\":25,\"26\":26,\"34\":34,\"45\":45}],33:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var helpers = require(45);\n\n module.exports = function(Chart) {\n\n Chart.scaleService = {\n // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n // use the new chart options to grab the correct scale\n constructors: {},\n // Use a registration function so that we can move to an ES6 map when we no longer need to support\n // old browsers\n\n // Scale config defaults\n defaults: {},\n registerScaleType: function(type, scaleConstructor, scaleDefaults) {\n this.constructors[type] = scaleConstructor;\n this.defaults[type] = helpers.clone(scaleDefaults);\n },\n getScaleConstructor: function(type) {\n return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n },\n getScaleDefaults: function(type) {\n // Return the scale defaults merged with the global settings so that we always use the latest ones\n return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n },\n updateScaleDefaults: function(type, additions) {\n var me = this;\n if (me.defaults.hasOwnProperty(type)) {\n me.defaults[type] = helpers.extend(me.defaults[type], additions);\n }\n },\n addScalesToLayout: function(chart) {\n // Adds each scale to the chart.boxes array to be sized accordingly\n helpers.each(chart.scales, function(scale) {\n // Set ILayoutItem parameters for backwards compatibility\n scale.fullWidth = scale.options.fullWidth;\n scale.position = scale.options.position;\n scale.weight = scale.options.weight;\n Chart.layoutService.addBox(chart, scale);\n });\n }\n };\n };\n\n},{\"25\":25,\"45\":45}],34:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n\n /**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\n module.exports = {\n /**\n * Namespace to hold generators for different types of ticks\n * @namespace Chart.Ticks.generators\n */\n generators: {\n /**\n * Interface for the options provided to the numeric tick generator\n * @interface INumericTickGenerationOptions\n */\n /**\n * The maximum number of ticks to display\n * @name INumericTickGenerationOptions#maxTicks\n * @type Number\n */\n /**\n * The distance between each tick.\n * @name INumericTickGenerationOptions#stepSize\n * @type Number\n * @optional\n */\n /**\n * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum\n * @name INumericTickGenerationOptions#min\n * @type Number\n * @optional\n */\n /**\n * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum\n * @name INumericTickGenerationOptions#max\n * @type Number\n * @optional\n */\n\n /**\n * Generate a set of linear ticks\n * @method Chart.Ticks.generators.linear\n * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n * @param dataRange {IRange} the range of the data\n * @returns {Array<Number>} array of tick values\n */\n linear: function(generationOptions, dataRange) {\n var ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n var spacing;\n if (generationOptions.stepSize && generationOptions.stepSize > 0) {\n spacing = generationOptions.stepSize;\n } else {\n var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n }\n var niceMin = Math.floor(dataRange.min / spacing) * spacing;\n var niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n // If min, max and stepSize is set and they make an evenly spaced scale use it.\n if (generationOptions.min && generationOptions.max && generationOptions.stepSize) {\n // If very close to our whole number, use it.\n if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n niceMin = generationOptions.min;\n niceMax = generationOptions.max;\n }\n }\n\n var numSpaces = (niceMax - niceMin) / spacing;\n // If very close to our rounded value, use it.\n if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n\n // Put the values into the ticks array\n ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n for (var j = 1; j < numSpaces; ++j) {\n ticks.push(niceMin + (j * spacing));\n }\n ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n return ticks;\n },\n\n /**\n * Generate a set of logarithmic ticks\n * @method Chart.Ticks.generators.logarithmic\n * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n * @param dataRange {IRange} the range of the data\n * @returns {Array<Number>} array of tick values\n */\n logarithmic: function(generationOptions, dataRange) {\n var ticks = [];\n var valueOrDefault = helpers.valueOrDefault;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph\n var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n var endExp = Math.floor(helpers.log10(dataRange.max));\n var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n var exp, significand;\n\n if (tickVal === 0) {\n exp = Math.floor(helpers.log10(dataRange.minNotZero));\n significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n ticks.push(tickVal);\n tickVal = significand * Math.pow(10, exp);\n } else {\n exp = Math.floor(helpers.log10(tickVal));\n significand = Math.floor(tickVal / Math.pow(10, exp));\n }\n\n do {\n ticks.push(tickVal);\n\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n }\n\n tickVal = significand * Math.pow(10, exp);\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n var lastTick = valueOrDefault(generationOptions.max, tickVal);\n ticks.push(lastTick);\n\n return ticks;\n }\n },\n\n /**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\n formatters: {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {String|Array} the label to display\n */\n values: function(value) {\n return helpers.isArray(value) ? value : '' + value;\n },\n\n /**\n * Formatter for linear numeric ticks\n * @method Chart.Ticks.formatters.linear\n * @param tickValue {Number} the value to be formatted\n * @param index {Number} the position of the tickValue parameter in the ticks array\n * @param ticks {Array<Number>} the list of ticks being converted\n * @return {String} string representation of the tickValue parameter\n */\n linear: function(tickValue, index, ticks) {\n // If we have lots of ticks, don't use the ones\n var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) > 1) {\n if (tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n }\n\n var logDelta = helpers.log10(Math.abs(delta));\n var tickString = '';\n\n if (tickValue !== 0) {\n var numDecimal = -1 * Math.floor(logDelta);\n numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n tickString = tickValue.toFixed(numDecimal);\n } else {\n tickString = '0'; // never show decimal places for 0\n }\n\n return tickString;\n },\n\n logarithmic: function(tickValue, index, ticks) {\n var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n if (tickValue === 0) {\n return '0';\n } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n return tickValue.toExponential();\n }\n return '';\n }\n }\n };\n\n},{\"45\":45}],35:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n tooltips: {\n enabled: true,\n custom: null,\n mode: 'nearest',\n position: 'average',\n intersect: true,\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleFontStyle: 'bold',\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleFontColor: '#fff',\n titleAlign: 'left',\n bodySpacing: 2,\n bodyFontColor: '#fff',\n bodyAlign: 'left',\n footerFontStyle: 'bold',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFontColor: '#fff',\n footerAlign: 'left',\n yPadding: 6,\n xPadding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n multiKeyBackground: '#fff',\n displayColors: true,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n callbacks: {\n // Args are: (tooltipItems, data)\n beforeTitle: helpers.noop,\n title: function(tooltipItems, data) {\n // Pick first xLabel for now\n var title = '';\n var labels = data.labels;\n var labelCount = labels ? labels.length : 0;\n\n if (tooltipItems.length > 0) {\n var item = tooltipItems[0];\n\n if (item.xLabel) {\n title = item.xLabel;\n } else if (labelCount > 0 && item.index < labelCount) {\n title = labels[item.index];\n }\n }\n\n return title;\n },\n afterTitle: helpers.noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: helpers.noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: helpers.noop,\n label: function(tooltipItem, data) {\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n if (label) {\n label += ': ';\n }\n label += tooltipItem.yLabel;\n return label;\n },\n labelColor: function(tooltipItem, chart) {\n var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n var activeElement = meta.data[tooltipItem.index];\n var view = activeElement._view;\n return {\n borderColor: view.borderColor,\n backgroundColor: view.backgroundColor\n };\n },\n labelTextColor: function() {\n return this._options.bodyFontColor;\n },\n afterLabel: helpers.noop,\n\n // Args are: (tooltipItems, data)\n afterBody: helpers.noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: helpers.noop,\n footer: helpers.noop,\n afterFooter: helpers.noop\n }\n }\n });\n\n module.exports = function(Chart) {\n\n /**\n * Helper method to merge the opacity into a color\n */\n function mergeOpacity(colorString, opacity) {\n var color = helpers.color(colorString);\n return color.alpha(opacity * color.alpha()).rgbaString();\n }\n\n // Helper to push or concat based on if the 2nd parameter is an array or not\n function pushOrConcat(base, toPush) {\n if (toPush) {\n if (helpers.isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n }\n\n // Private helper to create a tooltip item model\n // @param element : the chart element (point, arc, bar) to create the tooltip item for\n // @return : new tooltip item\n function createTooltipItem(element) {\n var xScale = element._xScale;\n var yScale = element._yScale || element._scale; // handle radar || polarArea charts\n var index = element._index;\n var datasetIndex = element._datasetIndex;\n\n return {\n xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n index: index,\n datasetIndex: datasetIndex,\n x: element._model.x,\n y: element._model.y\n };\n }\n\n /**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\n function getBaseModel(tooltipOpts) {\n var globalDefaults = defaults.global;\n var valueOrDefault = helpers.valueOrDefault;\n\n return {\n // Positioning\n xPadding: tooltipOpts.xPadding,\n yPadding: tooltipOpts.yPadding,\n xAlign: tooltipOpts.xAlign,\n yAlign: tooltipOpts.yAlign,\n\n // Body\n bodyFontColor: tooltipOpts.bodyFontColor,\n _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n _bodyAlign: tooltipOpts.bodyAlign,\n bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n bodySpacing: tooltipOpts.bodySpacing,\n\n // Title\n titleFontColor: tooltipOpts.titleFontColor,\n _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n _titleAlign: tooltipOpts.titleAlign,\n titleSpacing: tooltipOpts.titleSpacing,\n titleMarginBottom: tooltipOpts.titleMarginBottom,\n\n // Footer\n footerFontColor: tooltipOpts.footerFontColor,\n _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n _footerAlign: tooltipOpts.footerAlign,\n footerSpacing: tooltipOpts.footerSpacing,\n footerMarginTop: tooltipOpts.footerMarginTop,\n\n // Appearance\n caretSize: tooltipOpts.caretSize,\n cornerRadius: tooltipOpts.cornerRadius,\n backgroundColor: tooltipOpts.backgroundColor,\n opacity: 0,\n legendColorBackground: tooltipOpts.multiKeyBackground,\n displayColors: tooltipOpts.displayColors,\n borderColor: tooltipOpts.borderColor,\n borderWidth: tooltipOpts.borderWidth\n };\n }\n\n /**\n * Get the size of the tooltip\n */\n function getTooltipSize(tooltip, model) {\n var ctx = tooltip._chart.ctx;\n\n var height = model.yPadding * 2; // Tooltip Padding\n var width = 0;\n\n // Count of all lines in the body\n var body = model.body;\n var combinedBodyLength = body.reduce(function(count, bodyItem) {\n return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n }, 0);\n combinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n var titleLineCount = model.title.length;\n var footerLineCount = model.footer.length;\n var titleFontSize = model.titleFontSize;\n var bodyFontSize = model.bodyFontSize;\n var footerFontSize = model.footerFontSize;\n\n height += titleLineCount * titleFontSize; // Title Lines\n height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n height += combinedBodyLength * bodyFontSize; // Body Lines\n height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n height += footerLineCount * (footerFontSize); // Footer Lines\n height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n // Title width\n var widthPadding = 0;\n var maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n helpers.each(model.title, maxLineWidth);\n\n // Body width\n ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n helpers.each(body, function(bodyItem) {\n helpers.each(bodyItem.before, maxLineWidth);\n helpers.each(bodyItem.lines, maxLineWidth);\n helpers.each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n helpers.each(model.footer, maxLineWidth);\n\n // Add padding\n width += 2 * model.xPadding;\n\n return {\n width: width,\n height: height\n };\n }\n\n /**\n * Helper to get the alignment of a tooltip given the size\n */\n function determineAlignment(tooltip, size) {\n var model = tooltip._model;\n var chart = tooltip._chart;\n var chartArea = tooltip._chart.chartArea;\n var xAlign = 'center';\n var yAlign = 'center';\n\n if (model.y < size.height) {\n yAlign = 'top';\n } else if (model.y > (chart.height - size.height)) {\n yAlign = 'bottom';\n }\n\n var lf, rf; // functions to determine left, right alignment\n var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n var midX = (chartArea.left + chartArea.right) / 2;\n var midY = (chartArea.top + chartArea.bottom) / 2;\n\n if (yAlign === 'center') {\n lf = function(x) {\n return x <= midX;\n };\n rf = function(x) {\n return x > midX;\n };\n } else {\n lf = function(x) {\n return x <= (size.width / 2);\n };\n rf = function(x) {\n return x >= (chart.width - (size.width / 2));\n };\n }\n\n olf = function(x) {\n return x + size.width > chart.width;\n };\n orf = function(x) {\n return x - size.width < 0;\n };\n yf = function(y) {\n return y <= midY ? 'top' : 'bottom';\n };\n\n if (lf(model.x)) {\n xAlign = 'left';\n\n // Is tooltip too wide and goes over the right side of the chart.?\n if (olf(model.x)) {\n xAlign = 'center';\n yAlign = yf(model.y);\n }\n } else if (rf(model.x)) {\n xAlign = 'right';\n\n // Is tooltip too wide and goes outside left edge of canvas?\n if (orf(model.x)) {\n xAlign = 'center';\n yAlign = yf(model.y);\n }\n }\n\n var opts = tooltip._options;\n return {\n xAlign: opts.xAlign ? opts.xAlign : xAlign,\n yAlign: opts.yAlign ? opts.yAlign : yAlign\n };\n }\n\n /**\n * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\n function getBackgroundPoint(vm, size, alignment) {\n // Background Position\n var x = vm.x;\n var y = vm.y;\n\n var caretSize = vm.caretSize;\n var caretPadding = vm.caretPadding;\n var cornerRadius = vm.cornerRadius;\n var xAlign = alignment.xAlign;\n var yAlign = alignment.yAlign;\n var paddingAndSize = caretSize + caretPadding;\n var radiusAndPadding = cornerRadius + caretPadding;\n\n if (xAlign === 'right') {\n x -= size.width;\n } else if (xAlign === 'center') {\n x -= (size.width / 2);\n }\n\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= size.height + paddingAndSize;\n } else {\n y -= (size.height / 2);\n }\n\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 -= radiusAndPadding;\n } else if (xAlign === 'right') {\n x += radiusAndPadding;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n Chart.Tooltip = Element.extend({\n initialize: function() {\n this._model = getBaseModel(this._options);\n },\n\n // Get the title\n // Args are: (tooltipItem, data)\n getTitle: function() {\n var me = this;\n var opts = me._options;\n var callbacks = opts.callbacks;\n\n var beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n var title = callbacks.title.apply(me, arguments);\n var afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n var lines = [];\n lines = pushOrConcat(lines, beforeTitle);\n lines = pushOrConcat(lines, title);\n lines = pushOrConcat(lines, afterTitle);\n\n return lines;\n },\n\n // Args are: (tooltipItem, data)\n getBeforeBody: function() {\n var lines = this._options.callbacks.beforeBody.apply(this, arguments);\n return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n },\n\n // Args are: (tooltipItem, data)\n getBody: function(tooltipItems, data) {\n var me = this;\n var callbacks = me._options.callbacks;\n var bodyItems = [];\n\n helpers.each(tooltipItems, function(tooltipItem) {\n var bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data));\n pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n },\n\n // Args are: (tooltipItem, data)\n getAfterBody: function() {\n var lines = this._options.callbacks.afterBody.apply(this, arguments);\n return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n },\n\n // Get the footer and beforeFooter and afterFooter lines\n // Args are: (tooltipItem, data)\n getFooter: function() {\n var me = this;\n var callbacks = me._options.callbacks;\n\n var beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n var footer = callbacks.footer.apply(me, arguments);\n var afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n var lines = [];\n lines = pushOrConcat(lines, beforeFooter);\n lines = pushOrConcat(lines, footer);\n lines = pushOrConcat(lines, afterFooter);\n\n return lines;\n },\n\n update: function(changed) {\n var me = this;\n var opts = me._options;\n\n // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n // which breaks any animations.\n var existingModel = me._model;\n var model = me._model = getBaseModel(opts);\n var active = me._active;\n\n var data = me._data;\n\n // In the case where active.length === 0 we need to keep these at existing values for good animations\n var alignment = {\n xAlign: existingModel.xAlign,\n yAlign: existingModel.yAlign\n };\n var backgroundPoint = {\n x: existingModel.x,\n y: existingModel.y\n };\n var tooltipSize = {\n width: existingModel.width,\n height: existingModel.height\n };\n var tooltipPosition = {\n x: existingModel.caretX,\n y: existingModel.caretY\n };\n\n var i, len;\n\n if (active.length) {\n model.opacity = 1;\n\n var labelColors = [];\n var labelTextColors = [];\n tooltipPosition = Chart.Tooltip.positioners[opts.position](active, me._eventPosition);\n\n var tooltipItems = [];\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (opts.filter) {\n tooltipItems = tooltipItems.filter(function(a) {\n return opts.filter(a, data);\n });\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (opts.itemSort) {\n tooltipItems = tooltipItems.sort(function(a, b) {\n return opts.itemSort(a, b, data);\n });\n }\n\n // Determine colors for boxes\n helpers.each(tooltipItems, function(tooltipItem) {\n labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n });\n\n\n // Build the Text Lines\n model.title = me.getTitle(tooltipItems, data);\n model.beforeBody = me.getBeforeBody(tooltipItems, data);\n model.body = me.getBody(tooltipItems, data);\n model.afterBody = me.getAfterBody(tooltipItems, data);\n model.footer = me.getFooter(tooltipItems, data);\n\n // Initial positioning and colors\n model.x = Math.round(tooltipPosition.x);\n model.y = Math.round(tooltipPosition.y);\n model.caretPadding = opts.caretPadding;\n model.labelColors = labelColors;\n model.labelTextColors = labelTextColors;\n\n // data points\n model.dataPoints = tooltipItems;\n\n // We need to determine alignment of the tooltip\n tooltipSize = getTooltipSize(this, model);\n alignment = determineAlignment(this, tooltipSize);\n // Final Size and Position\n backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment);\n } else {\n model.opacity = 0;\n }\n\n model.xAlign = alignment.xAlign;\n model.yAlign = alignment.yAlign;\n model.x = backgroundPoint.x;\n model.y = backgroundPoint.y;\n model.width = tooltipSize.width;\n model.height = tooltipSize.height;\n\n // Point where the caret on the tooltip points to\n model.caretX = tooltipPosition.x;\n model.caretY = tooltipPosition.y;\n\n me._model = model;\n\n if (changed && opts.custom) {\n opts.custom.call(me, model);\n }\n\n return me;\n },\n drawCaret: function(tooltipPoint, size) {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n },\n getCaretPosition: function(tooltipPoint, size, vm) {\n var x1, x2, x3, y1, y2, y3;\n var caretSize = vm.caretSize;\n var cornerRadius = vm.cornerRadius;\n var xAlign = vm.xAlign;\n var yAlign = vm.yAlign;\n var ptX = tooltipPoint.x;\n var ptY = tooltipPoint.y;\n var width = size.width;\n var height = size.height;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n x3 = x1;\n\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n x3 = x1;\n\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n } else {\n if (xAlign === 'left') {\n x2 = ptX + cornerRadius + (caretSize);\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - cornerRadius - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n x2 = ptX + (width / 2);\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n y3 = y1;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n y3 = y1;\n // invert drawing order\n var tmp = x3;\n x3 = x1;\n x1 = tmp;\n }\n }\n return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n },\n drawTitle: function(pt, vm, ctx, opacity) {\n var title = vm.title;\n\n if (title.length) {\n ctx.textAlign = vm._titleAlign;\n ctx.textBaseline = 'top';\n\n var titleFontSize = vm.titleFontSize;\n var titleSpacing = vm.titleSpacing;\n\n ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n var i, len;\n for (i = 0, len = title.length; i < len; ++i) {\n ctx.fillText(title[i], pt.x, pt.y);\n pt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n if (i + 1 === title.length) {\n pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n },\n drawBody: function(pt, vm, ctx, opacity) {\n var bodyFontSize = vm.bodyFontSize;\n var bodySpacing = vm.bodySpacing;\n var body = vm.body;\n\n ctx.textAlign = vm._bodyAlign;\n ctx.textBaseline = 'top';\n ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n // Before Body\n var xLinePadding = 0;\n var fillLineOfText = function(line) {\n ctx.fillText(line, pt.x + xLinePadding, pt.y);\n pt.y += bodyFontSize + bodySpacing;\n };\n\n // Before body lines\n helpers.each(vm.beforeBody, fillLineOfText);\n\n var drawColorBoxes = vm.displayColors;\n xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n // Draw body lines now\n helpers.each(body, function(bodyItem, i) {\n helpers.each(bodyItem.before, fillLineOfText);\n\n helpers.each(bodyItem.lines, function(line) {\n // Draw Legend-like boxes if needed\n if (drawColorBoxes) {\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n // Border\n ctx.lineWidth = 1;\n ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n // Inner square\n ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n var textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n ctx.fillStyle = textColor;\n }\n\n fillLineOfText(line);\n });\n\n helpers.each(bodyItem.after, fillLineOfText);\n });\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n\n // After body lines\n helpers.each(vm.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n },\n drawFooter: function(pt, vm, ctx, opacity) {\n var footer = vm.footer;\n\n if (footer.length) {\n pt.y += vm.footerMarginTop;\n\n ctx.textAlign = vm._footerAlign;\n ctx.textBaseline = 'top';\n\n ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n helpers.each(footer, function(line) {\n ctx.fillText(line, pt.x, pt.y);\n pt.y += vm.footerFontSize + vm.footerSpacing;\n });\n }\n },\n drawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n ctx.lineWidth = vm.borderWidth;\n var xAlign = vm.xAlign;\n var yAlign = vm.yAlign;\n var x = pt.x;\n var y = pt.y;\n var width = tooltipSize.width;\n var height = tooltipSize.height;\n var radius = vm.cornerRadius;\n\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, tooltipSize);\n }\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (vm.borderWidth > 0) {\n ctx.stroke();\n }\n },\n draw: function() {\n var ctx = this._chart.ctx;\n var vm = this._view;\n\n if (vm.opacity === 0) {\n return;\n }\n\n var tooltipSize = {\n width: vm.width,\n height: vm.height\n };\n var pt = {\n x: vm.x,\n y: vm.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n // Truthy/falsey value for empty tooltip\n var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n if (this._options.enabled && hasTooltipContent) {\n // Draw Background\n this.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n // Draw Title, Body, and Footer\n pt.x += vm.xPadding;\n pt.y += vm.yPadding;\n\n // Titles\n this.drawTitle(pt, vm, ctx, opacity);\n\n // Body\n this.drawBody(pt, vm, ctx, opacity);\n\n // Footer\n this.drawFooter(pt, vm, ctx, opacity);\n }\n },\n\n /**\n * Handle an event\n * @private\n * @param {IEvent} event - The event to handle\n * @returns {Boolean} true if the tooltip changed\n */\n handleEvent: function(e) {\n var me = this;\n var options = me._options;\n var changed = false;\n\n me._lastActive = me._lastActive || [];\n\n // Find Active Elements for tooltips\n if (e.type === 'mouseout') {\n me._active = [];\n } else {\n me._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n }\n\n // Remember Last Actives\n changed = !helpers.arrayEquals(me._active, me._lastActive);\n\n // If tooltip didn't change, do not handle the target event\n if (!changed) {\n return false;\n }\n\n me._lastActive = me._active;\n\n if (options.enabled || options.custom) {\n me._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n var model = me._model;\n me.update(true);\n me.pivot();\n\n // See if our tooltip position changed\n changed |= (model.x !== me._model.x) || (model.y !== me._model.y);\n }\n\n return changed;\n }\n });\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n Chart.Tooltip.positioners = {\n /**\n * Average mode places the tooltip at the average position of the elements shown\n * @function Chart.Tooltip.positioners.average\n * @param elements {ChartElement[]} the elements being displayed in the tooltip\n * @returns {Point} tooltip position\n */\n average: function(elements) {\n if (!elements.length) {\n return false;\n }\n\n var i, len;\n var x = 0;\n var y = 0;\n var count = 0;\n\n for (i = 0, len = elements.length; i < len; ++i) {\n var el = elements[i];\n if (el && el.hasValue()) {\n var pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n\n return {\n x: Math.round(x / count),\n y: Math.round(y / count)\n };\n },\n\n /**\n * Gets the tooltip position nearest of the item nearest to the event position\n * @function Chart.Tooltip.positioners.nearest\n * @param elements {Chart.Element[]} the tooltip elements\n * @param eventPosition {Point} the position of the event in canvas coordinates\n * @returns {Point} the tooltip position\n */\n nearest: function(elements, eventPosition) {\n var x = eventPosition.x;\n var y = eventPosition.y;\n var minDistance = Number.POSITIVE_INFINITY;\n var i, len, nearestElement;\n\n for (i = 0, len = elements.length; i < len; ++i) {\n var el = elements[i];\n if (el && el.hasValue()) {\n var center = el.getCenterPoint();\n var d = helpers.distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n var tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x: x,\n y: y\n };\n }\n };\n };\n\n},{\"25\":25,\"26\":26,\"45\":45}],36:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n elements: {\n arc: {\n backgroundColor: defaults.global.defaultColor,\n borderColor: '#fff',\n borderWidth: 2\n }\n }\n });\n\n module.exports = Element.extend({\n inLabelRange: function(mouseX) {\n var vm = this._view;\n\n if (vm) {\n return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n }\n return false;\n },\n\n inRange: function(chartX, chartY) {\n var vm = this._view;\n\n if (vm) {\n var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n var\tangle = pointRelativePosition.angle;\n var distance = pointRelativePosition.distance;\n\n // Sanitise angle range\n var startAngle = vm.startAngle;\n var endAngle = vm.endAngle;\n while (endAngle < startAngle) {\n endAngle += 2.0 * Math.PI;\n }\n while (angle > endAngle) {\n angle -= 2.0 * Math.PI;\n }\n while (angle < startAngle) {\n angle += 2.0 * Math.PI;\n }\n\n // Check if within the range of the open/close angle\n var betweenAngles = (angle >= startAngle && angle <= endAngle);\n var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n return (betweenAngles && withinRadius);\n }\n return false;\n },\n\n getCenterPoint: function() {\n var vm = this._view;\n var halfAngle = (vm.startAngle + vm.endAngle) / 2;\n var halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n return {\n x: vm.x + Math.cos(halfAngle) * halfRadius,\n y: vm.y + Math.sin(halfAngle) * halfRadius\n };\n },\n\n getArea: function() {\n var vm = this._view;\n return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n },\n\n tooltipPosition: function() {\n var vm = this._view;\n var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n return {\n x: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n y: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n };\n },\n\n draw: function() {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var sA = vm.startAngle;\n var eA = vm.endAngle;\n\n ctx.beginPath();\n\n ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n ctx.closePath();\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = vm.borderWidth;\n\n ctx.fillStyle = vm.backgroundColor;\n\n ctx.fill();\n ctx.lineJoin = 'bevel';\n\n if (vm.borderWidth) {\n ctx.stroke();\n }\n }\n });\n\n},{\"25\":25,\"26\":26,\"45\":45}],37:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n var globalDefaults = defaults.global;\n\n defaults._set('global', {\n elements: {\n line: {\n tension: 0.4,\n backgroundColor: globalDefaults.defaultColor,\n borderWidth: 3,\n borderColor: globalDefaults.defaultColor,\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: 'miter',\n capBezierPoints: true,\n fill: true, // do we fill in the area between the line and its base axis\n }\n }\n });\n\n module.exports = Element.extend({\n draw: function() {\n var me = this;\n var vm = me._view;\n var ctx = me._chart.ctx;\n var spanGaps = vm.spanGaps;\n var points = me._children.slice(); // clone array\n var globalOptionLineElements = globalDefaults.elements.line;\n var lastDrawnIndex = -1;\n var index, current, previous, currentVM;\n\n // If we are looping, adding the first point again\n if (me._loop && points.length) {\n points.push(points[0]);\n }\n\n ctx.save();\n\n // Stroke Line Options\n ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n // IE 9 and 10 do not support line dash\n if (ctx.setLineDash) {\n ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n }\n\n ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n // Stroke Line\n ctx.beginPath();\n lastDrawnIndex = -1;\n\n for (index = 0; index < points.length; ++index) {\n current = points[index];\n previous = helpers.previousItem(points, index);\n currentVM = current._view;\n\n // First point moves to it's starting position no matter what\n if (index === 0) {\n if (!currentVM.skip) {\n ctx.moveTo(currentVM.x, currentVM.y);\n lastDrawnIndex = index;\n }\n } else {\n previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n if (!currentVM.skip) {\n if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n // There was a gap and this is the first point after the gap\n ctx.moveTo(currentVM.x, currentVM.y);\n } else {\n // Line to next point\n helpers.canvas.lineTo(ctx, previous._view, current._view);\n }\n lastDrawnIndex = index;\n }\n }\n }\n\n ctx.stroke();\n ctx.restore();\n }\n });\n\n},{\"25\":25,\"26\":26,\"45\":45}],38:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n var defaultColor = defaults.global.defaultColor;\n\n defaults._set('global', {\n elements: {\n point: {\n radius: 3,\n pointStyle: 'circle',\n backgroundColor: defaultColor,\n borderColor: defaultColor,\n borderWidth: 1,\n // Hover\n hitRadius: 1,\n hoverRadius: 4,\n hoverBorderWidth: 1\n }\n }\n });\n\n function xRange(mouseX) {\n var vm = this._view;\n return vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n }\n\n function yRange(mouseY) {\n var vm = this._view;\n return vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n }\n\n module.exports = Element.extend({\n inRange: function(mouseX, mouseY) {\n var vm = this._view;\n return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n },\n\n inLabelRange: xRange,\n inXRange: xRange,\n inYRange: yRange,\n\n getCenterPoint: function() {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n },\n\n getArea: function() {\n return Math.PI * Math.pow(this._view.radius, 2);\n },\n\n tooltipPosition: function() {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y,\n padding: vm.radius + vm.borderWidth\n };\n },\n\n draw: function(chartArea) {\n var vm = this._view;\n var model = this._model;\n var ctx = this._chart.ctx;\n var pointStyle = vm.pointStyle;\n var radius = vm.radius;\n var x = vm.x;\n var y = vm.y;\n var color = helpers.color;\n var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n var ratio = 0;\n\n if (vm.skip) {\n return;\n }\n\n ctx.strokeStyle = vm.borderColor || defaultColor;\n ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n ctx.fillStyle = vm.backgroundColor || defaultColor;\n\n // Cliping for Points.\n // going out from inner charArea?\n if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) {\n // Point fade out\n if (model.x < chartArea.left) {\n ratio = (x - model.x) / (chartArea.left - model.x);\n } else if (chartArea.right * errMargin < model.x) {\n ratio = (model.x - x) / (model.x - chartArea.right);\n } else if (model.y < chartArea.top) {\n ratio = (y - model.y) / (chartArea.top - model.y);\n } else if (chartArea.bottom * errMargin < model.y) {\n ratio = (model.y - y) / (model.y - chartArea.bottom);\n }\n ratio = Math.round(ratio * 100) / 100;\n ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString();\n ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString();\n }\n\n helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y);\n }\n });\n\n},{\"25\":25,\"26\":26,\"45\":45}],39:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n\n defaults._set('global', {\n elements: {\n rectangle: {\n backgroundColor: defaults.global.defaultColor,\n borderColor: defaults.global.defaultColor,\n borderSkipped: 'bottom',\n borderWidth: 0\n }\n }\n });\n\n function isVertical(bar) {\n return bar._view.width !== undefined;\n }\n\n /**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\n function getBarBounds(bar) {\n var vm = bar._view;\n var x1, x2, y1, y2;\n\n if (isVertical(bar)) {\n // vertical\n var halfWidth = vm.width / 2;\n x1 = vm.x - halfWidth;\n x2 = vm.x + halfWidth;\n y1 = Math.min(vm.y, vm.base);\n y2 = Math.max(vm.y, vm.base);\n } else {\n // horizontal bar\n var halfHeight = vm.height / 2;\n x1 = Math.min(vm.x, vm.base);\n x2 = Math.max(vm.x, vm.base);\n y1 = vm.y - halfHeight;\n y2 = vm.y + halfHeight;\n }\n\n return {\n left: x1,\n top: y1,\n right: x2,\n bottom: y2\n };\n }\n\n module.exports = Element.extend({\n draw: function() {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var left, right, top, bottom, signX, signY, borderSkipped;\n var borderWidth = vm.borderWidth;\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n var halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n var corners = [\n [left, bottom],\n [left, top],\n [right, top],\n [right, bottom]\n ];\n\n // Find first (starting) corner with fallback to 'bottom'\n var borders = ['bottom', 'left', 'top', 'right'];\n var startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n var corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (var i = 1; i < 4; i++) {\n corner = cornerAt(i);\n ctx.lineTo(corner[0], corner[1]);\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n },\n\n height: function() {\n var vm = this._view;\n return vm.base - vm.y;\n },\n\n inRange: function(mouseX, mouseY) {\n var inRange = false;\n\n if (this._view) {\n var bounds = getBarBounds(this);\n inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n }\n\n return inRange;\n },\n\n inLabelRange: function(mouseX, mouseY) {\n var me = this;\n if (!me._view) {\n return false;\n }\n\n var inRange = false;\n var bounds = getBarBounds(me);\n\n if (isVertical(me)) {\n inRange = mouseX >= bounds.left && mouseX <= bounds.right;\n } else {\n inRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n }\n\n return inRange;\n },\n\n inXRange: function(mouseX) {\n var bounds = getBarBounds(this);\n return mouseX >= bounds.left && mouseX <= bounds.right;\n },\n\n inYRange: function(mouseY) {\n var bounds = getBarBounds(this);\n return mouseY >= bounds.top && mouseY <= bounds.bottom;\n },\n\n getCenterPoint: function() {\n var vm = this._view;\n var x, y;\n if (isVertical(this)) {\n x = vm.x;\n y = (vm.y + vm.base) / 2;\n } else {\n x = (vm.x + vm.base) / 2;\n y = vm.y;\n }\n\n return {x: x, y: y};\n },\n\n getArea: function() {\n var vm = this._view;\n return vm.width * Math.abs(vm.y - vm.base);\n },\n\n tooltipPosition: function() {\n var vm = this._view;\n return {\n x: vm.x,\n y: vm.y\n };\n }\n });\n\n},{\"25\":25,\"26\":26}],40:[function(require,module,exports){\n 'use strict';\n\n module.exports = {};\n module.exports.Arc = require(36);\n module.exports.Line = require(37);\n module.exports.Point = require(38);\n module.exports.Rectangle = require(39);\n\n},{\"36\":36,\"37\":37,\"38\":38,\"39\":39}],41:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(42);\n\n /**\n * @namespace Chart.helpers.canvas\n */\n var exports = module.exports = {\n /**\n * Clears the entire canvas associated to the given `chart`.\n * @param {Chart} chart - The chart for which to clear the canvas.\n */\n clear: function(chart) {\n chart.ctx.clearRect(0, 0, chart.width, chart.height);\n },\n\n /**\n * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n * given size (width, height) and the same `radius` for all corners.\n * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n * @param {Number} width - The rectangle's width.\n * @param {Number} height - The rectangle's height.\n * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n */\n roundedRect: function(ctx, x, y, width, height, radius) {\n if (radius) {\n var rx = Math.min(radius, width / 2);\n var ry = Math.min(radius, height / 2);\n\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.quadraticCurveTo(x, y, x + rx, y);\n } else {\n ctx.rect(x, y, width, height);\n }\n },\n\n drawPoint: function(ctx, style, radius, x, y) {\n var type, edgeLength, xOffset, yOffset, height, size;\n\n if (typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n switch (style) {\n // Default includes circle\n default:\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, Math.PI * 2);\n ctx.closePath();\n ctx.fill();\n break;\n case 'triangle':\n ctx.beginPath();\n edgeLength = 3 * radius / Math.sqrt(3);\n height = edgeLength * Math.sqrt(3) / 2;\n ctx.moveTo(x - edgeLength / 2, y + height / 3);\n ctx.lineTo(x + edgeLength / 2, y + height / 3);\n ctx.lineTo(x, y - 2 * height / 3);\n ctx.closePath();\n ctx.fill();\n break;\n case 'rect':\n size = 1 / Math.SQRT2 * radius;\n ctx.beginPath();\n ctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n ctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n break;\n case 'rectRounded':\n var offset = radius / Math.SQRT2;\n var leftX = x - offset;\n var topY = y - offset;\n var sideSize = Math.SQRT2 * radius;\n ctx.beginPath();\n this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2);\n ctx.closePath();\n ctx.fill();\n break;\n case 'rectRot':\n size = 1 / Math.SQRT2 * radius;\n ctx.beginPath();\n ctx.moveTo(x - size, y);\n ctx.lineTo(x, y + size);\n ctx.lineTo(x + size, y);\n ctx.lineTo(x, y - size);\n ctx.closePath();\n ctx.fill();\n break;\n case 'cross':\n ctx.beginPath();\n ctx.moveTo(x, y + radius);\n ctx.lineTo(x, y - radius);\n ctx.moveTo(x - radius, y);\n ctx.lineTo(x + radius, y);\n ctx.closePath();\n break;\n case 'crossRot':\n ctx.beginPath();\n xOffset = Math.cos(Math.PI / 4) * radius;\n yOffset = Math.sin(Math.PI / 4) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x - xOffset, y + yOffset);\n ctx.lineTo(x + xOffset, y - yOffset);\n ctx.closePath();\n break;\n case 'star':\n ctx.beginPath();\n ctx.moveTo(x, y + radius);\n ctx.lineTo(x, y - radius);\n ctx.moveTo(x - radius, y);\n ctx.lineTo(x + radius, y);\n xOffset = Math.cos(Math.PI / 4) * radius;\n yOffset = Math.sin(Math.PI / 4) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x - xOffset, y + yOffset);\n ctx.lineTo(x + xOffset, y - yOffset);\n ctx.closePath();\n break;\n case 'line':\n ctx.beginPath();\n ctx.moveTo(x - radius, y);\n ctx.lineTo(x + radius, y);\n ctx.closePath();\n break;\n case 'dash':\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + radius, y);\n ctx.closePath();\n break;\n }\n\n ctx.stroke();\n },\n\n clipArea: function(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 },\n\n unclipArea: function(ctx) {\n ctx.restore();\n },\n\n lineTo: function(ctx, previous, target, flip) {\n if (target.steppedLine) {\n if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== '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 return;\n }\n\n if (!target.tension) {\n ctx.lineTo(target.x, target.y);\n return;\n }\n\n ctx.bezierCurveTo(\n flip ? previous.controlPointPreviousX : previous.controlPointNextX,\n flip ? previous.controlPointPreviousY : previous.controlPointNextY,\n flip ? target.controlPointNextX : target.controlPointPreviousX,\n flip ? target.controlPointNextY : target.controlPointPreviousY,\n target.x,\n target.y);\n }\n };\n\n// DEPRECATIONS\n\n /**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.clear = exports.clear;\n\n /**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.drawRoundedRectangle = function(ctx) {\n ctx.beginPath();\n exports.roundedRect.apply(exports, arguments);\n ctx.closePath();\n };\n\n},{\"42\":42}],42:[function(require,module,exports){\n 'use strict';\n\n /**\n * @namespace Chart.helpers\n */\n var helpers = {\n /**\n * An empty function that can be used, for example, for optional callback.\n */\n noop: function() {},\n\n /**\n * Returns a unique id, sequentially generated from a global variable.\n * @returns {Number}\n * @function\n */\n uid: (function() {\n var id = 0;\n return function() {\n return id++;\n };\n }()),\n\n /**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param {*} value - The value to test.\n * @returns {Boolean}\n * @since 2.7.0\n */\n isNullOrUndef: function(value) {\n return value === null || typeof value === 'undefined';\n },\n\n /**\n * Returns true if `value` is an array, else returns false.\n * @param {*} value - The value to test.\n * @returns {Boolean}\n * @function\n */\n isArray: Array.isArray ? Array.isArray : function(value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n },\n\n /**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param {*} value - The value to test.\n * @returns {Boolean}\n * @since 2.7.0\n */\n isObject: function(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n },\n\n /**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param {*} value - The value to return if defined.\n * @param {*} defaultValue - The value to return if `value` is undefined.\n * @returns {*}\n */\n valueOrDefault: function(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n },\n\n /**\n * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n * @param {Array} value - The array to lookup for value at `index`.\n * @param {Number} index - The index in `value` to lookup for value.\n * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n * @returns {*}\n */\n valueAtIndexOrDefault: function(value, index, defaultValue) {\n return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n },\n\n /**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param {Function} fn - The function to call.\n * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n * @returns {*}\n */\n callback: function(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n },\n\n /**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param {Object|Array} loopable - The object or array to be iterated.\n * @param {Function} fn - The function to call for each item.\n * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n */\n each: function(loopable, fn, thisArg, reverse) {\n var i, len, keys;\n if (helpers.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 (helpers.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 },\n\n /**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @see http://stackoverflow.com/a/14853974\n * @param {Array} a0 - The array to compare\n * @param {Array} a1 - The array to compare\n * @returns {Boolean}\n */\n arrayEquals: function(a0, a1) {\n var i, ilen, v0, v1;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0 instanceof Array && v1 instanceof Array) {\n if (!helpers.arrayEquals(v0, v1)) {\n return false;\n }\n } else if (v0 !== v1) {\n // NOTE: two different object instances will never be equal: {x:20} != {x:20}\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param {*} source - The value to clone.\n * @returns {*}\n */\n clone: function(source) {\n if (helpers.isArray(source)) {\n return source.map(helpers.clone);\n }\n\n if (helpers.isObject(source)) {\n var target = {};\n var keys = Object.keys(source);\n var klen = keys.length;\n var k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = helpers.clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n },\n\n /**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n * @private\n */\n _merger: function(key, target, source, options) {\n var tval = target[key];\n var sval = source[key];\n\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.merge(tval, sval, options);\n } else {\n target[key] = helpers.clone(sval);\n }\n },\n\n /**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\n _mergerIf: function(key, target, source) {\n var tval = target[key];\n var sval = source[key];\n\n if (helpers.isObject(tval) && helpers.isObject(sval)) {\n helpers.mergeIf(tval, sval);\n } else if (!target.hasOwnProperty(key)) {\n target[key] = helpers.clone(sval);\n }\n },\n\n /**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param {Object} target - The target object in which all sources are merged into.\n * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n * @param {Object} [options] - Merging options:\n * @param {Function} [options.merger] - The merge method (key, target, source, options)\n * @returns {Object} The `target` object.\n */\n merge: function(target, source, options) {\n var sources = helpers.isArray(source) ? source : [source];\n var ilen = sources.length;\n var merge, i, keys, klen, k;\n\n if (!helpers.isObject(target)) {\n return target;\n }\n\n options = options || {};\n merge = options.merger || helpers._merger;\n\n for (i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!helpers.isObject(source)) {\n continue;\n }\n\n keys = Object.keys(source);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n merge(keys[k], target, source, options);\n }\n }\n\n return target;\n },\n\n /**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param {Object} target - The target object in which all sources are merged into.\n * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n * @returns {Object} The `target` object.\n */\n mergeIf: function(target, source) {\n return helpers.merge(target, source, {merger: helpers._mergerIf});\n }\n };\n\n module.exports = helpers;\n\n// DEPRECATIONS\n\n /**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\n helpers.callCallback = helpers.callback;\n\n /**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.indexOf = function(array, item, fromIndex) {\n return Array.prototype.indexOf.call(array, item, fromIndex);\n };\n\n /**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.getValueOrDefault = helpers.valueOrDefault;\n\n /**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n},{}],43:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(42);\n\n /**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\n var effects = {\n linear: function(t) {\n return t;\n },\n\n easeInQuad: function(t) {\n return t * t;\n },\n\n easeOutQuad: function(t) {\n return -t * (t - 2);\n },\n\n easeInOutQuad: function(t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t;\n }\n return -0.5 * ((--t) * (t - 2) - 1);\n },\n\n easeInCubic: function(t) {\n return t * t * t;\n },\n\n easeOutCubic: function(t) {\n return (t = t - 1) * t * t + 1;\n },\n\n easeInOutCubic: function(t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t + 2);\n },\n\n easeInQuart: function(t) {\n return t * t * t * t;\n },\n\n easeOutQuart: function(t) {\n return -((t = t - 1) * t * t * t - 1);\n },\n\n easeInOutQuart: function(t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t;\n }\n return -0.5 * ((t -= 2) * t * t * t - 2);\n },\n\n easeInQuint: function(t) {\n return t * t * t * t * t;\n },\n\n easeOutQuint: function(t) {\n return (t = t - 1) * t * t * t * t + 1;\n },\n\n easeInOutQuint: function(t) {\n if ((t /= 0.5) < 1) {\n return 0.5 * t * t * t * t * t;\n }\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n },\n\n easeInSine: function(t) {\n return -Math.cos(t * (Math.PI / 2)) + 1;\n },\n\n easeOutSine: function(t) {\n return Math.sin(t * (Math.PI / 2));\n },\n\n easeInOutSine: function(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n },\n\n easeInExpo: function(t) {\n return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n },\n\n easeOutExpo: function(t) {\n return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n },\n\n easeInOutExpo: function(t) {\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if ((t /= 0.5) < 1) {\n return 0.5 * Math.pow(2, 10 * (t - 1));\n }\n return 0.5 * (-Math.pow(2, -10 * --t) + 2);\n },\n\n easeInCirc: function(t) {\n if (t >= 1) {\n return t;\n }\n return -(Math.sqrt(1 - t * t) - 1);\n },\n\n easeOutCirc: function(t) {\n return Math.sqrt(1 - (t = t - 1) * t);\n },\n\n easeInOutCirc: function(t) {\n if ((t /= 0.5) < 1) {\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n },\n\n easeInElastic: function(t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n },\n\n easeOutElastic: function(t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n if (!p) {\n p = 0.3;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n },\n\n easeInOutElastic: function(t) {\n var s = 1.70158;\n var p = 0;\n var a = 1;\n if (t === 0) {\n return 0;\n }\n if ((t /= 0.5) === 2) {\n return 1;\n }\n if (!p) {\n p = 0.45;\n }\n if (a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(1 / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n easeInBack: function(t) {\n var s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack: function(t) {\n var s = 1.70158;\n return (t = t - 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack: function(t) {\n var 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\n easeInBounce: function(t) {\n return 1 - effects.easeOutBounce(1 - t);\n },\n\n easeOutBounce: function(t) {\n if (t < (1 / 2.75)) {\n return 7.5625 * t * t;\n }\n if (t < (2 / 2.75)) {\n return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n }\n if (t < (2.5 / 2.75)) {\n return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n }\n return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n },\n\n easeInOutBounce: function(t) {\n if (t < 0.5) {\n return effects.easeInBounce(t * 2) * 0.5;\n }\n return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n };\n\n module.exports = {\n effects: effects\n };\n\n// DEPRECATIONS\n\n /**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.easingEffects = effects;\n\n},{\"42\":42}],44:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(42);\n\n /**\n * @alias Chart.helpers.options\n * @namespace\n */\n module.exports = {\n /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\n toLineHeight: function(value, size) {\n var matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n },\n\n /**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param {Number|Object} value - If a number, set the value to all TRBL component,\n * else, if and object, use defined properties and sets undefined ones to 0.\n * @returns {Object} The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\n toPadding: function(value) {\n var t, r, b, l;\n\n if (helpers.isObject(value)) {\n t = +value.top || 0;\n r = +value.right || 0;\n b = +value.bottom || 0;\n l = +value.left || 0;\n } else {\n t = r = b = l = +value || 0;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n height: t + b,\n width: l + r\n };\n },\n\n /**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param {Array[]} inputs - An array of values, falling back to the last value.\n * @param {Object} [context] - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param {Number} [index] - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @since 2.7.0\n */\n resolve: function(inputs, context, index) {\n var i, ilen, value;\n\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 }\n if (index !== undefined && helpers.isArray(value)) {\n value = value[index];\n }\n if (value !== undefined) {\n return value;\n }\n }\n }\n };\n\n},{\"42\":42}],45:[function(require,module,exports){\n 'use strict';\n\n module.exports = require(42);\n module.exports.easing = require(43);\n module.exports.canvas = require(41);\n module.exports.options = require(44);\n\n},{\"41\":41,\"42\":42,\"43\":43,\"44\":44}],46:[function(require,module,exports){\n /**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\n module.exports = {\n acquireContext: function(item) {\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n\n return item && item.getContext('2d') || null;\n }\n };\n\n},{}],47:[function(require,module,exports){\n /**\n * Chart.Platform implementation for targeting a web browser\n */\n\n 'use strict';\n\n var helpers = require(45);\n\n var EXPANDO_KEY = '$chartjs';\n var CSS_PREFIX = 'chartjs-';\n var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\n var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\n var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n /**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\n var 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 };\n\n /**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\n function readUsedSize(element, property) {\n var value = helpers.getStyle(element, property);\n var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? Number(matches[1]) : undefined;\n }\n\n /**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\n function initCanvas(canvas, config) {\n var style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n var renderHeight = canvas.getAttribute('height');\n var renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\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\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n\n if (renderWidth === null || renderWidth === '') {\n var displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (renderHeight === null || renderHeight === '') {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (config.options.aspectRatio || 2);\n } else {\n var displayHeight = readUsedSize(canvas, 'height');\n if (displayWidth !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n }\n\n /**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\n var supportsEventListenerOptions = (function() {\n var supports = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function() {\n supports = true;\n }\n });\n window.addEventListener('e', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return supports;\n }());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\n var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\n function addEventListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n\n function removeEventListener(node, type, listener) {\n node.removeEventListener(type, listener, eventListenerOptions);\n }\n\n function createEvent(type, chart, x, y, nativeEvent) {\n return {\n type: type,\n chart: chart,\n native: nativeEvent || null,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n }\n\n function fromNativeEvent(event, chart) {\n var type = EVENT_TYPES[event.type] || event.type;\n var pos = helpers.getRelativePosition(event, chart);\n return createEvent(type, chart, pos.x, pos.y, event);\n }\n\n function throttled(fn, thisArg) {\n var ticking = false;\n var args = [];\n\n return function() {\n args = Array.prototype.slice.call(arguments);\n thisArg = thisArg || this;\n\n if (!ticking) {\n ticking = true;\n helpers.requestAnimFrame.call(window, function() {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n }\n\n// Implementation based on https://github.com/marcj/css-element-queries\n function createResizer(handler) {\n var resizer = document.createElement('div');\n var cls = CSS_PREFIX + 'size-monitor';\n var maxSize = 1000000;\n var style =\n 'position:absolute;' +\n 'left:0;' +\n 'top:0;' +\n 'right:0;' +\n 'bottom:0;' +\n 'overflow:hidden;' +\n 'pointer-events:none;' +\n 'visibility:hidden;' +\n 'z-index:-1;';\n\n resizer.style.cssText = style;\n resizer.className = cls;\n resizer.innerHTML =\n '<div class=\"' + cls + '-expand\" style=\"' + style + '\">' +\n '<div style=\"' +\n 'position:absolute;' +\n 'width:' + maxSize + 'px;' +\n 'height:' + maxSize + 'px;' +\n 'left:0;' +\n 'top:0\">' +\n '</div>' +\n '</div>' +\n '<div class=\"' + cls + '-shrink\" style=\"' + style + '\">' +\n '<div style=\"' +\n 'position:absolute;' +\n 'width:200%;' +\n 'height:200%;' +\n 'left:0; ' +\n 'top:0\">' +\n '</div>' +\n '</div>';\n\n var expand = resizer.childNodes[0];\n var shrink = resizer.childNodes[1];\n\n resizer._reset = function() {\n expand.scrollLeft = maxSize;\n expand.scrollTop = maxSize;\n shrink.scrollLeft = maxSize;\n shrink.scrollTop = maxSize;\n };\n var onScroll = function() {\n resizer._reset();\n handler();\n };\n\n addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n return resizer;\n }\n\n// https://davidwalsh.name/detect-node-insertion\n function watchForRender(node, handler) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n var proxy = expando.renderProxy = function(e) {\n if (e.animationName === CSS_RENDER_ANIMATION) {\n handler();\n }\n };\n\n helpers.each(ANIMATION_START_EVENTS, function(type) {\n addEventListener(node, type, proxy);\n });\n\n node.classList.add(CSS_RENDER_MONITOR);\n }\n\n function unwatchForRender(node) {\n var expando = node[EXPANDO_KEY] || {};\n var proxy = expando.renderProxy;\n\n if (proxy) {\n helpers.each(ANIMATION_START_EVENTS, function(type) {\n removeEventListener(node, type, proxy);\n });\n\n delete expando.renderProxy;\n }\n\n node.classList.remove(CSS_RENDER_MONITOR);\n }\n\n function addResizeListener(node, listener, chart) {\n var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n // Let's keep track of this added resizer and thus avoid DOM query when removing it.\n var resizer = expando.resizer = createResizer(throttled(function() {\n if (expando.resizer) {\n return listener(createEvent('resize', chart));\n }\n }));\n\n // The resizer needs to be attached to the node parent, so we first need to be\n // sure that `node` is attached to the DOM before injecting the resizer element.\n watchForRender(node, function() {\n if (expando.resizer) {\n var container = node.parentNode;\n if (container && container !== resizer.parentNode) {\n container.insertBefore(resizer, container.firstChild);\n }\n\n // The container size might have changed, let's reset the resizer state.\n resizer._reset();\n }\n });\n }\n\n function removeResizeListener(node) {\n var expando = node[EXPANDO_KEY] || {};\n var resizer = expando.resizer;\n\n delete expando.resizer;\n unwatchForRender(node);\n\n if (resizer && resizer.parentNode) {\n resizer.parentNode.removeChild(resizer);\n }\n }\n\n function injectCSS(platform, css) {\n // http://stackoverflow.com/q/3922139\n var style = platform._style || document.createElement('style');\n if (!platform._style) {\n platform._style = style;\n css = '/* Chart.js */\\n' + css;\n style.setAttribute('type', 'text/css');\n document.getElementsByTagName('head')[0].appendChild(style);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n\n module.exports = {\n /**\n * This property holds whether this platform is enabled for the current environment.\n * Currently used by platform.js to select the proper implementation.\n * @private\n */\n _enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n initialize: function() {\n var keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n injectCSS(this,\n // DOM rendering detection\n // https://davidwalsh.name/detect-node-insertion\n '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n '.' + CSS_RENDER_MONITOR + '{' +\n '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n '}'\n );\n },\n\n acquireContext: function(item, config) {\n if (typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n var context = item && item.getContext && item.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the item has a context2D which has item as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === item) {\n initCanvas(item, config);\n return context;\n }\n\n return null;\n },\n\n releaseContext: function(context) {\n var canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return;\n }\n\n var initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(function(prop) {\n var value = initial[prop];\n if (helpers.isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n helpers.each(initial.style || {}, function(value, key) {\n canvas.style[key] = value;\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n },\n\n addEventListener: function(chart, type, listener) {\n var canvas = chart.canvas;\n if (type === 'resize') {\n // Note: the resize event is not supported on all browsers.\n addResizeListener(canvas, listener, chart);\n return;\n }\n\n var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n var proxies = expando.proxies || (expando.proxies = {});\n var proxy = proxies[chart.id + '_' + type] = function(event) {\n listener(fromNativeEvent(event, chart));\n };\n\n addEventListener(canvas, type, proxy);\n },\n\n removeEventListener: function(chart, type, listener) {\n var canvas = chart.canvas;\n if (type === 'resize') {\n // Note: the resize event is not supported on all browsers.\n removeResizeListener(canvas, listener);\n return;\n }\n\n var expando = listener[EXPANDO_KEY] || {};\n var proxies = expando.proxies || {};\n var proxy = proxies[chart.id + '_' + type];\n if (!proxy) {\n return;\n }\n\n removeEventListener(canvas, type, proxy);\n }\n };\n\n// DEPRECATIONS\n\n /**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.addEvent = addEventListener;\n\n /**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\n helpers.removeEvent = removeEventListener;\n\n},{\"45\":45}],48:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n var basic = require(46);\n var dom = require(47);\n\n// @TODO Make possible to select another platform at build time.\n var implementation = dom._enabled ? dom : basic;\n\n /**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\n module.exports = helpers.extend({\n /**\n * @since 2.7.0\n */\n initialize: function() {},\n\n /**\n * Called at chart construction time, returns a context2d instance implementing\n * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n * @param {*} item - The native item from which to acquire context (platform specific)\n * @param {Object} options - The chart options\n * @returns {CanvasRenderingContext2D} context2d instance\n */\n acquireContext: function() {},\n\n /**\n * Called at chart destruction time, releases any resources associated to the context\n * previously returned by the acquireContext() method.\n * @param {CanvasRenderingContext2D} context - The context2d instance\n * @returns {Boolean} true if the method succeeded, else false\n */\n releaseContext: function() {},\n\n /**\n * Registers the specified listener on the given chart.\n * @param {Chart} chart - Chart from which to listen for event\n * @param {String} type - The ({@link IEvent}) type to listen for\n * @param {Function} listener - Receives a notification (an object that implements\n * the {@link IEvent} interface) when an event of the specified type occurs.\n */\n addEventListener: function() {},\n\n /**\n * Removes the specified listener previously registered with addEventListener.\n * @param {Chart} chart -Chart from which to remove the listener\n * @param {String} type - The ({@link IEvent}) type to remove\n * @param {Function} listener - The listener function to remove from the event target.\n */\n removeEventListener: function() {}\n\n }, implementation);\n\n /**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n /**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n\n},{\"45\":45,\"46\":46,\"47\":47}],49:[function(require,module,exports){\n /**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n 'use strict';\n\n var defaults = require(25);\n var elements = require(40);\n var helpers = require(45);\n\n defaults._set('global', {\n plugins: {\n filler: {\n propagate: true\n }\n }\n });\n\n module.exports = function() {\n\n var mappers = {\n dataset: function(source) {\n var index = source.fill;\n var chart = source.chart;\n var meta = chart.getDatasetMeta(index);\n var visible = meta && chart.isDatasetVisible(index);\n var points = (visible && meta.dataset._children) || [];\n var length = points.length || 0;\n\n return !length ? null : function(point, i) {\n return (i < length && points[i]._view) || null;\n };\n },\n\n boundary: function(source) {\n var boundary = source.boundary;\n var x = boundary ? boundary.x : null;\n var y = boundary ? boundary.y : null;\n\n return function(point) {\n return {\n x: x === null ? point.x : x,\n y: y === null ? point.y : y,\n };\n };\n }\n };\n\n // @todo if (fill[0] === '#')\n function decodeFill(el, index, count) {\n var model = el._model || {};\n var fill = model.fill;\n var target;\n\n if (fill === undefined) {\n fill = !!model.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n\n target = parseFloat(fill, 10);\n if (isFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n }\n\n switch (fill) {\n // compatibility\n case 'bottom':\n return 'start';\n case 'top':\n return 'end';\n case 'zero':\n return 'origin';\n // supported boundaries\n case 'origin':\n case 'start':\n case 'end':\n return fill;\n // invalid fill values\n default:\n return false;\n }\n }\n\n function computeBoundary(source) {\n var model = source.el._model || {};\n var scale = source.el._scale || {};\n var fill = source.fill;\n var target = null;\n var horizontal;\n\n if (isFinite(fill)) {\n return null;\n }\n\n // Backward compatibility: until v3, we still need to support boundary values set on\n // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n // controllers might still use it (e.g. the Smith chart).\n\n if (fill === 'start') {\n target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n } else if (fill === 'end') {\n target = model.scaleTop === undefined ? scale.top : model.scaleTop;\n } else if (model.scaleZero !== undefined) {\n target = model.scaleZero;\n } else if (scale.getBasePosition) {\n target = scale.getBasePosition();\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n\n if (target !== undefined && target !== null) {\n if (target.x !== undefined && target.y !== undefined) {\n return target;\n }\n\n if (typeof target === 'number' && isFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n }\n\n return null;\n }\n\n function resolveTarget(sources, index, propagate) {\n var source = sources[index];\n var fill = source.fill;\n var visited = [index];\n var target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n }\n\n function createMapper(source) {\n var fill = source.fill;\n var type = 'dataset';\n\n if (fill === false) {\n return null;\n }\n\n if (!isFinite(fill)) {\n type = 'boundary';\n }\n\n return mappers[type](source);\n }\n\n function isDrawable(point) {\n return point && !point.skip;\n }\n\n function drawArea(ctx, curve0, curve1, len0, len1) {\n var i;\n\n if (!len0 || !len1) {\n return;\n }\n\n // building first area curve (normal)\n ctx.moveTo(curve0[0].x, curve0[0].y);\n for (i = 1; i < len0; ++i) {\n helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n }\n\n // joining the two area curves\n ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n // building opposite area curve (reverse)\n for (i = len1 - 1; i > 0; --i) {\n helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n }\n }\n\n function doFill(ctx, points, mapper, view, color, loop) {\n var count = points.length;\n var span = view.spanGaps;\n var curve0 = [];\n var curve1 = [];\n var len0 = 0;\n var len1 = 0;\n var i, ilen, index, p0, p1, d0, d1;\n\n ctx.beginPath();\n\n for (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n index = i % count;\n p0 = points[index]._view;\n p1 = mapper(p0, index, view);\n d0 = isDrawable(p0);\n d1 = isDrawable(p1);\n\n if (d0 && d1) {\n len0 = curve0.push(p0);\n len1 = curve1.push(p1);\n } else if (len0 && len1) {\n if (!span) {\n drawArea(ctx, curve0, curve1, len0, len1);\n len0 = len1 = 0;\n curve0 = [];\n curve1 = [];\n } else {\n if (d0) {\n curve0.push(p0);\n }\n if (d1) {\n curve1.push(p1);\n }\n }\n }\n }\n\n drawArea(ctx, curve0, curve1, len0, len1);\n\n ctx.closePath();\n ctx.fillStyle = color;\n ctx.fill();\n }\n\n return {\n id: 'filler',\n\n afterDatasetsUpdate: function(chart, options) {\n var count = (chart.data.datasets || []).length;\n var propagate = options.propagate;\n var sources = [];\n var meta, i, el, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n el = meta.dataset;\n source = null;\n\n if (el && el._model && el instanceof elements.Line) {\n source = {\n visible: chart.isDatasetVisible(i),\n fill: decodeFill(el, i, count),\n chart: chart,\n el: el\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source) {\n continue;\n }\n\n source.fill = resolveTarget(sources, i, propagate);\n source.boundary = computeBoundary(source);\n source.mapper = createMapper(source);\n }\n },\n\n beforeDatasetDraw: function(chart, args) {\n var meta = args.meta.$filler;\n if (!meta) {\n return;\n }\n\n var ctx = chart.ctx;\n var el = meta.el;\n var view = el._view;\n var points = el._children || [];\n var mapper = meta.mapper;\n var color = view.backgroundColor || defaults.global.defaultColor;\n\n if (mapper && color && points.length) {\n helpers.canvas.clipArea(ctx, chart.chartArea);\n doFill(ctx, points, mapper, view, color, el._loop);\n helpers.canvas.unclipArea(ctx);\n }\n }\n };\n };\n\n},{\"25\":25,\"40\":40,\"45\":45}],50:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n legend: {\n display: true,\n position: 'top',\n fullWidth: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick: function(e, legendItem) {\n var index = legendItem.datasetIndex;\n var ci = this.chart;\n var meta = ci.getDatasetMeta(index);\n\n // See controller.isDatasetVisible comment\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n // We hid a dataset ... rerender the chart\n ci.update();\n },\n\n onHover: null,\n\n labels: {\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels: function(chart) {\n var data = chart.data;\n return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n return {\n text: dataset.label,\n fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n hidden: !chart.isDatasetVisible(i),\n lineCap: dataset.borderCapStyle,\n lineDash: dataset.borderDash,\n lineDashOffset: dataset.borderDashOffset,\n lineJoin: dataset.borderJoinStyle,\n lineWidth: dataset.borderWidth,\n strokeStyle: dataset.borderColor,\n pointStyle: dataset.pointStyle,\n\n // Below is extra data used for toggling the datasets\n datasetIndex: i\n };\n }, this) : [];\n }\n }\n },\n\n legendCallback: function(chart) {\n var text = [];\n text.push('<ul class=\"' + chart.id + '-legend\">');\n for (var i = 0; i < chart.data.datasets.length; i++) {\n text.push('<li><span style=\"background-color:' + chart.data.datasets[i].backgroundColor + '\"></span>');\n if (chart.data.datasets[i].label) {\n text.push(chart.data.datasets[i].label);\n }\n text.push('</li>');\n }\n text.push('</ul>');\n return text.join('');\n }\n });\n\n module.exports = function(Chart) {\n\n var layout = Chart.layoutService;\n var noop = helpers.noop;\n\n /**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\n function getBoxWidth(labelOpts, fontSize) {\n return labelOpts.usePointStyle ?\n fontSize * Math.SQRT2 :\n labelOpts.boxWidth;\n }\n\n Chart.Legend = Element.extend({\n\n initialize: function(config) {\n helpers.extend(this, config);\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n },\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all legend types.\n // Any function can be extended by the legend type\n\n beforeUpdate: noop,\n update: function(maxWidth, maxHeight, margins) {\n var me = this;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = margins;\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n // Labels\n me.beforeBuildLabels();\n me.buildLabels();\n me.afterBuildLabels();\n\n // Fit\n me.beforeFit();\n me.fit();\n me.afterFit();\n //\n me.afterUpdate();\n\n return me.minSize;\n },\n afterUpdate: noop,\n\n //\n\n beforeSetDimensions: noop,\n setDimensions: function() {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n\n // Reset minSize\n me.minSize = {\n width: 0,\n height: 0\n };\n },\n afterSetDimensions: noop,\n\n //\n\n beforeBuildLabels: noop,\n buildLabels: function() {\n var me = this;\n var labelOpts = me.options.labels || {};\n var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter(function(item) {\n return labelOpts.filter(item, me.chart.data);\n });\n }\n\n if (me.options.reverse) {\n legendItems.reverse();\n }\n\n me.legendItems = legendItems;\n },\n afterBuildLabels: noop,\n\n //\n\n beforeFit: noop,\n fit: function() {\n var me = this;\n var opts = me.options;\n var labelOpts = opts.labels;\n var display = opts.display;\n\n var ctx = me.ctx;\n\n var globalDefault = defaults.global;\n var valueOrDefault = helpers.valueOrDefault;\n var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n // Reset hit boxes\n var hitboxes = me.legendHitBoxes = [];\n\n var minSize = me.minSize;\n var isHorizontal = me.isHorizontal();\n\n if (isHorizontal) {\n minSize.width = me.maxWidth; // fill all the width\n minSize.height = display ? 10 : 0;\n } else {\n minSize.width = display ? 10 : 0;\n minSize.height = me.maxHeight; // fill all the height\n }\n\n // Increase sizes here\n if (display) {\n ctx.font = labelFont;\n\n if (isHorizontal) {\n // Labels\n\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n var lineWidths = me.lineWidths = [0];\n var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'top';\n\n helpers.each(me.legendItems, function(legendItem, i) {\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n totalHeight += fontSize + (labelOpts.padding);\n lineWidths[lineWidths.length] = me.left;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: width,\n height: fontSize\n };\n\n lineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n });\n\n minSize.height += totalHeight;\n\n } else {\n var vPadding = labelOpts.padding;\n var columnWidths = me.columnWidths = [];\n var totalWidth = labelOpts.padding;\n var currentColWidth = 0;\n var currentColHeight = 0;\n var itemHeight = fontSize + vPadding;\n\n helpers.each(me.legendItems, function(legendItem, i) {\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n // If too tall, go to new column\n if (currentColHeight + itemHeight > minSize.height) {\n totalWidth += currentColWidth + labelOpts.padding;\n columnWidths.push(currentColWidth); // previous column width\n\n currentColWidth = 0;\n currentColHeight = 0;\n }\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight;\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: itemWidth,\n height: fontSize\n };\n });\n\n totalWidth += currentColWidth;\n columnWidths.push(currentColWidth);\n minSize.width += totalWidth;\n }\n }\n\n me.width = minSize.width;\n me.height = minSize.height;\n },\n afterFit: noop,\n\n // Shared Methods\n isHorizontal: function() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n },\n\n // Actually draw the legend on the canvas\n draw: function() {\n var me = this;\n var opts = me.options;\n var labelOpts = opts.labels;\n var globalDefault = defaults.global;\n var lineDefault = globalDefault.elements.line;\n var legendWidth = me.width;\n var lineWidths = me.lineWidths;\n\n if (opts.display) {\n var ctx = me.ctx;\n var valueOrDefault = helpers.valueOrDefault;\n var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n var cursor;\n\n // Canvas setup\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = fontColor; // for strikethrough effect\n ctx.fillStyle = fontColor; // render in correct colour\n ctx.font = labelFont;\n\n var boxWidth = getBoxWidth(labelOpts, fontSize);\n var hitboxes = me.legendHitBoxes;\n\n // current position\n var drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n if (ctx.setLineDash) {\n // IE 9 and 10 do not support line dash\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n }\n\n if (opts.labels && opts.labels.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n var radius = fontSize * Math.SQRT2 / 2;\n var offSet = radius / Math.SQRT2;\n var centerX = x + offSet;\n var centerY = y + offSet;\n\n // Draw pointStyle as legend symbol\n helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n } else {\n // Draw box as legend symbol\n if (!isLineWidthZero) {\n ctx.strokeRect(x, y, boxWidth, fontSize);\n }\n ctx.fillRect(x, y, boxWidth, fontSize);\n }\n\n ctx.restore();\n };\n var fillText = function(x, y, legendItem, textWidth) {\n var halfFontSize = fontSize / 2;\n var xLeft = boxWidth + halfFontSize + x;\n var yMiddle = y + halfFontSize;\n\n ctx.fillText(legendItem.text, xLeft, yMiddle);\n\n if (legendItem.hidden) {\n // Strikethrough the text if hidden\n ctx.beginPath();\n ctx.lineWidth = 2;\n ctx.moveTo(xLeft, yMiddle);\n ctx.lineTo(xLeft + textWidth, yMiddle);\n ctx.stroke();\n }\n };\n\n // Horizontal\n var isHorizontal = me.isHorizontal();\n if (isHorizontal) {\n cursor = {\n x: me.left + ((legendWidth - lineWidths[0]) / 2),\n y: me.top + labelOpts.padding,\n line: 0\n };\n } else {\n cursor = {\n x: me.left + labelOpts.padding,\n y: me.top + labelOpts.padding,\n line: 0\n };\n }\n\n var itemHeight = fontSize + labelOpts.padding;\n helpers.each(me.legendItems, function(legendItem, i) {\n var textWidth = ctx.measureText(legendItem.text).width;\n var width = boxWidth + (fontSize / 2) + textWidth;\n var x = cursor.x;\n var y = cursor.y;\n\n if (isHorizontal) {\n if (x + width >= legendWidth) {\n y = cursor.y += itemHeight;\n cursor.line++;\n x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n }\n } else if (y + itemHeight > me.bottom) {\n x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n y = cursor.y = me.top + labelOpts.padding;\n cursor.line++;\n }\n\n drawLegendBox(x, y, legendItem);\n\n hitboxes[i].left = x;\n hitboxes[i].top = y;\n\n // Fill the actual label\n fillText(x, y, legendItem, textWidth);\n\n if (isHorizontal) {\n cursor.x += width + (labelOpts.padding);\n } else {\n cursor.y += itemHeight;\n }\n\n });\n }\n },\n\n /**\n * Handle an event\n * @private\n * @param {IEvent} event - The event to handle\n * @return {Boolean} true if a change occured\n */\n handleEvent: function(e) {\n var me = this;\n var opts = me.options;\n var type = e.type === 'mouseup' ? 'click' : e.type;\n var changed = false;\n\n if (type === 'mousemove') {\n if (!opts.onHover) {\n return;\n }\n } else if (type === 'click') {\n if (!opts.onClick) {\n return;\n }\n } else {\n return;\n }\n\n // Chart event already has relative position in it\n var x = e.x;\n var y = e.y;\n\n if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n // See if we are touching one of the dataset boxes\n var lh = me.legendHitBoxes;\n for (var i = 0; i < lh.length; ++i) {\n var hitBox = lh[i];\n\n if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n // Touching an element\n if (type === 'click') {\n // use e.native for backwards compatibility\n opts.onClick.call(me, e.native, me.legendItems[i]);\n changed = true;\n break;\n } else if (type === 'mousemove') {\n // use e.native for backwards compatibility\n opts.onHover.call(me, e.native, me.legendItems[i]);\n changed = true;\n break;\n }\n }\n }\n }\n\n return changed;\n }\n });\n\n function createNewLegendAndAttach(chart, legendOpts) {\n var legend = new Chart.Legend({\n ctx: chart.ctx,\n options: legendOpts,\n chart: chart\n });\n\n layout.configure(chart, legend, legendOpts);\n layout.addBox(chart, legend);\n chart.legend = legend;\n }\n\n return {\n id: 'legend',\n\n beforeInit: function(chart) {\n var legendOpts = chart.options.legend;\n\n if (legendOpts) {\n createNewLegendAndAttach(chart, legendOpts);\n }\n },\n\n beforeUpdate: function(chart) {\n var legendOpts = chart.options.legend;\n var legend = chart.legend;\n\n if (legendOpts) {\n helpers.mergeIf(legendOpts, defaults.global.legend);\n\n if (legend) {\n layout.configure(chart, legend, legendOpts);\n legend.options = legendOpts;\n } else {\n createNewLegendAndAttach(chart, legendOpts);\n }\n } else if (legend) {\n layout.removeBox(chart, legend);\n delete chart.legend;\n }\n },\n\n afterEvent: function(chart, e) {\n var legend = chart.legend;\n if (legend) {\n legend.handleEvent(e);\n }\n }\n };\n };\n\n},{\"25\":25,\"26\":26,\"45\":45}],51:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var Element = require(26);\n var helpers = require(45);\n\n defaults._set('global', {\n title: {\n display: false,\n fontStyle: 'bold',\n fullWidth: true,\n lineHeight: 1.2,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n }\n });\n\n module.exports = function(Chart) {\n\n var layout = Chart.layoutService;\n var noop = helpers.noop;\n\n Chart.Title = Element.extend({\n initialize: function(config) {\n var me = this;\n helpers.extend(me, config);\n\n // Contains hit boxes for each dataset (in dataset order)\n me.legendHitBoxes = [];\n },\n\n // These methods are ordered by lifecycle. Utilities then follow.\n\n beforeUpdate: noop,\n update: function(maxWidth, maxHeight, margins) {\n var me = this;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n me.beforeUpdate();\n\n // Absorb the master measurements\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me.margins = margins;\n\n // Dimensions\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n // Labels\n me.beforeBuildLabels();\n me.buildLabels();\n me.afterBuildLabels();\n\n // Fit\n me.beforeFit();\n me.fit();\n me.afterFit();\n //\n me.afterUpdate();\n\n return me.minSize;\n\n },\n afterUpdate: noop,\n\n //\n\n beforeSetDimensions: noop,\n setDimensions: function() {\n var me = this;\n // Set the unconstrained dimension before label rotation\n if (me.isHorizontal()) {\n // Reset position before calculating rotation\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n\n // Reset position before calculating rotation\n me.top = 0;\n me.bottom = me.height;\n }\n\n // Reset padding\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n\n // Reset minSize\n me.minSize = {\n width: 0,\n height: 0\n };\n },\n afterSetDimensions: noop,\n\n //\n\n beforeBuildLabels: noop,\n buildLabels: noop,\n afterBuildLabels: noop,\n\n //\n\n beforeFit: noop,\n fit: function() {\n var me = this;\n var valueOrDefault = helpers.valueOrDefault;\n var opts = me.options;\n var display = opts.display;\n var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n var minSize = me.minSize;\n var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n if (me.isHorizontal()) {\n minSize.width = me.maxWidth; // fill all the width\n minSize.height = textSize;\n } else {\n minSize.width = textSize;\n minSize.height = me.maxHeight; // fill all the height\n }\n\n me.width = minSize.width;\n me.height = minSize.height;\n\n },\n afterFit: noop,\n\n // Shared Methods\n isHorizontal: function() {\n var pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n },\n\n // Actually draw the title block on the canvas\n draw: function() {\n var me = this;\n var ctx = me.ctx;\n var valueOrDefault = helpers.valueOrDefault;\n var opts = me.options;\n var globalDefaults = defaults.global;\n\n if (opts.display) {\n var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n var offset = lineHeight / 2 + opts.padding;\n var rotation = 0;\n var top = me.top;\n var left = me.left;\n var bottom = me.bottom;\n var right = me.right;\n var maxWidth, titleX, titleY;\n\n ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n ctx.font = titleFont;\n\n // Horizontal\n if (me.isHorizontal()) {\n titleX = left + ((right - left) / 2); // midpoint of the width\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n titleX = opts.position === 'left' ? left + offset : right - offset;\n titleY = top + ((bottom - top) / 2);\n maxWidth = bottom - top;\n rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n }\n\n ctx.save();\n ctx.translate(titleX, titleY);\n ctx.rotate(rotation);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n var text = opts.text;\n if (helpers.isArray(text)) {\n var y = 0;\n for (var i = 0; i < text.length; ++i) {\n ctx.fillText(text[i], 0, y, maxWidth);\n y += lineHeight;\n }\n } else {\n ctx.fillText(text, 0, 0, maxWidth);\n }\n\n ctx.restore();\n }\n }\n });\n\n function createNewTitleBlockAndAttach(chart, titleOpts) {\n var title = new Chart.Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart: chart\n });\n\n layout.configure(chart, title, titleOpts);\n layout.addBox(chart, title);\n chart.titleBlock = title;\n }\n\n return {\n id: 'title',\n\n beforeInit: function(chart) {\n var titleOpts = chart.options.title;\n\n if (titleOpts) {\n createNewTitleBlockAndAttach(chart, titleOpts);\n }\n },\n\n beforeUpdate: function(chart) {\n var titleOpts = chart.options.title;\n var titleBlock = chart.titleBlock;\n\n if (titleOpts) {\n helpers.mergeIf(titleOpts, defaults.global.title);\n\n if (titleBlock) {\n layout.configure(chart, titleBlock, titleOpts);\n titleBlock.options = titleOpts;\n } else {\n createNewTitleBlockAndAttach(chart, titleOpts);\n }\n } else if (titleBlock) {\n Chart.layoutService.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n }\n }\n };\n };\n\n},{\"25\":25,\"26\":26,\"45\":45}],52:[function(require,module,exports){\n 'use strict';\n\n module.exports = function(Chart) {\n\n // Default config for a category scale\n var defaultConfig = {\n position: 'bottom'\n };\n\n var DatasetScale = Chart.Scale.extend({\n /**\n * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n * else fall back to data.labels\n * @private\n */\n getLabels: function() {\n var data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n },\n\n determineDataLimits: function() {\n var me = this;\n var labels = me.getLabels();\n me.minIndex = 0;\n me.maxIndex = labels.length - 1;\n var findIndex;\n\n if (me.options.ticks.min !== undefined) {\n // user specified min value\n findIndex = labels.indexOf(me.options.ticks.min);\n me.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n }\n\n if (me.options.ticks.max !== undefined) {\n // user specified max value\n findIndex = labels.indexOf(me.options.ticks.max);\n me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n }\n\n me.min = labels[me.minIndex];\n me.max = labels[me.maxIndex];\n },\n\n buildTicks: function() {\n var me = this;\n var labels = me.getLabels();\n // If we are viewing some subset of labels, slice the original array\n me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n },\n\n getLabelForIndex: function(index, datasetIndex) {\n var me = this;\n var data = me.chart.data;\n var isHorizontal = me.isHorizontal();\n\n if (data.yLabels && !isHorizontal) {\n return me.getRightValue(data.datasets[datasetIndex].data[index]);\n }\n return me.ticks[index - me.minIndex];\n },\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue: function(value, index) {\n var me = this;\n var offset = me.options.offset;\n // 1 is added because we need the length but we have the indexes\n var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n // If value is a data object, then index is the index in the data array,\n // not the index of the scale. We need to change that.\n var valueCategory;\n if (value !== undefined && value !== null) {\n valueCategory = me.isHorizontal() ? value.x : value.y;\n }\n if (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n var labels = me.getLabels();\n value = valueCategory || value;\n var idx = labels.indexOf(value);\n index = idx !== -1 ? idx : index;\n }\n\n if (me.isHorizontal()) {\n var valueWidth = me.width / offsetAmt;\n var widthOffset = (valueWidth * (index - me.minIndex));\n\n if (offset) {\n widthOffset += (valueWidth / 2);\n }\n\n return me.left + Math.round(widthOffset);\n }\n var valueHeight = me.height / offsetAmt;\n var heightOffset = (valueHeight * (index - me.minIndex));\n\n if (offset) {\n heightOffset += (valueHeight / 2);\n }\n\n return me.top + Math.round(heightOffset);\n },\n getPixelForTick: function(index) {\n return this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n },\n getValueForPixel: function(pixel) {\n var me = this;\n var offset = me.options.offset;\n var value;\n var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n var horz = me.isHorizontal();\n var valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n pixel -= horz ? me.left : me.top;\n\n if (offset) {\n pixel -= (valueDimension / 2);\n }\n\n if (pixel <= 0) {\n value = 0;\n } else {\n value = Math.round(pixel / valueDimension);\n }\n\n return value + me.minIndex;\n },\n getBasePixel: function() {\n return this.bottom;\n }\n });\n\n Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig);\n\n };\n\n},{}],53:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var helpers = require(45);\n var Ticks = require(34);\n\n module.exports = function(Chart) {\n\n var defaultConfig = {\n position: 'left',\n ticks: {\n callback: Ticks.formatters.linear\n }\n };\n\n var LinearScale = Chart.LinearScaleBase.extend({\n\n determineDataLimits: function() {\n var me = this;\n var opts = me.options;\n var chart = me.chart;\n var data = chart.data;\n var datasets = data.datasets;\n var isHorizontal = me.isHorizontal();\n var DEFAULT_MIN = 0;\n var DEFAULT_MAX = 1;\n\n function IDMatches(meta) {\n return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n }\n\n // First Calculate the range\n me.min = null;\n me.max = null;\n\n var hasStacks = opts.stacked;\n if (hasStacks === undefined) {\n helpers.each(datasets, function(dataset, datasetIndex) {\n if (hasStacks) {\n return;\n }\n\n var meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n meta.stack !== undefined) {\n hasStacks = true;\n }\n });\n }\n\n if (opts.stacked || hasStacks) {\n var valuesPerStack = {};\n\n helpers.each(datasets, function(dataset, datasetIndex) {\n var meta = chart.getDatasetMeta(datasetIndex);\n var key = [\n meta.type,\n // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n meta.stack\n ].join('.');\n\n if (valuesPerStack[key] === undefined) {\n valuesPerStack[key] = {\n positiveValues: [],\n negativeValues: []\n };\n }\n\n // Store these per type\n var positiveValues = valuesPerStack[key].positiveValues;\n var negativeValues = valuesPerStack[key].negativeValues;\n\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n helpers.each(dataset.data, function(rawValue, index) {\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n\n positiveValues[index] = positiveValues[index] || 0;\n negativeValues[index] = negativeValues[index] || 0;\n\n if (opts.relativePoints) {\n positiveValues[index] = 100;\n } else if (value < 0) {\n negativeValues[index] += value;\n } else {\n positiveValues[index] += value;\n }\n });\n }\n });\n\n helpers.each(valuesPerStack, function(valuesForType) {\n var values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n var minVal = helpers.min(values);\n var maxVal = helpers.max(values);\n me.min = me.min === null ? minVal : Math.min(me.min, minVal);\n me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n });\n\n } else {\n helpers.each(datasets, function(dataset, datasetIndex) {\n var meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n helpers.each(dataset.data, function(rawValue, index) {\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n\n if (me.min === null) {\n me.min = value;\n } else if (value < me.min) {\n me.min = value;\n }\n\n if (me.max === null) {\n me.max = value;\n } else if (value > me.max) {\n me.max = value;\n }\n });\n }\n });\n }\n\n me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n this.handleTickRangeOptions();\n },\n getTickLimit: function() {\n var maxTicks;\n var me = this;\n var tickOpts = me.options.ticks;\n\n if (me.isHorizontal()) {\n maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n } else {\n // The factor of 2 used to scale the font size has been experimentally determined.\n var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n }\n\n return maxTicks;\n },\n // Called after the ticks are built. We need\n handleDirectionalChanges: function() {\n if (!this.isHorizontal()) {\n // We are in a vertical orientation. The top value is the highest. So reverse the array\n this.ticks.reverse();\n }\n },\n getLabelForIndex: function(index, datasetIndex) {\n return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n },\n // Utils\n getPixelForValue: function(value) {\n // This must be called after fit has been run so that\n // this.left, this.top, this.right, and this.bottom have been defined\n var me = this;\n var start = me.start;\n\n var rightValue = +me.getRightValue(value);\n var pixel;\n var range = me.end - start;\n\n if (me.isHorizontal()) {\n pixel = me.left + (me.width / range * (rightValue - start));\n return Math.round(pixel);\n }\n\n pixel = me.bottom - (me.height / range * (rightValue - start));\n return Math.round(pixel);\n },\n getValueForPixel: function(pixel) {\n var me = this;\n var isHorizontal = me.isHorizontal();\n var innerDimension = isHorizontal ? me.width : me.height;\n var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n return me.start + ((me.end - me.start) * offset);\n },\n getPixelForTick: function(index) {\n return this.getPixelForValue(this.ticksAsNumbers[index]);\n }\n });\n Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig);\n\n };\n\n},{\"25\":25,\"34\":34,\"45\":45}],54:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n var Ticks = require(34);\n\n module.exports = function(Chart) {\n\n var noop = helpers.noop;\n\n Chart.LinearScaleBase = Chart.Scale.extend({\n getRightValue: function(value) {\n if (typeof value === 'string') {\n return +value;\n }\n return Chart.Scale.prototype.getRightValue.call(this, value);\n },\n\n handleTickRangeOptions: function() {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n\n // If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n // do nothing since that would make the chart weird. If the user really wants a weird chart\n // axis, they can manually override it\n if (tickOpts.beginAtZero) {\n var minSign = helpers.sign(me.min);\n var maxSign = helpers.sign(me.max);\n\n if (minSign < 0 && maxSign < 0) {\n // move the top up to 0\n me.max = 0;\n } else if (minSign > 0 && maxSign > 0) {\n // move the bottom down to 0\n me.min = 0;\n }\n }\n\n var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n if (tickOpts.min !== undefined) {\n me.min = tickOpts.min;\n } else if (tickOpts.suggestedMin !== undefined) {\n if (me.min === null) {\n me.min = tickOpts.suggestedMin;\n } else {\n me.min = Math.min(me.min, tickOpts.suggestedMin);\n }\n }\n\n if (tickOpts.max !== undefined) {\n me.max = tickOpts.max;\n } else if (tickOpts.suggestedMax !== undefined) {\n if (me.max === null) {\n me.max = tickOpts.suggestedMax;\n } else {\n me.max = Math.max(me.max, tickOpts.suggestedMax);\n }\n }\n\n if (setMin !== setMax) {\n // We set the min or the max but not both.\n // So ensure that our range is good\n // Inverted or 0 length range can happen when\n // ticks.min is set, and no datasets are visible\n if (me.min >= me.max) {\n if (setMin) {\n me.max = me.min + 1;\n } else {\n me.min = me.max - 1;\n }\n }\n }\n\n if (me.min === me.max) {\n me.max++;\n\n if (!tickOpts.beginAtZero) {\n me.min--;\n }\n }\n },\n getTickLimit: noop,\n handleDirectionalChanges: noop,\n\n buildTicks: function() {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n var maxTicks = me.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n var numericGeneratorOptions = {\n maxTicks: maxTicks,\n min: tickOpts.min,\n max: tickOpts.max,\n stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n };\n var ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me);\n\n me.handleDirectionalChanges();\n\n // At this point, we need to update our max and min given the tick values since we have expanded the\n // range of the scale\n me.max = helpers.max(ticks);\n me.min = helpers.min(ticks);\n\n if (tickOpts.reverse) {\n ticks.reverse();\n\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n },\n convertTicksToLabels: function() {\n var me = this;\n me.ticksAsNumbers = me.ticks.slice();\n me.zeroLineIndex = me.ticks.indexOf(0);\n\n Chart.Scale.prototype.convertTicksToLabels.call(me);\n }\n });\n };\n\n},{\"34\":34,\"45\":45}],55:[function(require,module,exports){\n 'use strict';\n\n var helpers = require(45);\n var Ticks = require(34);\n\n module.exports = function(Chart) {\n\n var defaultConfig = {\n position: 'left',\n\n // label settings\n ticks: {\n callback: Ticks.formatters.logarithmic\n }\n };\n\n var LogarithmicScale = Chart.Scale.extend({\n determineDataLimits: function() {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n var chart = me.chart;\n var data = chart.data;\n var datasets = data.datasets;\n var valueOrDefault = helpers.valueOrDefault;\n var isHorizontal = me.isHorizontal();\n function IDMatches(meta) {\n return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n }\n\n // Calculate Range\n me.min = null;\n me.max = null;\n me.minNotZero = null;\n\n var hasStacks = opts.stacked;\n if (hasStacks === undefined) {\n helpers.each(datasets, function(dataset, datasetIndex) {\n if (hasStacks) {\n return;\n }\n\n var meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n meta.stack !== undefined) {\n hasStacks = true;\n }\n });\n }\n\n if (opts.stacked || hasStacks) {\n var valuesPerStack = {};\n\n helpers.each(datasets, function(dataset, datasetIndex) {\n var meta = chart.getDatasetMeta(datasetIndex);\n var key = [\n meta.type,\n // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n meta.stack\n ].join('.');\n\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n if (valuesPerStack[key] === undefined) {\n valuesPerStack[key] = [];\n }\n\n helpers.each(dataset.data, function(rawValue, index) {\n var values = valuesPerStack[key];\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n\n values[index] = values[index] || 0;\n\n if (opts.relativePoints) {\n values[index] = 100;\n } else {\n // Don't need to split positive and negative since the log scale can't handle a 0 crossing\n values[index] += value;\n }\n });\n }\n });\n\n helpers.each(valuesPerStack, function(valuesForType) {\n var minVal = helpers.min(valuesForType);\n var maxVal = helpers.max(valuesForType);\n me.min = me.min === null ? minVal : Math.min(me.min, minVal);\n me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n });\n\n } else {\n helpers.each(datasets, function(dataset, datasetIndex) {\n var meta = chart.getDatasetMeta(datasetIndex);\n if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n helpers.each(dataset.data, function(rawValue, index) {\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n\n if (me.min === null) {\n me.min = value;\n } else if (value < me.min) {\n me.min = value;\n }\n\n if (me.max === null) {\n me.max = value;\n } else if (value > me.max) {\n me.max = value;\n }\n\n if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n me.minNotZero = value;\n }\n });\n }\n });\n }\n\n me.min = valueOrDefault(tickOpts.min, me.min);\n me.max = valueOrDefault(tickOpts.max, me.max);\n\n if (me.min === me.max) {\n if (me.min !== 0 && me.min !== null) {\n me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n } else {\n me.min = 1;\n me.max = 10;\n }\n }\n },\n buildTicks: function() {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n\n var generationOptions = {\n min: tickOpts.min,\n max: tickOpts.max\n };\n var ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me);\n\n if (!me.isHorizontal()) {\n // We are in a vertical orientation. The top value is the highest. So reverse the array\n ticks.reverse();\n }\n\n // At this point, we need to update our max and min given the tick values since we have expanded the\n // range of the scale\n me.max = helpers.max(ticks);\n me.min = helpers.min(ticks);\n\n if (tickOpts.reverse) {\n ticks.reverse();\n\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n },\n convertTicksToLabels: function() {\n this.tickValues = this.ticks.slice();\n\n Chart.Scale.prototype.convertTicksToLabels.call(this);\n },\n // Get the correct tooltip label\n getLabelForIndex: function(index, datasetIndex) {\n return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n },\n getPixelForTick: function(index) {\n return this.getPixelForValue(this.tickValues[index]);\n },\n getPixelForValue: function(value) {\n var me = this;\n var start = me.start;\n var newVal = +me.getRightValue(value);\n var opts = me.options;\n var tickOpts = opts.ticks;\n var innerDimension, pixel, range;\n\n if (me.isHorizontal()) {\n range = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0\n if (newVal === 0) {\n pixel = me.left;\n } else {\n innerDimension = me.width;\n pixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n }\n } else {\n // Bottom - top since pixels increase downward on a screen\n innerDimension = me.height;\n if (start === 0 && !tickOpts.reverse) {\n range = helpers.log10(me.end) - helpers.log10(me.minNotZero);\n if (newVal === start) {\n pixel = me.bottom;\n } else if (newVal === me.minNotZero) {\n pixel = me.bottom - innerDimension * 0.02;\n } else {\n pixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));\n }\n } else if (me.end === 0 && tickOpts.reverse) {\n range = helpers.log10(me.start) - helpers.log10(me.minNotZero);\n if (newVal === me.end) {\n pixel = me.top;\n } else if (newVal === me.minNotZero) {\n pixel = me.top + innerDimension * 0.02;\n } else {\n pixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));\n }\n } else if (newVal === 0) {\n pixel = tickOpts.reverse ? me.top : me.bottom;\n } else {\n range = helpers.log10(me.end) - helpers.log10(start);\n innerDimension = me.height;\n pixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n }\n }\n return pixel;\n },\n getValueForPixel: function(pixel) {\n var me = this;\n var range = helpers.log10(me.end) - helpers.log10(me.start);\n var value, innerDimension;\n\n if (me.isHorizontal()) {\n innerDimension = me.width;\n value = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension);\n } else { // todo: if start === 0\n innerDimension = me.height;\n value = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start;\n }\n return value;\n }\n });\n Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n\n };\n\n},{\"34\":34,\"45\":45}],56:[function(require,module,exports){\n 'use strict';\n\n var defaults = require(25);\n var helpers = require(45);\n var Ticks = require(34);\n\n module.exports = function(Chart) {\n\n var globalDefaults = defaults.global;\n\n var defaultConfig = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n color: 'rgba(0, 0, 0, 0.1)',\n lineWidth: 1\n },\n\n gridLines: {\n circular: false\n },\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n // String - The colour of the label backdrop\n backdropColor: 'rgba(255,255,255,0.75)',\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPaddingY: 2,\n\n // Number - The backdrop padding to the side of the label in pixels\n backdropPaddingX: 2,\n\n callback: Ticks.formatters.linear\n },\n\n pointLabels: {\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n fontSize: 10,\n\n // Function - Used to convert point labels\n callback: function(label) {\n return label;\n }\n }\n };\n\n function getValueCount(scale) {\n var opts = scale.options;\n return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n }\n\n function getPointLabelFontOptions(scale) {\n var pointLabelOptions = scale.options.pointLabels;\n var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n var font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n return {\n size: fontSize,\n style: fontStyle,\n family: fontFamily,\n font: font\n };\n }\n\n function measureLabelSize(ctx, fontSize, label) {\n if (helpers.isArray(label)) {\n return {\n w: helpers.longestText(ctx, ctx.font, label),\n h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n };\n }\n\n return {\n w: ctx.measureText(label).width,\n h: fontSize\n };\n }\n\n function 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 - 5,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size + 5\n };\n }\n\n /**\n * Helper function to fit a radial linear scale with point labels\n */\n function fitWithPointLabels(scale) {\n\t\t\t/*\n\t\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t\t *\n\t\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t\t *\n\t\t\t * Solution:\n\t\t\t *\n\t\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t\t * at each index we check if the text overlaps.\n\t\t\t *\n\t\t\t * Where it does, we store that angle and that index.\n\t\t\t *\n\t\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t\t * from the shape radius to move the point inwards by that x.\n\t\t\t *\n\t\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t\t * along with labels.\n\t\t\t *\n\t\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t\t *\n\t\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t\t * and position it in the most space efficient manner\n\t\t\t *\n\t\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t\t */\n\n var plFont = getPointLabelFontOptions(scale);\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n var furthestLimits = {\n r: scale.width,\n l: 0,\n t: scale.height,\n b: 0\n };\n var furthestAngles = {};\n var i, textSize, pointPosition;\n\n scale.ctx.font = plFont.font;\n scale._pointLabelSizes = [];\n\n var valueCount = getValueCount(scale);\n for (i = 0; i < valueCount; i++) {\n pointPosition = scale.getPointPosition(i, largestPossibleRadius);\n textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n scale._pointLabelSizes[i] = textSize;\n\n // Add quarter circle to make degree 0 mean top of circle\n var angleRadians = scale.getIndexAngle(i);\n var angle = helpers.toDegrees(angleRadians) % 360;\n var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n if (hLimits.start < furthestLimits.l) {\n furthestLimits.l = hLimits.start;\n furthestAngles.l = angleRadians;\n }\n\n if (hLimits.end > furthestLimits.r) {\n furthestLimits.r = hLimits.end;\n furthestAngles.r = angleRadians;\n }\n\n if (vLimits.start < furthestLimits.t) {\n furthestLimits.t = vLimits.start;\n furthestAngles.t = angleRadians;\n }\n\n if (vLimits.end > furthestLimits.b) {\n furthestLimits.b = vLimits.end;\n furthestAngles.b = angleRadians;\n }\n }\n\n scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n }\n\n /**\n * Helper function to fit a radial linear scale with no point labels\n */\n function fit(scale) {\n var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n scale.drawingArea = Math.round(largestPossibleRadius);\n scale.setCenterPoint(0, 0, 0, 0);\n }\n\n function getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n }\n\n function fillText(ctx, text, position, fontSize) {\n if (helpers.isArray(text)) {\n var y = position.y;\n var spacing = 1.5 * fontSize;\n\n for (var i = 0; i < text.length; ++i) {\n ctx.fillText(text[i], position.x, y);\n y += spacing;\n }\n } else {\n ctx.fillText(text, position.x, position.y);\n }\n }\n\n function adjustPointPositionForLabelHeight(angle, textSize, position) {\n if (angle === 90 || angle === 270) {\n position.y -= (textSize.h / 2);\n } else if (angle > 270 || angle < 90) {\n position.y -= textSize.h;\n }\n }\n\n function drawPointLabels(scale) {\n var ctx = scale.ctx;\n var valueOrDefault = helpers.valueOrDefault;\n var opts = scale.options;\n var angleLineOpts = opts.angleLines;\n var pointLabelOpts = opts.pointLabels;\n\n ctx.lineWidth = angleLineOpts.lineWidth;\n ctx.strokeStyle = angleLineOpts.color;\n\n var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n // Point Label Font\n var plFont = getPointLabelFontOptions(scale);\n\n ctx.textBaseline = 'top';\n\n for (var i = getValueCount(scale) - 1; i >= 0; i--) {\n if (angleLineOpts.display) {\n var outerPosition = scale.getPointPosition(i, outerDistance);\n ctx.beginPath();\n ctx.moveTo(scale.xCenter, scale.yCenter);\n ctx.lineTo(outerPosition.x, outerPosition.y);\n ctx.stroke();\n ctx.closePath();\n }\n\n if (pointLabelOpts.display) {\n // Extra 3px out for some label spacing\n var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n // Keep this in loop since we may support array properties here\n var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor);\n ctx.font = plFont.font;\n ctx.fillStyle = pointLabelFontColor;\n\n var angleRadians = scale.getIndexAngle(i);\n var angle = helpers.toDegrees(angleRadians);\n ctx.textAlign = getTextAlignForAngle(angle);\n adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n }\n }\n }\n\n function drawRadiusLine(scale, gridLineOpts, radius, index) {\n var ctx = scale.ctx;\n ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n if (scale.options.gridLines.circular) {\n // Draw circular arcs between the points\n ctx.beginPath();\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n ctx.closePath();\n ctx.stroke();\n } else {\n // Draw straight lines connecting each index\n var valueCount = getValueCount(scale);\n\n if (valueCount === 0) {\n return;\n }\n\n ctx.beginPath();\n var pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (var i = 1; i < valueCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n\n ctx.closePath();\n ctx.stroke();\n }\n }\n\n function numberOrZero(param) {\n return helpers.isNumber(param) ? param : 0;\n }\n\n var LinearRadialScale = Chart.LinearScaleBase.extend({\n setDimensions: function() {\n var me = this;\n var opts = me.options;\n var tickOpts = opts.ticks;\n // Set the unconstrained dimension before label rotation\n me.width = me.maxWidth;\n me.height = me.maxHeight;\n me.xCenter = Math.round(me.width / 2);\n me.yCenter = Math.round(me.height / 2);\n\n var minSize = helpers.min([me.height, me.width]);\n var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n },\n determineDataLimits: function() {\n var me = this;\n var chart = me.chart;\n var min = Number.POSITIVE_INFINITY;\n var max = Number.NEGATIVE_INFINITY;\n\n helpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n if (chart.isDatasetVisible(datasetIndex)) {\n var meta = chart.getDatasetMeta(datasetIndex);\n\n helpers.each(dataset.data, function(rawValue, index) {\n var value = +me.getRightValue(rawValue);\n if (isNaN(value) || meta.data[index].hidden) {\n return;\n }\n\n min = Math.min(value, min);\n max = Math.max(value, max);\n });\n }\n });\n\n me.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n me.handleTickRangeOptions();\n },\n getTickLimit: function() {\n var tickOpts = this.options.ticks;\n var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n },\n convertTicksToLabels: function() {\n var me = this;\n\n Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n // Point labels\n me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n },\n getLabelForIndex: function(index, datasetIndex) {\n return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n },\n fit: function() {\n if (this.options.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n fit(this);\n }\n },\n /**\n * Set radius reductions and determine new radius and center point\n * @private\n */\n setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n var me = this;\n var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n radiusReductionLeft = numberOrZero(radiusReductionLeft);\n radiusReductionRight = numberOrZero(radiusReductionRight);\n radiusReductionTop = numberOrZero(radiusReductionTop);\n radiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n me.drawingArea = Math.min(\n Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n },\n setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n var me = this;\n var maxRight = me.width - rightMovement - me.drawingArea;\n var maxLeft = leftMovement + me.drawingArea;\n var maxTop = topMovement + me.drawingArea;\n var maxBottom = me.height - bottomMovement - me.drawingArea;\n\n me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n },\n\n getIndexAngle: function(index) {\n var angleMultiplier = (Math.PI * 2) / getValueCount(this);\n var startAngle = this.chart.options && this.chart.options.startAngle ?\n this.chart.options.startAngle :\n 0;\n\n var startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n // Start from the top instead of right, so remove a quarter of the circle\n return index * angleMultiplier + startAngleRadians;\n },\n getDistanceFromCenterForValue: function(value) {\n var me = this;\n\n if (value === null) {\n return 0; // null always in center\n }\n\n // Take into account half font size + the yPadding of the top value\n var scalingFactor = me.drawingArea / (me.max - me.min);\n if (me.options.ticks.reverse) {\n return (me.max - value) * scalingFactor;\n }\n return (value - me.min) * scalingFactor;\n },\n getPointPosition: function(index, distanceFromCenter) {\n var me = this;\n var thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n return {\n x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n };\n },\n getPointPositionForValue: function(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n },\n\n getBasePosition: function() {\n var me = this;\n var min = me.min;\n var max = me.max;\n\n return me.getPointPositionForValue(0,\n me.beginAtZero ? 0 :\n min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0);\n },\n\n draw: function() {\n var me = this;\n var opts = me.options;\n var gridLineOpts = opts.gridLines;\n var tickOpts = opts.ticks;\n var valueOrDefault = helpers.valueOrDefault;\n\n if (opts.display) {\n var ctx = me.ctx;\n var startAngle = this.getIndexAngle(0);\n\n // Tick Font\n var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n helpers.each(me.ticks, function(label, index) {\n // Don't draw a centre value (if it is minimum)\n if (index > 0 || tickOpts.reverse) {\n var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n // Draw circular lines around the scale\n if (gridLineOpts.display && index !== 0) {\n drawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n }\n\n if (tickOpts.display) {\n var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n ctx.font = tickLabelFont;\n\n ctx.save();\n ctx.translate(me.xCenter, me.yCenter);\n ctx.rotate(startAngle);\n\n if (tickOpts.showLabelBackdrop) {\n var labelWidth = ctx.measureText(label).width;\n ctx.fillStyle = tickOpts.backdropColor;\n ctx.fillRect(\n -labelWidth / 2 - tickOpts.backdropPaddingX,\n -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n labelWidth + tickOpts.backdropPaddingX * 2,\n tickFontSize + tickOpts.backdropPaddingY * 2\n );\n }\n\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = tickFontColor;\n ctx.fillText(label, 0, -yCenterOffset);\n ctx.restore();\n }\n }\n });\n\n if (opts.angleLines.display || opts.pointLabels.display) {\n drawPointLabels(me);\n }\n }\n }\n });\n Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n\n };\n\n},{\"25\":25,\"34\":34,\"45\":45}],57:[function(require,module,exports){\n\t/* global window: false */\n 'use strict';\n\n var moment = require(6);\n moment = typeof moment === 'function' ? moment : window.moment;\n\n var defaults = require(25);\n var helpers = require(45);\n\n// Integer constants are from the ES6 spec.\n var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n var INTERVALS = {\n millisecond: {\n major: true,\n size: 1,\n steps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n },\n second: {\n major: true,\n size: 1000,\n steps: [1, 2, 5, 10, 30]\n },\n minute: {\n major: true,\n size: 60000,\n steps: [1, 2, 5, 10, 30]\n },\n hour: {\n major: true,\n size: 3600000,\n steps: [1, 2, 3, 6, 12]\n },\n day: {\n major: true,\n size: 86400000,\n steps: [1, 2, 5]\n },\n week: {\n major: false,\n size: 604800000,\n steps: [1, 2, 3, 4]\n },\n month: {\n major: true,\n size: 2.628e9,\n steps: [1, 2, 3]\n },\n quarter: {\n major: false,\n size: 7.884e9,\n steps: [1, 2, 3, 4]\n },\n year: {\n major: true,\n size: 3.154e10\n }\n };\n\n var UNITS = Object.keys(INTERVALS);\n\n function sorter(a, b) {\n return a - b;\n }\n\n function arrayUnique(items) {\n var hash = {};\n var out = [];\n var i, ilen, item;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n if (!hash[item]) {\n hash[item] = true;\n out.push(item);\n }\n }\n\n return out;\n }\n\n /**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\n function buildLookupTable(timestamps, min, max, distribution) {\n if (distribution === 'linear' || !timestamps.length) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n var table = [];\n var items = [min];\n var i, ilen, prev, curr, next;\n\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\n items.push(max);\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\n // only add points that breaks the scale linearity\n if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n\n return table;\n }\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\n function lookup(table, key, value) {\n var lo = 0;\n var hi = table.length - 1;\n var mid, i0, i1;\n\n while (lo >= 0 && lo <= hi) {\n mid = (lo + hi) >> 1;\n i0 = table[mid - 1] || null;\n i1 = table[mid];\n\n if (!i0) {\n // given value is outside table (before first item)\n return {lo: null, hi: i1};\n } else if (i1[key] < value) {\n lo = mid + 1;\n } else if (i0[key] > value) {\n hi = mid - 1;\n } else {\n return {lo: i0, hi: i1};\n }\n }\n\n // given value is outside table (after last item)\n return {lo: i1, hi: null};\n }\n\n /**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\n function interpolate(table, skey, sval, tkey) {\n var range = lookup(table, skey, sval);\n\n // Note: the lookup table ALWAYS contains at least 2 items (min and max)\n var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n var span = next[skey] - prev[skey];\n var ratio = span ? (sval - prev[skey]) / span : 0;\n var offset = (next[tkey] - prev[tkey]) * ratio;\n\n return prev[tkey] + offset;\n }\n\n /**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\n function momentify(value, options) {\n var parser = options.parser;\n var format = options.parser || options.format;\n\n if (typeof parser === 'function') {\n return parser(value);\n }\n\n if (typeof value === 'string' && typeof format === 'string') {\n return moment(value, format);\n }\n\n if (!(value instanceof moment)) {\n value = moment(value);\n }\n\n if (value.isValid()) {\n return value;\n }\n\n // Labels are in an incompatible moment format and no `parser` has been provided.\n // The user might still use the deprecated `format` option to convert his inputs.\n if (typeof format === 'function') {\n return format(value);\n }\n\n return value;\n }\n\n function parse(input, scale) {\n if (helpers.isNullOrUndef(input)) {\n return null;\n }\n\n var options = scale.options.time;\n var value = momentify(scale.getRightValue(input), options);\n if (!value.isValid()) {\n return null;\n }\n\n if (options.round) {\n value.startOf(options.round);\n }\n\n return value.valueOf();\n }\n\n /**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\n function determineStepSize(min, max, unit, capacity) {\n var range = max - min;\n var interval = INTERVALS[unit];\n var milliseconds = interval.size;\n var steps = interval.steps;\n var i, ilen, factor;\n\n if (!steps) {\n return Math.ceil(range / ((capacity || 1) * milliseconds));\n }\n\n for (i = 0, ilen = steps.length; i < ilen; ++i) {\n factor = steps[i];\n if (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n break;\n }\n }\n\n return factor;\n }\n\n function determineUnit(minUnit, min, max, capacity) {\n var ilen = UNITS.length;\n var i, interval, factor;\n\n for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n interval = INTERVALS[UNITS[i]];\n factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n if (Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n }\n\n function determineMajorUnit(unit) {\n for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].major) {\n return UNITS[i];\n }\n }\n }\n\n /**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\n function generate(min, max, minor, major, capacity, options) {\n var timeOpts = options.time;\n var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n var weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n var majorTicksEnabled = options.ticks.major.enabled;\n var interval = INTERVALS[minor];\n var first = moment(min);\n var last = moment(max);\n var ticks = [];\n var time;\n\n if (!stepSize) {\n stepSize = determineStepSize(min, max, minor, capacity);\n }\n\n // For 'week' unit, handle the first day of week option\n if (weekday) {\n first = first.isoWeekday(weekday);\n last = last.isoWeekday(weekday);\n }\n\n // Align first/last ticks on unit\n first = first.startOf(weekday ? 'day' : minor);\n last = last.startOf(weekday ? 'day' : minor);\n\n // Make sure that the last tick include max\n if (last < max) {\n last.add(1, minor);\n }\n\n time = moment(first);\n\n if (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n // Align the first tick on the previous `minor` unit aligned on the `major` unit:\n // we first aligned time on the previous `major` unit then add the number of full\n // stepSize there is between first and the previous major time.\n time.startOf(major);\n time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n }\n\n for (; time < last; time.add(stepSize, minor)) {\n ticks.push(+time);\n }\n\n ticks.push(+time);\n\n return ticks;\n }\n\n /**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\n function computeOffsets(table, ticks, min, max, options) {\n var left = 0;\n var right = 0;\n var upper, lower;\n\n if (options.offset && ticks.length) {\n if (!options.time.min) {\n upper = ticks.length > 1 ? ticks[1] : max;\n lower = ticks[0];\n left = (\n interpolate(table, 'time', upper, 'pos') -\n interpolate(table, 'time', lower, 'pos')\n ) / 2;\n }\n if (!options.time.max) {\n upper = ticks[ticks.length - 1];\n lower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n right = (\n interpolate(table, 'time', upper, 'pos') -\n interpolate(table, 'time', lower, 'pos')\n ) / 2;\n }\n }\n\n return {left: left, right: right};\n }\n\n function ticksFromTimestamps(values, majorUnit) {\n var ticks = [];\n var i, ilen, value, major;\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n value = values[i];\n major = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n ticks.push({\n value: value,\n major: major\n });\n }\n\n return ticks;\n }\n\n module.exports = function(Chart) {\n\n var defaultConfig = {\n position: 'bottom',\n\n /**\n * Data distribution along the scale:\n * - 'linear': data are spread according to their time (distances can vary),\n * - 'series': data are spread at the same distance from each other.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n distribution: 'linear',\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n time: {\n parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n displayFormat: false, // DEPRECATED\n isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n minUnit: 'millisecond',\n\n // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n displayFormats: {\n millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n second: 'h:mm:ss a', // 11:20:01 AM\n minute: 'h:mm a', // 11:20 AM\n hour: 'hA', // 5PM\n day: 'MMM D', // Sep 4\n week: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n month: 'MMM YYYY', // Sept 2015\n quarter: '[Q]Q - YYYY', // Q3\n year: 'YYYY' // 2015\n },\n },\n ticks: {\n autoSkip: false,\n\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n major: {\n enabled: false\n }\n }\n };\n\n var TimeScale = Chart.Scale.extend({\n initialize: function() {\n if (!moment) {\n throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n }\n\n this.mergeTicksOptions();\n\n Chart.Scale.prototype.initialize.call(this);\n },\n\n update: function() {\n var me = this;\n var options = me.options;\n\n // DEPRECATIONS: output a message only one time per update\n if (options.time && options.time.format) {\n console.warn('options.time.format is deprecated and replaced by options.time.parser.');\n }\n\n return Chart.Scale.prototype.update.apply(me, arguments);\n },\n\n /**\n * Allows data to be referenced via 't' attribute\n */\n getRightValue: function(rawValue) {\n if (rawValue && rawValue.t !== undefined) {\n rawValue = rawValue.t;\n }\n return Chart.Scale.prototype.getRightValue.call(this, rawValue);\n },\n\n determineDataLimits: function() {\n var me = this;\n var chart = me.chart;\n var timeOpts = me.options.time;\n var min = parse(timeOpts.min, me) || MAX_INTEGER;\n var max = parse(timeOpts.max, me) || MIN_INTEGER;\n var timestamps = [];\n var datasets = [];\n var labels = [];\n var i, j, ilen, jlen, data, timestamp;\n\n // Convert labels to timestamps\n for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n labels.push(parse(chart.data.labels[i], me));\n }\n\n // Convert data to timestamps\n for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n data = chart.data.datasets[i].data;\n\n // Let's consider that all data have the same format.\n if (helpers.isObject(data[0])) {\n datasets[i] = [];\n\n for (j = 0, jlen = data.length; j < jlen; ++j) {\n timestamp = parse(data[j], me);\n timestamps.push(timestamp);\n datasets[i][j] = timestamp;\n }\n } else {\n timestamps.push.apply(timestamps, labels);\n datasets[i] = labels.slice(0);\n }\n } else {\n datasets[i] = [];\n }\n }\n\n if (labels.length) {\n // Sort labels **after** data have been converted\n labels = arrayUnique(labels).sort(sorter);\n min = Math.min(min, labels[0]);\n max = Math.max(max, labels[labels.length - 1]);\n }\n\n if (timestamps.length) {\n timestamps = arrayUnique(timestamps).sort(sorter);\n min = Math.min(min, timestamps[0]);\n max = Math.max(max, timestamps[timestamps.length - 1]);\n }\n\n // In case there is no valid min/max, let's use today limits\n min = min === MAX_INTEGER ? +moment().startOf('day') : min;\n max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max;\n\n // Make sure that max is strictly higher than min (required by the lookup table)\n me.min = Math.min(min, max);\n me.max = Math.max(min + 1, max);\n\n // PRIVATE\n me._horizontal = me.isHorizontal();\n me._table = [];\n me._timestamps = {\n data: timestamps,\n datasets: datasets,\n labels: labels\n };\n },\n\n buildTicks: function() {\n var me = this;\n var min = me.min;\n var max = me.max;\n var options = me.options;\n var timeOpts = options.time;\n var formats = timeOpts.displayFormats;\n var capacity = me.getLabelCapacity(min);\n var unit = timeOpts.unit || determineUnit(timeOpts.minUnit, min, max, capacity);\n var majorUnit = determineMajorUnit(unit);\n var timestamps = [];\n var ticks = [];\n var i, ilen, timestamp;\n\n switch (options.ticks.source) {\n case 'data':\n timestamps = me._timestamps.data;\n break;\n case 'labels':\n timestamps = me._timestamps.labels;\n break;\n case 'auto':\n default:\n timestamps = generate(min, max, unit, majorUnit, capacity, options);\n }\n\n if (options.bounds === 'ticks' && timestamps.length) {\n min = timestamps[0];\n max = timestamps[timestamps.length - 1];\n }\n\n // Enforce limits with user min/max options\n min = parse(timeOpts.min, me) || min;\n max = parse(timeOpts.max, me) || max;\n\n // Remove ticks outside the min/max range\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n timestamp = timestamps[i];\n if (timestamp >= min && timestamp <= max) {\n ticks.push(timestamp);\n }\n }\n\n me.min = min;\n me.max = max;\n\n // PRIVATE\n me._unit = unit;\n me._majorUnit = majorUnit;\n me._minorFormat = formats[unit];\n me._majorFormat = formats[majorUnit];\n me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n me._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n return ticksFromTimestamps(ticks, majorUnit);\n },\n\n getLabelForIndex: function(index, datasetIndex) {\n var me = this;\n var data = me.chart.data;\n var timeOpts = me.options.time;\n var label = data.labels && index < data.labels.length ? data.labels[index] : '';\n var value = data.datasets[datasetIndex].data[index];\n\n if (helpers.isObject(value)) {\n label = me.getRightValue(value);\n }\n if (timeOpts.tooltipFormat) {\n label = momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n }\n\n return label;\n },\n\n /**\n * Function to format an individual tick mark\n * @private\n */\n tickFormatFunction: function(tick, index, ticks) {\n var me = this;\n var options = me.options;\n var time = tick.valueOf();\n var majorUnit = me._majorUnit;\n var majorFormat = me._majorFormat;\n var majorTime = tick.clone().startOf(me._majorUnit).valueOf();\n var majorTickOpts = options.ticks.major;\n var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n var label = tick.format(major ? majorFormat : me._minorFormat);\n var tickOpts = major ? majorTickOpts : options.ticks.minor;\n var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n return formatter ? formatter(label, index, ticks) : label;\n },\n\n convertTicksToLabels: function(ticks) {\n var labels = [];\n var i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n }\n\n return labels;\n },\n\n /**\n * @private\n */\n getPixelForOffset: function(time) {\n var me = this;\n var size = me._horizontal ? me.width : me.height;\n var start = me._horizontal ? me.left : me.top;\n var pos = interpolate(me._table, 'time', time, 'pos');\n\n return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n },\n\n getPixelForValue: function(value, index, datasetIndex) {\n var me = this;\n var time = null;\n\n if (index !== undefined && datasetIndex !== undefined) {\n time = me._timestamps.datasets[datasetIndex][index];\n }\n\n if (time === null) {\n time = parse(value, me);\n }\n\n if (time !== null) {\n return me.getPixelForOffset(time);\n }\n },\n\n getPixelForTick: function(index) {\n var ticks = this.getTicks();\n return index >= 0 && index < ticks.length ?\n this.getPixelForOffset(ticks[index].value) :\n null;\n },\n\n getValueForPixel: function(pixel) {\n var me = this;\n var size = me._horizontal ? me.width : me.height;\n var start = me._horizontal ? me.left : me.top;\n var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n var time = interpolate(me._table, 'pos', pos, 'time');\n\n return moment(time);\n },\n\n /**\n * Crude approximation of what the label width might be\n * @private\n */\n getLabelWidth: function(label) {\n var me = this;\n var ticksOpts = me.options.ticks;\n var tickLabelWidth = me.ctx.measureText(label).width;\n var angle = helpers.toRadians(ticksOpts.maxRotation);\n var cosRotation = Math.cos(angle);\n var sinRotation = Math.sin(angle);\n var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n },\n\n /**\n * @private\n */\n getLabelCapacity: function(exampleTime) {\n var me = this;\n\n me._minorFormat = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, []);\n var tickLabelWidth = me.getLabelWidth(exampleLabel);\n var innerWidth = me.isHorizontal() ? me.width : me.height;\n\n return Math.floor(innerWidth / tickLabelWidth);\n }\n });\n\n Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig);\n };\n\n},{\"25\":25,\"45\":45,\"6\":6}]},{},[7])(7)\n});"],"file":"chartjs-lazy.min.js"}