{"version":3,"sources":["webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/color-space/hsl.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/color-space/rgb.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/clamp/index.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/lerp/index.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/color-interpolate/index.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/color-parse/index.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/se.js"],"names":["global","factory","this","moment","uzLatn","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","week","dow","doy","ml","monthsParseExact","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","cv","output","affix","exec","dayOfMonthOrdinalParse","ordinal","plural","n","translate","number","withoutSuffix","key","isFuture","result","is","fo","ja","eras","since","offset","name","narrow","abbr","until","Infinity","eraYearOrdinalRegex","eraYearOrdinalParse","input","match","parseInt","l","ll","lll","llll","isPM","now","period","monthsShortDot","monthsParse","monthsRegex","esDo","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdaysParseExact","hours","w","ww","arMa","processRelativeTime","gomLatn","standalone","isFormat","frCh","enAu","b","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","tr","minutes","a","c","da","tlPh","eu","th","rgb","module","exports","min","max","channel","alias","hsl","t1","t2","t3","val","i","r","g","Math","delta","translator","words","correctGrammaticalCase","wordKey","length","srCyrl","day","lastWeekDays","ocLnc","mt","symbolMap","0","pluralForm","plurals","pluralize","u","string","f","str","replace","arLy","preparse","postformat","word","num","forms","relativeTimeWithPlural","be","ka","$0","$1","$2","ko","token","isUpper","numberMap","ku","bs","units","translateSeconds","translateSingular","special","lt","vi","me","af","uz","e","hasOwnProperty","conversions","rgb2hsl","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","rgb2xyz","rgb2lab","rgb2lch","hsl2rgb","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv2hsl","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","lab2lch","lch2lab","lch2xyz","lch2rgb","v","k","reverseKeywords","JSON","stringify","pow","x","z","xyz","args","sv","hsv","hi","floor","p","q","t","sl","hwb","wh","bl","ratio","cmyk","lab","y2","hr","atan2","PI","sqrt","lch","cos","sin","keyword","cssKeywords","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","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","green","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","magenta","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","red","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","yellow","yellowgreen","convert","Converter","func","arg","Array","prototype","slice","call","arguments","pair","from","to","undefined","round","convs","routeSpace","space","values","getValues","setValues","vals","fspace","forEach","colorConvert","colorName","colorString","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","hex","rgba","per","hexAlpha","parseFloat","scale","alpha","isNaN","hsla","hexDouble","reverseNames","toString","toUpperCase","Color","obj","valid","lightness","value","whiteness","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","toJSON","clone","type","source","target","prop","console","error","spaces","maxes","charAt","capped","chans","sname","index","svalues","window","chartjsColor","helpers","noop","uid","id","isNullOrUndef","isArray","Object","substr","isObject","isFinite","Number","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","fn","thisArg","apply","each","loopable","reverse","len","keys","arrayEquals","a0","a1","ilen","v0","v1","map","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","setFn","inherits","extensions","ChartElement","constructor","Surrogate","__super__","helpers_core","callCallback","indexOf","array","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","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","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","size","cornerRadius","rad","drawImage","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","epsilon","clipArea","save","clip","unclipArea","restore","previous","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","scope","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","resolve","inputs","context","helpers$1","easing","canvas","interpolate","start","view","model","ease","actual","origin","c0","c1","Element","configuration","initialize","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","core_element","exports$2","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","defineProperty","get","set","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","Date","animating","push","requestAnimationFrame","cancelAnimation","findIndex","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","configurable","enumerable","method","base","res","object","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","linkScales","addElements","updateIndex","meta","getMeta","dataset","getDataset","xAxisID","scales","xAxes","yAxisID","yAxes","data","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","resyncElements","easingValue","elements","draw","removeHoverStyle","$previousStyle","setHoverStyle","custom","getHoverColor","backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","numMeta","numData","insertElements","count","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","borderAlign","element_arc","inLabelRange","mouseX","vm","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","distance","startAngle","endAngle","betweenAngles","withinRadius","innerRadius","outerRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","angleMargin","sA","eA","pixelMargin","fillStyle","lineWidth","lineJoin","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","current","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","lineCap","setLineDash","lineDashOffset","previousItem","skip","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","x2","y1","half","swap","orig","v2","parseBorderSkipped","edge","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","bounds","border","outer","inner","skipX","skipY","rectangle","element_rectangle","rects","fillRect","Arc","Line","Point","Rectangle","resolve$1","computeMinSampleSize","pixels","prev","curr","isHorizontal","ticks","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","next","percent","end","hover","mode","gridLines","offsetGridLines","controller_bar","stack","bar","_ruler","getRuler","_resolveElementOptions","_xScale","_yScale","datasetLabel","label","labels","_updateElementGeometry","vscale","getBasePixel","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","stacked","stacks","isDatasetVisible","getStackCount","getStackIndex","getPixelForValue","imeta","ivalue","getRightValue","minBarLength","controller","range","stackIndex","maxBarThickness","dataIndex","valueOrDefault$3","resolve$2","position","tooltips","callbacks","title","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","resolve$3","valueOrDefault$4","animateRotate","animateScale","legendCallback","text","join","legend","generateLabels","ds","arcOpts","bw","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","opts","availableWidth","availableHeight","minSize","arcs","chartWeight","_getRingWeight","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","offsetX","offsetY","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","controller_horizontalBar","valueOrDefault$5","resolve$4","isPointInArea","lineEnabled","showLine","controller_line","lineTension","_scale","_resolveLineOptions","updateBezierControlPoints","lineModel","_resolvePointOptions","calculatePointY","ELEMENT_OPTIONS","elementOptions","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","halfBorderWidth","resolve$5","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$6","resolve$6","controller_radar","pointPosition","getPointPositionForValue","controller_scatter","controllers","bubble","horizontalBar","polarArea","pie","radar","scatter","getRelativePosition","native","parseVisibleItems","handler","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","_tmpIndex_","sort","findMaxPadding","boxes","box","getPadding","boxPadding","addSizeByPosition","layout","core_layouts","addBox","fullWidth","removeBox","layoutItem","configure","props","layoutOptions","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","maxPadding","verticalBoxes","horizontalBoxes","outerBoxes","chartWidth","chartHeight","chartAreaWidth","verticalBoxWidth","maxChartAreaWidth","maxChartAreaHeight","outerBoxSizes","minBoxSizes","getMinimumBoxSize","fitBox","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBoxSize","findNextWhere","minBox","scaleMargin","platform_basic","acquireContext","getContext","platform_dom","platform_dom$1","freeze","default","getCjsExportFromNamespace","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","getStyle","initCanvas","config","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","addEventListener","eventListenerOptions","passive","addListener","node","removeListener","removeEventListener","createEvent","nativeEvent","fromNativeEvent","event","pos","throttled","ticking","createDiv","cls","el","document","createElement","className","createResizer","maxSize","resizer","expand","shrink","appendChild","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","add","unwatchForRender","remove","addResizeListener","container","maintainAspectRatio","parentNode","clientWidth","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","platform","css","_style","setAttribute","getElementsByTagName","createTextNode","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","_loaded","getElementById","releaseContext","removeAttribute","proxies","addEvent","removeEvent","implementation","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","params","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$7","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","reduce","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","align","getBeforeAfterBodyLines","exports$3","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","changed","existingModel","active","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","textAlign","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$8","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","positionIsHorizontal","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","Error","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","hoverOptions","core_controller","Controller","types","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","sign","log10","exponent","log","LOG10E","powerOf10","isPowerOf10","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","niceFraction","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","paddingLeft","paddingTop","paddingRight","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","parent","host","cw","clientHeight","ch","currentStyle","getPropertyValue","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","color","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","formats","parse","diff","startOf","endOf","_create","override","members","_date","core_adapters","core_ticks","formatters","tickValue","logDelta","tickString","maxTick","logTick","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$9","labelsFromTicks","getPixelForGridLine","lineValue","computeTextSize","tick","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","minor","major","core_scale","_ticks","beforeUpdate","maxWidth","maxHeight","margins","_maxLabelLines","longestLabelWidth","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","sinRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","_isVisible","parseFont","isFullWidth","scaleLabelFont","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","labelHeight","firstLabelWidth","lastLabelWidth","offsetLeft","offsetRight","handleMargins","rawValue","getValueForPixel","innerWidth","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","optionTicks","tickCount","skipRatio","maxTicks","maxTicksLimit","ticksLength","_tickSize","axisLength","PaddingBottom","rot","borderValue","tickStart","tickEnd","optionMajorTicks","isRotated","isMirrored","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","labelRotationRadians","itemsToDraw","axisWidth","alignPixel","lineColor","tx1","ty1","tx2","ty2","labelX","labelY","textOffset","zeroLineIndex","labelYOffset","labelXOffset","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","scaleLabelX","scaleLabelY","halfLineHeight","isLeft","firstLineWidth","lastLineWidth","defaultConfig","scale_category","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","_defaults","generateTicks","generationOptions","dataRange","factor","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","unit","maxNumSpaces","precision","rmin","rmax","spacing","ceil","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","defaultConfig$1","scale_linear","DEFAULT_MIN","DEFAULT_MAX","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","innerDimension","_defaults$1","valueOrDefault$a","generateTicks$1","exp","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","tickValues","_getFirstTickValue","firstTickValue","_defaults$2","valueOrDefault$b","valueAtIndexOrDefault$1","resolve$7","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","outerPosition","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","yCenterOffset","_defaults$3","valueOrDefault$c","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","quarter","year","UNITS","sorter","arrayUnique","hash","out","buildLookupTable","timestamps","distribution","time","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","adapter","_adapter","parser","determineStepSize","capacity","interval","milliseconds","determineUnitForAutoTicks","minUnit","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","weekday","isoWeekday","majorTicksEnabled","first","computeOffsets","ticksFromTimestamps","majorUnit","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","date","warn","timestamp","dataLabels","_horizontal","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","isReverse","getLabelWidth","ticksOpts","tickLabelWidth","tickFontSize","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","valueOf","amount","as","filler","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetDraw","noop$1","valueOrDefault$d","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","lineCount","fontOpts","titleX","titleY","createNewTitleBlockAndAttach","titleOpts","titleBlock","plugin_title","_adapters","Animation","animationService","Interaction","layouts","Scale","scaleService","Ticks","Tooltip","src","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","enCa","enGb","relativeTimeMr","mr","ne","zhMo","hm","12","13","40","tg","cs","ta","kn","arKw","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","lastDigit","firstDigit","lb","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","az","zhHk","ga","days","ur","clamp","esUs","tet","dv","tk","weekEndings","hu","zhCn","te","ugCn","webpackPolyfill","deprecate","paths","children","msMy","eo","sd","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","substring","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","br","weekdaysParse","mi","mk","last2Digits","nb","kk","arTn","it","itCh","enNz","monthsShortWithDots","monthsShortWithoutDots","fy","enIl","sw","sk","yo","numbersPast","numbersFuture","verbalNumber","fi","arSa","bg","my","gl","es","invalidDate","isFunction","Function","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsNominative","monthsSubjective","pl","ar","bn","zhTw","ru","mn","ky","bnBd","separator","ro","cy","lerp","fr","arDz","bm","palette","lIdx","rIdx","lColor","rColor","gomDeva","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","deAt","de","tzmLatn","jv","esMx","enSg","nn","relativeTimeWithSingular","relativeSeconds","lv","deCh","tzm","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isDate","arr","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","_abbr","require","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","matcher","parts","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","dur","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","suffix","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","he","sq","sr","tzl","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","bo","ptBr","fil","hyAm","ca","frCa","nlBe","gu","enIe","baseHues","cstr","isShort","isRGB","trim","R","G","B","H","S","brightness","km","et","enIn","si","paIn","gd","nl","xPseudo","se"],"mappings":"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","file":"js/chunk-035f0fb6.ec3384db.js","sourcesContent":["//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","/**\n * @module color-space/hsl\n */\n'use strict'\n\nvar rgb = require('./rgb');\n\nmodule.exports = {\n\tname: 'hsl',\n\tmin: [0,0,0],\n\tmax: [360,100,100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function(hsl) {\n\t\tvar h = hsl[0] / 360,\n\t\t\t\ts = hsl[1] / 100,\n\t\t\t\tl = hsl[2] / 100,\n\t\t\t\tt1, t2, t3, rgb, val;\n\n\t\tif (s === 0) {\n\t\t\tval = l * 255;\n\t\t\treturn [val, val, val];\n\t\t}\n\n\t\tif (l < 0.5) {\n\t\t\tt2 = l * (1 + s);\n\t\t}\n\t\telse {\n\t\t\tt2 = l + s - l * s;\n\t\t}\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tif (t3 < 0) {\n\t\t\t\tt3++;\n\t\t\t}\n\t\t\telse if (t3 > 1) {\n\t\t\t\tt3--;\n\t\t\t}\n\n\t\t\tif (6 * t3 < 1) {\n\t\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t\t}\n\t\t\telse if (2 * t3 < 1) {\n\t\t\t\tval = t2;\n\t\t\t}\n\t\t\telse if (3 * t3 < 2) {\n\t\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tval = t1;\n\t\t\t}\n\n\t\t\trgb[i] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\n\n//extend rgb\nrgb.hsl = function(rgb) {\n\tvar r = rgb[0]/255,\n\t\t\tg = rgb[1]/255,\n\t\t\tb = rgb[2]/255,\n\t\t\tmin = Math.min(r, g, b),\n\t\t\tmax = Math.max(r, g, b),\n\t\t\tdelta = max - min,\n\t\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g)/ delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","/**\n * RGB space.\n *\n * @module color-space/rgb\n */\n'use strict'\n\nmodule.exports = {\n\tname: 'rgb',\n\tmin: [0,0,0],\n\tmax: [255,255,255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","/*!\n * Chart.js v2.8.0\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\n/* MIT license */\n\nvar conversions = {\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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction 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\nfunction 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\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction 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\nfunction 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\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction 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\nfunction 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\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction 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\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction 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\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction 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\nfunction 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\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction 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\nfunction 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\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction 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\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar 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\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\nvar convert = function() {\n return new Converter();\n};\n\nfor (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/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.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/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.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\nvar colorConvert = convert;\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\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\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/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 hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\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 if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\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 = colorName[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\nfunction 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\nfunction 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\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction 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\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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)\nfunction 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\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction 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\nvar reverseNames = {};\nfor (var name in colorName) {\n reverseNames[colorName[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns true if `value` is a finite number, else returns false\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {object|Array} loopable - The object or array to be iterated.\n\t * @param {function} fn - The function to call for each item.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see https://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @param {object} [options] - Merging options:\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @returns {object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {object} target - The target object in which all objects are merged into.\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\n\t * @param {object} argN - Additional objects containing properties to merge in target.\n\t * @returns {object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nvar helpers_core = 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 */\nhelpers.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 */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn 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 */\nhelpers.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 */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\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 */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nvar helpers_easing = {\n\teffects: 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 */\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {number} width - The rectangle's width.\n\t * @param {number} height - The rectangle's height.\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\nvar helpers_canvas = exports$1;\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 */\nhelpers_core.clear = exports$1.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 */\nhelpers_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\ndefaults._set('global', {\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers_core.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array} inputs - An array of values, falling back to the last value.\n\t * @param {object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers$1.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$2 = core_element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\nvar core_animation = exports$2;\n\n// DEPRECATIONS\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 */\nObject.defineProperty(exports$2.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\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 */\nObject.defineProperty(exports$2.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {number} duration - The animation duration in ms.\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\n\t\tme.advance();\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar resolve = helpers$1.options.resolve;\n\nvar 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 */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\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 */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis.update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nvar element_arc = core_element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar angleMargin;\n\n\t\tctx.save();\n\n\t\tctx.beginPath();\n\t\tctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\t\tctx.closePath();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tif (vm.borderAlign === 'inner') {\n\t\t\t\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t\t\t\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\t\t\t\tctx.beginPath();\n\t\t\t\tangleMargin = pixelMargin / vm.outerRadius;\n\t\t\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin);\n\t\t\t\tif (vm.innerRadius > pixelMargin) {\n\t\t\t\t\tangleMargin = pixelMargin / vm.innerRadius;\n\t\t\t\t\tctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true);\n\t\t\t\t} else {\n\t\t\t\t\tctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2);\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.clip();\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\t\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\t\t\t\tctx.closePath();\n\n\t\t\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\t\t\tctx.lineJoin = 'round';\n\t\t\t} else {\n\t\t\t\tctx.lineWidth = vm.borderWidth;\n\t\t\t\tctx.lineJoin = 'bevel';\n\t\t\t}\n\n\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nvar element_line = core_element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers$1.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nvar element_point = core_element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.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 */\nfunction getBarBounds(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - half;\n\t\ty2 = vm.y + half;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(next - prev) / 2 * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tme._updateElementGeometry(rectangle, index, reset);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getIndexScale();\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t(stacked === false ||\n\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar stackCount = me.getStackCount();\n\t\tvar datasetIndex = me.index;\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\tvar pixels = [];\n\t\tvar i, ilen, min;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t}\n\n\t\tmin = helpers$1.isNullOrUndef(scale.options.barThickness)\n\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t: -1;\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tpixels: pixels,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tstackCount: stackCount,\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar value = +scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = scale.options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = meta.stack;\n\t\tvar start = 0;\n\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\tif (imeta.bar &&\n\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\timeta.controller._getValueScaleId() === scale.id &&\n\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\tivalue = +scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + value);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (value >= 0 && !isHorizontal || value < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\tvar me = this;\n\t\tvar options = ruler.scale.options;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\thelpers$1.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(rectangle, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar dataset = datasets[me.index];\n\t\tvar custom = rectangle.custom || {};\n\t\tvar options = chart.options.elements.rectangle;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderSkipped',\n\t\t\t'borderWidth'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$1([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\n\ncore_defaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$3(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar dataset = datasets[me.index];\n\t\tvar custom = point.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar data = dataset.data[index];\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t\t'hoverRadius',\n\t\t\t'hitRadius',\n\t\t\t'pointStyle',\n\t\t\t'rotation'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$2([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$2([\n\t\t\tcustom.radius,\n\t\t\tdata ? data.r : undefined,\n\t\t\tdataset.radius,\n\t\t\toptions.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar resolve$3 = helpers$1.options.resolve;\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\n\ncore_defaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);\n\t\t\t\t\t\tvar stroke = resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);\n\t\t\t\t\t\tvar bw = resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar availableWidth = chartArea.right - chartArea.left;\n\t\tvar availableHeight = chartArea.bottom - chartArea.top;\n\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\tvar offset = {x: 0, y: 0};\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar i, ilen;\n\n\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\tif (circumference < Math.PI * 2.0) {\n\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\tvar 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\t\t\tvar 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\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\toptions = controller ? controller._resolveElementOptions(arc, i) : arc._options;\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(arc, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = arc.custom || {};\n\t\tvar options = chart.options.elements.arc;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'borderAlign',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$3([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights. This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\nvar resolve$4 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nfunction lineEnabled(dataset, options) {\n\treturn valueOrDefault$5(dataset.showLine, options.showLines);\n}\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\tvar dataset = me.getDataset();\n\t\tvar showLine = lineEnabled(dataset, me.chart.options);\n\t\tvar i, ilen;\n\n\t\t// Update Line\n\t\tif (showLine) {\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\t// Utility\n\t\t\tline._scale = scale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveLineOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolvePointOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolvePointOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar ELEMENT_OPTIONS = {\n\t\t\tbackgroundColor: 'pointBackgroundColor',\n\t\t\tborderColor: 'pointBorderColor',\n\t\t\tborderWidth: 'pointBorderWidth',\n\t\t\thitRadius: 'pointHitRadius',\n\t\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\t\thoverRadius: 'pointHoverRadius',\n\t\t\tpointStyle: 'pointStyle',\n\t\t\tradius: 'pointRadius',\n\t\t\trotation: 'pointRotation'\n\t\t};\n\t\tvar keys = Object.keys(ELEMENT_OPTIONS);\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$4([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[ELEMENT_OPTIONS[key]],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveLineOptions: function(element) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options;\n\t\tvar elementOptions = options.elements.line;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderWidth',\n\t\t\t'borderColor',\n\t\t\t'borderCapStyle',\n\t\t\t'borderDash',\n\t\t\t'borderDashOffset',\n\t\t\t'borderJoinStyle',\n\t\t\t'fill',\n\t\t\t'cubicInterpolationMode'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$4([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\telementOptions[key]\n\t\t\t]);\n\t\t}\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$5(dataset.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$5(dataset.lineTension, elementOptions.tension);\n\t\tvalues.steppedLine = resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]);\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta;\n\n\t\tif (yScale.options.stacked) {\n\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar ilen = points.length;\n\t\tvar halfBorderWidth;\n\t\tvar i = 0;\n\n\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: area.left,\n\t\t\t\tright: area.right,\n\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$5(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$5 = helpers$1.options.resolve;\n\ncore_defaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);\n\t\t\t\t\t\tvar stroke = resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);\n\t\t\t\t\t\tvar bw = resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(arc, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = arc.custom || {};\n\t\tvar options = chart.options.elements.arc;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'borderAlign',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$5([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$5([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$6 = helpers$1.options.resolve;\n\ncore_defaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nvar controller_radar = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar dataset = me.getDataset();\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\tdataset.lineTension = dataset.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveLineOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolvePointOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolvePointOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar ELEMENT_OPTIONS = {\n\t\t\tbackgroundColor: 'pointBackgroundColor',\n\t\t\tborderColor: 'pointBorderColor',\n\t\t\tborderWidth: 'pointBorderWidth',\n\t\t\thitRadius: 'pointHitRadius',\n\t\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\t\thoverRadius: 'pointHoverRadius',\n\t\t\tpointStyle: 'pointStyle',\n\t\t\tradius: 'pointRadius',\n\t\t\trotation: 'pointRotation'\n\t\t};\n\t\tvar keys = Object.keys(ELEMENT_OPTIONS);\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$6([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[ELEMENT_OPTIONS[key]],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveLineOptions: function(element) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.line;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderWidth',\n\t\t\t'borderColor',\n\t\t\t'borderCapStyle',\n\t\t\t'borderDash',\n\t\t\t'borderDashOffset',\n\t\t\t'borderJoinStyle',\n\t\t\t'fill'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$6([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t]);\n\t\t}\n\n\t\tvalues.tension = valueOrDefault$6(dataset.lineTension, options.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\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 {object} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers$1.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 {function} handler - the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {ChartElement[]} items - elements to filter\n * @param {object} position - the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn 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 {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn 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 */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn 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 */\nvar core_interaction = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\nfunction findMaxPadding(boxes) {\n\tvar top = 0;\n\tvar left = 0;\n\tvar bottom = 0;\n\tvar right = 0;\n\thelpers$1.each(boxes, function(box) {\n\t\tif (box.getPadding) {\n\t\t\tvar boxPadding = box.getPadding();\n\t\t\ttop = Math.max(top, boxPadding.top);\n\t\t\tleft = Math.max(left, boxPadding.left);\n\t\t\tbottom = Math.max(bottom, boxPadding.bottom);\n\t\t\tright = Math.max(right, boxPadding.right);\n\t\t}\n\t});\n\treturn {\n\t\ttop: top,\n\t\tleft: left,\n\t\tbottom: bottom,\n\t\tright: right\n\t};\n}\n\nfunction addSizeByPosition(boxes, size) {\n\thelpers$1.each(boxes, function(box) {\n\t\tsize[box.position] += box.isHorizontal() ? box.height : box.width;\n\t});\n}\n\ncore_defaults._set('global', {\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\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.\nvar core_layouts = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {ILayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\tvar verticalBoxes = leftBoxes.concat(rightBoxes);\n\t\tvar horizontalBoxes = topBoxes.concat(bottomBoxes);\n\t\tvar outerBoxes = verticalBoxes.concat(horizontalBoxes);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / verticalBoxes.length;\n\n\t\t// Step 3\n\t\t// TODO re-limit horizontal axis height (this limit has affected only padding calculation since PR 1837)\n\t\t// var horizontalBoxHeight = (height - chartAreaHeight) / horizontalBoxes.length;\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};\n\t\tvar minBoxSizes = [];\n\t\tvar maxPadding;\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\twidth: minSize.width,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers$1.each(outerBoxes, getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tmaxPadding = findMaxPadding(outerBoxes);\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (minBoxSize.horizontal) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(outerBoxSizes.left, maxPadding.left),\n\t\t\t\t\t\tright: Math.max(outerBoxSizes.right, maxPadding.right),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers$1.each(verticalBoxes, fitBox);\n\t\taddSizeByPosition(verticalBoxes, outerBoxSizes);\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers$1.each(horizontalBoxes, fitBox);\n\t\taddSizeByPosition(horizontalBoxes, outerBoxSizes);\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: outerBoxSizes.top,\n\t\t\t\tbottom: outerBoxSizes.bottom\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers$1.each(verticalBoxes, finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\touterBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};\n\t\taddSizeByPosition(outerBoxes, outerBoxSizes);\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxPadding.left - outerBoxSizes.left, 0);\n\t\touterBoxSizes.left += leftPaddingAddition;\n\t\touterBoxSizes.right += Math.max(maxPadding.right - outerBoxSizes.right, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxPadding.top - outerBoxSizes.top, 0);\n\t\touterBoxSizes.top += topPaddingAddition;\n\t\touterBoxSizes.bottom += Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - outerBoxSizes.top - outerBoxSizes.bottom;\n\t\tvar newMaxChartAreaWidth = width - outerBoxSizes.left - outerBoxSizes.right;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers$1.each(verticalBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers$1.each(horizontalBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : outerBoxSizes.left;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : outerBoxSizes.left + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = outerBoxSizes.top;\n\t\t\t\tbox.bottom = outerBoxSizes.top + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers$1.each(rightBoxes, placeBox);\n\t\thelpers$1.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: outerBoxSizes.left,\n\t\t\ttop: outerBoxSizes.top,\n\t\t\tright: outerBoxSizes.left + maxChartAreaWidth,\n\t\t\tbottom: outerBoxSizes.top + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers$1.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\ndefault: platform_dom\n});\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n.default || n;\n}\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar 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 */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: '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 */\nfunction readUsedSize(element, property) {\n\tvar value = helpers$1.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn 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 */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn 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 */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\t// eslint-disable-next-line getter-return\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn 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\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers$1.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// https://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nvar platform_dom$2 = {\n\t/**\n\t * When `true`, prevents the automatic injection of the stylesheet required to\n\t * correctly detect when the chart is added to the DOM and then resized. This\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\n\t * to be manually imported to make this library compatible with any CSP.\n\t * See https://github.com/chartjs/Chart.js/issues/5208\n\t */\n\tdisableCSSInjection: false,\n\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\t/**\n\t * @private\n\t */\n\t_ensureLoaded: function() {\n\t\tif (this._loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._loaded = true;\n\n\t\t// https://github.com/chartjs/Chart.js/issues/5208\n\t\tif (!this.disableCSSInjection) {\n\t\t\tinjectCSS(this, stylesheet);\n\t\t}\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// Load platform resources on first chart creation, to make possible to change\n\t\t// platform options after importing the library (e.g. `disableCSSInjection`).\n\t\tthis._ensureLoaded();\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\t// eslint-disable-next-line no-self-assign\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveListener(canvas, type, proxy);\n\t}\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 */\nhelpers$1.addEvent = addListener;\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 */\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nvar platform = helpers$1.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link IEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link IEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\ncore_defaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nvar core_plugins = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {IPlugin[]} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {object[]} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\nvar core_scaleService = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers$1.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tcore_layouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers$1.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\t\t\t\t\tif (item.label) {\n\t\t\t\t\t\ttitle = item.label;\n\t\t\t\t\t} else if (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers$1.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n\t\t\t\t\tlabel += tooltipItem.value;\n\t\t\t\t} else {\n\t\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\t}\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers$1.noop,\n\t\t\tfooter: helpers$1.noop,\n\t\t\tafterFooter: helpers$1.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {object} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: x / count,\n\t\t\ty: y / count\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {object} the position of the event in canvas coordinates\n\t * @returns {object} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers$1.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {string} value - The value to split by newline.\n * @returns {string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\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 */\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\n\tvar indexScale = controller._getIndexScale();\n\tvar valueScale = controller._getValueScale();\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = core_defaults.global;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers$1.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers$1.each(body, function(bodyItem) {\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers$1.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\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 */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction getAlignedX(vm, align) {\n\treturn align === 'center'\n\t\t? vm.x + vm.width / 2\n\t\t: align === 'right'\n\t\t\t? vm.x + vm.width - vm.xPadding\n\t\t\t: vm.x + vm.xPadding;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports$3 = core_element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// 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\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = tooltipPosition.x;\n\t\t\tmodel.y = tooltipPosition.y;\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\n\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = vm.titleFontColor;\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar bodyAlign = vm._bodyAlign;\n\t\tvar body = vm.body;\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\tvar labelColors = vm.labelColors;\n\t\tvar xLinePadding = 0;\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n\t\tvar textColor;\n\n\t\tctx.textAlign = bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\tpt.x = getAlignedX(vm, bodyAlign);\n\n\t\t// Before Body\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = vm.bodyFontColor;\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\n\n\t\txLinePadding = drawColorBoxes && bodyAlign !== 'right'\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\n\t\t\t: 0;\n\n\t\t// Draw body lines now\n\t\thelpers$1.each(body, function(bodyItem, i) {\n\t\t\ttextColor = vm.labelTextColors[i];\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers$1.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\n\t\t\t\t\tctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = labelColors[i].borderColor;\n\t\t\t\t\tctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = labelColors[i].backgroundColor;\n\t\t\t\t\tctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = vm.footerFontColor;\n\t\t\tctx.font = helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers$1.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\tctx.save();\n\t\t\tctx.globalAlpha = opacity;\n\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx);\n\n\t\t\tctx.restore();\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nvar positioners_1 = positioners;\n\nvar core_tooltip = exports$3;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\telements: {},\n\tevents: [\n\t\t'mousemove',\n\t\t'mouseout',\n\t\t'click',\n\t\t'touchstart',\n\t\t'touchmove'\n\t],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tmaintainAspectRatio: true,\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0\n});\n\n/**\n * Recursively merge the given config objects representing the `scales` option\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\n * returns a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeScaleConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\tvar slen = source[key].length;\n\t\t\t\tvar i, type, scale;\n\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\ttarget[key] = [];\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\ttype = valueOrDefault$8(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Recursively merge the given config objects as the root options by handling\n * default scale options for the `scales` and `scale` properties, then returns\n * a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tvar tval = target[key] || {};\n\t\t\tvar sval = source[key];\n\n\t\t\tif (key === 'scales') {\n\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\n\t\t\t} else if (key === 'scale') {\n\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction initConfig(config) {\n\tconfig = config || {};\n\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\n\t// and so would change references to labels and datasets, preventing data updates.\n\tvar data = config.data = config.data || {};\n\tdata.datasets = data.datasets || [];\n\tdata.labels = data.labels || [];\n\n\tconfig.options = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[config.type],\n\t\tconfig.options || {});\n\n\treturn config;\n}\n\nfunction updateConfig(chart) {\n\tvar newOptions = chart.options;\n\n\thelpers$1.each(chart.scales, function(scale) {\n\t\tcore_layouts.removeBox(chart, scale);\n\t});\n\n\tnewOptions = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[chart.config.type],\n\t\tnewOptions);\n\n\tchart.options = chart.config.options = newOptions;\n\tchart.ensureScalesHaveIDs();\n\tchart.buildOrUpdateScales();\n\n\t// Tooltip\n\tchart.tooltip._options = newOptions.tooltips;\n\tchart.tooltip.initialize();\n}\n\nfunction positionIsHorizontal(position) {\n\treturn position === 'top' || position === 'bottom';\n}\n\nvar Chart = function(item, config) {\n\tthis.construct(item, config);\n\treturn this;\n};\n\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\n\t/**\n\t * @private\n\t */\n\tconstruct: function(item, config) {\n\t\tvar me = this;\n\n\t\tconfig = initConfig(config);\n\n\t\tvar context = platform.acquireContext(item, config);\n\t\tvar canvas = context && context.canvas;\n\t\tvar height = canvas && canvas.height;\n\t\tvar width = canvas && canvas.width;\n\n\t\tme.id = helpers$1.uid();\n\t\tme.ctx = context;\n\t\tme.canvas = canvas;\n\t\tme.config = config;\n\t\tme.width = width;\n\t\tme.height = height;\n\t\tme.aspectRatio = height ? width / height : null;\n\t\tme.options = config.options;\n\t\tme._bufferedRender = false;\n\n\t\t/**\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t * @prop Chart#chart\n\t\t * @deprecated since version 2.6.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tme.chart = me;\n\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t// Add the chart instance to the global namespace\n\t\tChart.instances[me.id] = me;\n\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\tObject.defineProperty(me, 'data', {\n\t\t\tget: function() {\n\t\t\t\treturn me.config.data;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\tme.config.data = value;\n\t\t\t}\n\t\t});\n\n\t\tif (!context || !canvas) {\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\treturn;\n\t\t}\n\n\t\tme.initialize();\n\t\tme.update();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinitialize: function() {\n\t\tvar me = this;\n\n\t\t// Before init plugin notification\n\t\tcore_plugins.notify(me, 'beforeInit');\n\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\n\n\t\tme.bindEvents();\n\n\t\tif (me.options.responsive) {\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\tme.resize(true);\n\t\t}\n\n\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\tme.ensureScalesHaveIDs();\n\t\tme.buildOrUpdateScales();\n\t\tme.initToolTip();\n\n\t\t// After init plugin notification\n\t\tcore_plugins.notify(me, 'afterInit');\n\n\t\treturn me;\n\t},\n\n\tclear: function() {\n\t\thelpers$1.canvas.clear(this);\n\t\treturn this;\n\t},\n\n\tstop: function() {\n\t\t// Stops any current animation loop occurring\n\t\tcore_animations.cancelAnimation(this);\n\t\treturn this;\n\t},\n\n\tresize: function(silent) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar canvas = me.canvas;\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n\n\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\treturn;\n\t\t}\n\n\t\tcanvas.width = me.width = newWidth;\n\t\tcanvas.height = me.height = newHeight;\n\t\tcanvas.style.width = newWidth + 'px';\n\t\tcanvas.style.height = newHeight + 'px';\n\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\n\n\t\tif (!silent) {\n\t\t\t// Notify any plugins about the resize\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\n\n\t\t\t// Notify of resize\n\t\t\tif (options.onResize) {\n\t\t\t\toptions.onResize(me, newSize);\n\t\t\t}\n\n\t\t\tme.stop();\n\t\t\tme.update({\n\t\t\t\tduration: options.responsiveAnimationDuration\n\t\t\t});\n\t\t}\n\t},\n\n\tensureScalesHaveIDs: function() {\n\t\tvar options = this.options;\n\t\tvar scalesOptions = options.scales || {};\n\t\tvar scaleOptions = options.scale;\n\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t});\n\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t});\n\n\t\tif (scaleOptions) {\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t}\n\t},\n\n\t/**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n\tbuildOrUpdateScales: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar scales = me.scales || {};\n\t\tvar items = [];\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\tobj[id] = false;\n\t\t\treturn obj;\n\t\t}, {});\n\n\t\tif (options.scales) {\n\t\t\titems = items.concat(\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t}),\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (options.scale) {\n\t\t\titems.push({\n\t\t\t\toptions: options.scale,\n\t\t\t\tdtype: 'radialLinear',\n\t\t\t\tisDefault: true,\n\t\t\t\tdposition: 'chartArea'\n\t\t\t});\n\t\t}\n\n\t\thelpers$1.each(items, function(item) {\n\t\t\tvar scaleOptions = item.options;\n\t\t\tvar id = scaleOptions.id;\n\t\t\tvar scaleType = valueOrDefault$8(scaleOptions.type, item.dtype);\n\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t}\n\n\t\t\tupdated[id] = true;\n\t\t\tvar scale = null;\n\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\tscale = scales[id];\n\t\t\t\tscale.options = scaleOptions;\n\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\tscale.chart = me;\n\t\t\t} else {\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscale = new scaleClass({\n\t\t\t\t\tid: id,\n\t\t\t\t\ttype: scaleType,\n\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\tchart: me\n\t\t\t\t});\n\t\t\t\tscales[scale.id] = scale;\n\t\t\t}\n\n\t\t\tscale.mergeTicksOptions();\n\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\tif (item.isDefault) {\n\t\t\t\tme.scale = scale;\n\t\t\t}\n\t\t});\n\t\t// clear up discarded scales\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\n\t\t\tif (!hasUpdated) {\n\t\t\t\tdelete scales[id];\n\t\t\t}\n\t\t});\n\n\t\tme.scales = scales;\n\n\t\tcore_scaleService.addScalesToLayout(this);\n\t},\n\n\tbuildOrUpdateControllers: function() {\n\t\tvar me = this;\n\t\tvar newControllers = [];\n\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t}\n\t\t\tmeta.type = type;\n\n\t\t\tif (meta.controller) {\n\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\tmeta.controller.linkScales();\n\t\t\t} else {\n\t\t\t\tvar ControllerClass = controllers[meta.type];\n\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t}\n\n\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t}\n\t\t}, me);\n\n\t\treturn newControllers;\n\t},\n\n\t/**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n\tresetElements: function() {\n\t\tvar me = this;\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t}, me);\n\t},\n\n\t/**\n\t* Resets the chart back to it's state before the initial animation\n\t*/\n\treset: function() {\n\t\tthis.resetElements();\n\t\tthis.tooltip.initialize();\n\t},\n\n\tupdate: function(config) {\n\t\tvar me = this;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tupdateConfig(me);\n\n\t\t// plugins options references might have change, let's invalidate the cache\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\tcore_plugins._invalidate(me);\n\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case the entire data object changed\n\t\tme.tooltip._data = me.data;\n\n\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t// Make sure all dataset controllers have correct meta data counts\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t}, me);\n\n\t\tme.updateLayout();\n\n\t\t// Can only reset the new controllers after the scales have been updated\n\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\thelpers$1.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\t\t}\n\n\t\tme.updateDatasets();\n\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t// after update.\n\t\tme.tooltip.initialize();\n\n\t\t// Last active contains items that were previously in the tooltip.\n\t\t// When we reset the tooltip, we need to clear it\n\t\tme.lastActive = [];\n\n\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\tcore_plugins.notify(me, 'afterUpdate');\n\n\t\tif (me._bufferedRender) {\n\t\t\tme._bufferedRequest = {\n\t\t\t\tduration: config.duration,\n\t\t\t\teasing: config.easing,\n\t\t\t\tlazy: config.lazy\n\t\t\t};\n\t\t} else {\n\t\t\tme.render(config);\n\t\t}\n\t},\n\n\t/**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n\tupdateLayout: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tcore_layouts.update(this, this.width, this.height);\n\n\t\t/**\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t * @method IPlugin#afterScaleUpdate\n\t\t * @deprecated since version 2.5.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\n\t\tcore_plugins.notify(me, 'afterLayout');\n\t},\n\n\t/**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n\tupdateDatasets: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.updateDataset(i);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\n\t},\n\n\t/**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n\tupdateDataset: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getDatasetMeta(index);\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: index\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller.update();\n\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\n\t},\n\n\trender: function(config) {\n\t\tvar me = this;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tvar animationOptions = me.options.animation;\n\t\tvar duration = valueOrDefault$8(config.duration, animationOptions && animationOptions.duration);\n\t\tvar lazy = config.lazy;\n\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar onComplete = function(animation) {\n\t\t\tcore_plugins.notify(me, 'afterRender');\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t};\n\n\t\tif (animationOptions && duration) {\n\t\t\tvar animation = new core_animation({\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\n\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t},\n\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\tonAnimationComplete: onComplete\n\t\t\t});\n\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\n\t\t} else {\n\t\t\tme.draw();\n\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdraw: function(easingValue) {\n\t\tvar me = this;\n\n\t\tme.clear();\n\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\n\t\t\teasingValue = 1;\n\t\t}\n\n\t\tme.transition(easingValue);\n\n\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Draw all the scales\n\t\thelpers$1.each(me.boxes, function(box) {\n\t\t\tbox.draw(me.chartArea);\n\t\t}, me);\n\n\t\tme.drawDatasets(easingValue);\n\t\tme._drawTooltip(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\n\t},\n\n\t/**\n\t * @private\n\t */\n\ttransition: function(easingValue) {\n\t\tvar me = this;\n\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t}\n\t\t}\n\n\t\tme.tooltip.transition(easingValue);\n\t},\n\n\t/**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n\tdrawDatasets: function(easingValue) {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Draw datasets reversed to support proper line stacking\n\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t}\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t},\n\n\t/**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n\tdrawDataset: function(index, easingValue) {\n\t\tvar me = this;\n\t\tvar meta = me.getDatasetMeta(index);\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: index,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller.draw(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\n\t},\n\n\t/**\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t * @private\n\t */\n\t_drawTooltip: function(easingValue) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\t\tvar args = {\n\t\t\ttooltip: tooltip,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip.draw();\n\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\n\t},\n\n\t/**\n\t * Get the single element that was clicked on\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t */\n\tgetElementAtEvent: function(e) {\n\t\treturn core_interaction.modes.single(this, e);\n\t},\n\n\tgetElementsAtEvent: function(e) {\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\n\t},\n\n\tgetElementsAtXAxis: function(e) {\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\n\t},\n\n\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\tvar method = core_interaction.modes[mode];\n\t\tif (typeof method === 'function') {\n\t\t\treturn method(this, e, options);\n\t\t}\n\n\t\treturn [];\n\t},\n\n\tgetDatasetAtEvent: function(e) {\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\n\t},\n\n\tgetDatasetMeta: function(datasetIndex) {\n\t\tvar me = this;\n\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\tif (!dataset._meta) {\n\t\t\tdataset._meta = {};\n\t\t}\n\n\t\tvar meta = dataset._meta[me.id];\n\t\tif (!meta) {\n\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\ttype: null,\n\t\t\t\tdata: [],\n\t\t\t\tdataset: null,\n\t\t\t\tcontroller: null,\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\txAxisID: null,\n\t\t\t\tyAxisID: null\n\t\t\t};\n\t\t}\n\n\t\treturn meta;\n\t},\n\n\tgetVisibleDatasetCount: function() {\n\t\tvar count = 0;\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t},\n\n\tisDatasetVisible: function(datasetIndex) {\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t},\n\n\tgenerateLegend: function() {\n\t\treturn this.options.legendCallback(this);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroyDatasetMeta: function(datasetIndex) {\n\t\tvar id = this.id;\n\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\tif (meta) {\n\t\t\tmeta.controller.destroy();\n\t\t\tdelete dataset._meta[id];\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tvar me = this;\n\t\tvar canvas = me.canvas;\n\t\tvar i, ilen;\n\n\t\tme.stop();\n\n\t\t// dataset controllers need to cleanup associated data\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.destroyDatasetMeta(i);\n\t\t}\n\n\t\tif (canvas) {\n\t\t\tme.unbindEvents();\n\t\t\thelpers$1.canvas.clear(me);\n\t\t\tplatform.releaseContext(me.ctx);\n\t\t\tme.canvas = null;\n\t\t\tme.ctx = null;\n\t\t}\n\n\t\tcore_plugins.notify(me, 'destroy');\n\n\t\tdelete Chart.instances[me.id];\n\t},\n\n\ttoBase64Image: function() {\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t},\n\n\tinitToolTip: function() {\n\t\tvar me = this;\n\t\tme.tooltip = new core_tooltip({\n\t\t\t_chart: me,\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t_data: me.data,\n\t\t\t_options: me.options.tooltips\n\t\t}, me);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners = {};\n\t\tvar listener = function() {\n\t\t\tme.eventHandler.apply(me, arguments);\n\t\t};\n\n\t\thelpers$1.each(me.options.events, function(type) {\n\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\tlisteners[type] = listener;\n\t\t});\n\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\tif (me.options.responsive) {\n\t\t\tlistener = function() {\n\t\t\t\tme.resize();\n\t\t\t};\n\n\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\tlisteners.resize = listener;\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tunbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners;\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tdelete me._listeners;\n\t\thelpers$1.each(listeners, function(listener, type) {\n\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t});\n\t},\n\n\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\tvar element, i, ilen;\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\telement = elements[i];\n\t\t\tif (element) {\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\teventHandler: function(e) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Buffer any update calls so that renders do not occur\n\t\tme._bufferedRender = true;\n\t\tme._bufferedRequest = null;\n\n\t\tvar changed = me.handleEvent(e);\n\t\t// for smooth tooltip animations issue #4989\n\t\t// the tooltip should be the source of change\n\t\t// Animation check workaround:\n\t\t// tooltip._start will be null when tooltip isn't animating\n\t\tif (tooltip) {\n\t\t\tchanged = tooltip._start\n\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\n\n\t\tvar bufferedRequest = me._bufferedRequest;\n\t\tif (bufferedRequest) {\n\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\tme.render(bufferedRequest);\n\t\t} else if (changed && !me.animating) {\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\tme.stop();\n\n\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\tme.render({\n\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\tlazy: true\n\t\t\t});\n\t\t}\n\n\t\tme._bufferedRender = false;\n\t\tme._bufferedRequest = null;\n\n\t\treturn me;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event the event to handle\n\t * @return {boolean} true if the chart needs to re-render\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me.options || {};\n\t\tvar hoverOptions = options.hover;\n\t\tvar changed = false;\n\n\t\tme.lastActive = me.lastActive || [];\n\n\t\t// Find Active Elements for hover and tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme.active = [];\n\t\t} else {\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t}\n\n\t\t// Invoke onHover hook\n\t\t// Need to call with native event here to not break backwards compatibility\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\tif (options.onClick) {\n\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t}\n\t\t}\n\n\t\t// Remove styling for last active (even if it may still be active)\n\t\tif (me.lastActive.length) {\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t}\n\n\t\t// Built in hover styling\n\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t}\n\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\n\n\t\t// Remember Last Actives\n\t\tme.lastActive = me.active;\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\n * for backward compatibility. Though, it can still be useful for plugins that\n * would need to work on multiple charts?!\n */\nChart.instances = {};\n\nvar core_controller = Chart;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart instead.\n * @class Chart.Controller\n * @deprecated since version 2.6\n * @todo remove at version 3\n * @private\n */\nChart.Controller = Chart;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\nChart.types = {};\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.configMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.configMerge = mergeConfig;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.scaleMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers$1.where = function(collection, filterCallback) {\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers$1.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers$1.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers$1.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers$1.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers$1.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers$1.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers$1.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers$1.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers$1.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers$1.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers$1.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\n\t/**\n\t * Returns the number of decimal places\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\n\t * @param {number} x - A number.\n\t * @returns {number} The number of decimal places.\n\t * @private\n\t */\n\thelpers$1._decimalPlaces = function(x) {\n\t\tif (!helpers$1.isFinite(x)) {\n\t\t\treturn;\n\t\t}\n\t\tvar e = 1;\n\t\tvar p = 0;\n\t\twhile (Math.round(x * e) / e !== x) {\n\t\t\te *= 10;\n\t\t\tp++;\n\t\t}\n\t\treturn p;\n\t};\n\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\n\t/**\n\t * Provided for backward compatibility, not available anymore\n\t * @function Chart.helpers.aliasPixel\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t */\n\thelpers$1.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\n\t/**\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\n\t * @param {Chart} chart - The chart instance.\n\t * @param {number} pixel - A pixel value.\n\t * @param {number} width - The width of the element.\n\t * @returns {number} The aligned pixel value.\n\t * @private\n\t */\n\thelpers$1._alignPixel = function(chart, pixel, width) {\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\n\t\tvar halfWidth = width / 2;\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n\t};\n\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\n\thelpers$1.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers$1.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers$1.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers$1.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers$1.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers$1.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t/**\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\n\t * @param {HTMLElement} domNode - the node to check the constraint on\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\n\t */\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers$1.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers$1.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers$1.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers$1._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers$1.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers$1.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers$1.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers$1.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers$1.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers$1.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers$1.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers$1.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers$1.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers$1.color = !chartjsColor ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = core_defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn chartjsColor(value);\n\t\t};\n\n\thelpers$1.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\n\t\t\tcolorValue :\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\nfunction abstract() {\n\tthrow new Error(\n\t\t'This method is not implemented: either no adapter can ' +\n\t\t'be found or an incomplete integration was provided.'\n\t);\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\n\n/**\n * Currently supported unit string values.\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\n * @memberof Chart._adapters._date\n * @name Unit\n */\n\n/**\n * @class\n */\nfunction DateAdapter(options) {\n\tthis.options = options || {};\n}\n\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\n\t/**\n\t * Returns a map of time formats for the supported formatting units defined\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\n\t * @returns {{string: string}}\n\t */\n\tformats: abstract,\n\n\t/**\n\t * Parses the given `value` and return the associated timestamp.\n\t * @param {any} value - the value to parse (usually comes from the data)\n\t * @param {string} [format] - the expected data format\n\t * @returns {(number|null)}\n\t * @function\n\t */\n\tparse: abstract,\n\n\t/**\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\n\t * @param {number} timestamp - the timestamp to format\n\t * @param {string} format - the date/time token\n\t * @return {string}\n\t * @function\n\t */\n\tformat: abstract,\n\n\t/**\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {number} amount - the amount to add\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tadd: abstract,\n\n\t/**\n\t * Returns the number of `unit` between the given timestamps.\n\t * @param {number} max - the input timestamp (reference)\n\t * @param {number} min - the timestamp to substract\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tdiff: abstract,\n\n\t/**\n\t * Returns start of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n\t * @function\n\t */\n\tstartOf: abstract,\n\n\t/**\n\t * Returns end of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @function\n\t */\n\tendOf: abstract,\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility for scale.getValueForPixel(),\n\t * this method should be overridden only by the moment adapter.\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(value) {\n\t\treturn value;\n\t}\n});\n\nDateAdapter.override = function(members) {\n\thelpers$1.extend(DateAdapter.prototype, members);\n};\n\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nvar core_ticks = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {string|string[]} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {number} the value to be formatted\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {number[]} the list of ticks being converted\n\t\t * @return {string} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n\ncore_defaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: core_ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (scale.getTicks().length === 1) {\n\t\t\tlineValue -= scale.isHorizontal() ?\n\t\t\t\tMath.max(lineValue - scale.left, scale.right - lineValue) :\n\t\t\t\tMath.max(lineValue - scale.top, scale.bottom - lineValue);\n\t\t} else if (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers$1.isArray(tick) ?\n\t\thelpers$1.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nvar core_scale = core_element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers$1.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\n\t\tme._maxLabelLines = 0;\n\t\tme.longestLabelWidth = 0;\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\t// Allow modification of ticks in callback.\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers$1.noop,\n\tafterDataLimits: function() {\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers$1.noop,\n\tafterBuildTicks: function(ticks) {\n\t\tvar me = this;\n\t\t// ticks is empty for old axis implementations here\n\t\tif (helpers$1.isArray(ticks) && ticks.length) {\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n\t\t}\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n\t\treturn ticks;\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\n\t\tcontext.font = tickFont.string;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers$1.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = me._isVisible();\n\t\tvar position = opts.position;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar parseFont = helpers$1.options._parseFont;\n\t\tvar tickFont = parseFont(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelFont = parseFont(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelFont.lineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing the labels\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers$1.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\t// Store max number of lines and widest label for _autoSkip\n\t\t\tme._maxLabelLines = tallestLabelHeightInLines;\n\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.lineHeight * tallestLabelHeightInLines)\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.string;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.string);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string);\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(labels.length - 1);\n\t\t\t\tvar paddingLeft, paddingRight;\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tpaddingLeft = position === 'bottom' ? (cosRotation * firstLabelWidth) : (cosRotation * lineSpace);\n\t\t\t\t\tpaddingRight = position === 'bottom' ? (cosRotation * lineSpace) : (cosRotation * lastLabelWidth);\n\t\t\t\t} else {\n\t\t\t\t\tpaddingLeft = firstLabelWidth / 2;\n\t\t\t\t\tpaddingRight = lastLabelWidth / 2;\n\t\t\t\t}\n\t\t\t\tme.paddingLeft = Math.max(paddingLeft - offsetLeft, 0) + 3; // add 3 px to move away from canvas edges\n\t\t\t\tme.paddingRight = Math.max(paddingRight - offsetRight, 0) + 3;\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers$1.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// 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\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers$1.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers$1.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + pixel;\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + valueOffset;\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar skipRatio = false;\n\t\tvar maxTicks = optionTicks.maxTicksLimit;\n\n\t\t// Total space needed to display all ticks. First and last ticks are\n\t\t// drawn as their center at end of axis, so tickCount-1\n\t\tvar ticksLength = me._tickSize() * (tickCount - 1);\n\n\t\t// Axis length\n\t\tvar axisLength = isHorizontal\n\t\t\t? me.width - (me.paddingLeft + me.paddingRight)\n\t\t\t: me.height - (me.paddingTop + me.PaddingBottom);\n\n\t\tvar result = [];\n\t\tvar i, tick;\n\n\t\tif (ticksLength > axisLength) {\n\t\t\tskipRatio = 1 + Math.floor(ticksLength / axisLength);\n\t\t}\n\n\t\t// if they defined a max number of optionTicks,\n\t\t// increase skipRatio until that number is met\n\t\tif (tickCount > maxTicks) {\n\t\t\tskipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks));\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\tif (skipRatio > 1 && i % skipRatio > 0) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_tickSize: function() {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\n\t\t// Calculate space needed by label in axis direction.\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\n\t\tvar cos = Math.abs(Math.cos(rot));\n\t\tvar sin = Math.abs(Math.sin(rot));\n\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\n\t\tvar w = (me.longestLabelWidth + padding) || 0;\n\n\t\tvar tickFont = helpers$1.options._parseFont(optionTicks);\n\t\tvar h = (me._maxLabelLines * tickFont.lineHeight + padding) || 0;\n\n\t\t// Calculate space needed for 1 tick in axis direction.\n\t\treturn isHorizontal\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_isVisible: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar display = me.options.display;\n\t\tvar i, ilen, meta;\n\n\t\tif (display !== 'auto') {\n\t\t\treturn !!display;\n\t\t}\n\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Actually draw the scale on the canvas\n\t * @param {object} chartArea - the area of the chart to draw full grid lines on\n\t */\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\n\t\tif (!me._isVisible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar chart = me.chart;\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultFontColor = globalDefaults.defaultFontColor;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\t\tvar position = options.position;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isMirrored = optionTicks.mirror;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar parseFont = helpers$1.options._parseFont;\n\t\tvar ticks = optionTicks.display && optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = valueOrDefault$9(optionTicks.fontColor, defaultFontColor);\n\t\tvar tickFont = parseFont(optionTicks);\n\t\tvar lineHeight = tickFont.lineHeight;\n\t\tvar majorTickFontColor = valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor);\n\t\tvar majorTickFont = parseFont(optionMajorTicks);\n\t\tvar tickPadding = optionTicks.padding;\n\t\tvar labelOffset = optionTicks.labelOffset;\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = valueOrDefault$9(scaleLabel.fontColor, defaultFontColor);\n\t\tvar scaleLabelFont = parseFont(scaleLabel);\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers$1.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\t\tvar alignPixel = helpers$1._alignPixel;\n\t\tvar borderValue, tickStart, tickEnd;\n\n\t\tif (position === 'top') {\n\t\t\tborderValue = alignPixel(chart, me.bottom, axisWidth);\n\t\t\ttickStart = me.bottom - tl;\n\t\t\ttickEnd = borderValue - axisWidth / 2;\n\t\t} else if (position === 'bottom') {\n\t\t\tborderValue = alignPixel(chart, me.top, axisWidth);\n\t\t\ttickStart = borderValue + axisWidth / 2;\n\t\t\ttickEnd = me.top + tl;\n\t\t} else if (position === 'left') {\n\t\t\tborderValue = alignPixel(chart, me.right, axisWidth);\n\t\t\ttickStart = me.right - tl;\n\t\t\ttickEnd = borderValue - axisWidth / 2;\n\t\t} else {\n\t\t\tborderValue = alignPixel(chart, me.left, axisWidth);\n\t\t\ttickStart = borderValue + axisWidth / 2;\n\t\t\ttickEnd = me.left + tl;\n\t\t}\n\n\t\tvar epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error.\n\n\t\thelpers$1.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers$1.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n\t\t\t} else {\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = gridLines.borderDash || [];\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign;\n\t\t\tvar labelCount = helpers$1.isArray(label) ? label.length : 1;\n\t\t\tvar lineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines);\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (lineValue < me.left - epsilon) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignPixel(chart, lineValue, lineWidth);\n\t\t\t\tty1 = tickStart;\n\t\t\t\tty2 = tickEnd;\n\t\t\t\tlabelX = me.getPixelForTick(index) + labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\tif (position === 'top') {\n\t\t\t\t\ty1 = alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2;\n\t\t\t\t\ty2 = chartArea.bottom;\n\t\t\t\t\ttextOffset = ((!isRotated ? 0.5 : 1) - labelCount) * lineHeight;\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\ty1 = chartArea.top;\n\t\t\t\t\ty2 = alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2;\n\t\t\t\t\ttextOffset = (!isRotated ? 0.5 : 0) * lineHeight;\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar labelXOffset = (isMirrored ? 0 : tl) + tickPadding;\n\n\t\t\t\tif (lineValue < me.top - epsilon) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\n\t\t\t\ttx1 = tickStart;\n\t\t\t\ttx2 = tickEnd;\n\t\t\t\tty1 = ty2 = y1 = y2 = alignPixel(chart, lineValue, lineWidth);\n\t\t\t\tlabelY = me.getPixelForTick(index) + labelOffset;\n\t\t\t\ttextOffset = (1 - labelCount) * lineHeight / 2;\n\n\t\t\t\tif (position === 'left') {\n\t\t\t\t\tx1 = alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2;\n\t\t\t\t\tx2 = chartArea.right;\n\t\t\t\t\ttextAlign = isMirrored ? 'left' : 'right';\n\t\t\t\t\tlabelX = me.right - labelXOffset;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = chartArea.left;\n\t\t\t\t\tx2 = alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2;\n\t\t\t\t\ttextAlign = isMirrored ? 'right' : 'left';\n\t\t\t\t\tlabelX = me.left + labelXOffset;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextOffset: textOffset,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers$1.each(itemsToDraw, function(itemToDraw) {\n\t\t\tvar glWidth = itemToDraw.glWidth;\n\t\t\tvar glColor = itemToDraw.glColor;\n\n\t\t\tif (gridLines.display && glWidth && glColor) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = glWidth;\n\t\t\t\tcontext.strokeStyle = glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.string : tickFont.string;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = 'middle';\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tvar y = itemToDraw.textOffset;\n\t\t\t\tif (helpers$1.isArray(label)) {\n\t\t\t\t\tfor (var i = 0; i < label.length; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, y);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.string;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (axisWidth) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tvar firstLineWidth = axisWidth;\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0);\n\t\t\tvar x1, x2, y1, y2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\ty1 = y2 = borderValue;\n\t\t\t} else {\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\tx1 = x2 = borderValue;\n\t\t\t}\n\n\t\t\tcontext.lineWidth = axisWidth;\n\t\t\tcontext.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\nvar defaultConfig = {\n\tposition: 'bottom'\n};\n\nvar scale_category = core_scale.extend({\n\t/**\n\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t* else fall back to data.labels\n\t* @private\n\t*/\n\tgetLabels: function() {\n\t\tvar data = this.chart.data;\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar labels = me.getLabels();\n\t\tme.minIndex = 0;\n\t\tme.maxIndex = labels.length - 1;\n\t\tvar findIndex;\n\n\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t// user specified min value\n\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t}\n\n\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t// user specified max value\n\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t}\n\n\t\tme.min = labels[me.minIndex];\n\t\tme.max = labels[me.maxIndex];\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar labels = me.getLabels();\n\t\t// If we are viewing some subset of labels, slice the original array\n\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n\t\t}\n\n\t\treturn me.ticks[index - me.minIndex];\n\t},\n\n\t// Used to get data value locations. Value can either be an index or a numerical value\n\tgetPixelForValue: function(value, index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\t// 1 is added because we need the length but we have the indexes\n\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t// If value is a data object, then index is the index in the data array,\n\t\t// not the index of the scale. We need to change that.\n\t\tvar valueCategory;\n\t\tif (value !== undefined && value !== null) {\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t}\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\tvar labels = me.getLabels();\n\t\t\tvalue = valueCategory || value;\n\t\t\tvar idx = labels.indexOf(value);\n\t\t\tindex = idx !== -1 ? idx : index;\n\t\t}\n\n\t\tif (me.isHorizontal()) {\n\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t}\n\n\t\t\treturn me.left + widthOffset;\n\t\t}\n\t\tvar valueHeight = me.height / offsetAmt;\n\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\tif (offset) {\n\t\t\theightOffset += (valueHeight / 2);\n\t\t}\n\n\t\treturn me.top + heightOffset;\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tvar value;\n\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\tvar horz = me.isHorizontal();\n\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\tpixel -= horz ? me.left : me.top;\n\n\t\tif (offset) {\n\t\t\tpixel -= (valueDimension / 2);\n\t\t}\n\n\t\tif (pixel <= 0) {\n\t\t\tvalue = 0;\n\t\t} else {\n\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t}\n\n\t\treturn value + me.minIndex;\n\t},\n\n\tgetBasePixel: function() {\n\t\treturn this.bottom;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\nvar isNullOrUndef = helpers$1.isNullOrUndef;\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar MIN_SPACING = 1e-14;\n\tvar stepSize = generationOptions.stepSize;\n\tvar unit = stepSize || 1;\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\n\tvar min = generationOptions.min;\n\tvar max = generationOptions.max;\n\tvar precision = generationOptions.precision;\n\tvar rmin = dataRange.min;\n\tvar rmax = dataRange.max;\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n\tvar factor, niceMin, niceMax, numSpaces;\n\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\n\t// such that we can't do the math necessary to generate ticks\n\tif (spacing < MIN_SPACING && isNullOrUndef(min) && isNullOrUndef(max)) {\n\t\treturn [rmin, rmax];\n\t}\n\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\tif (numSpaces > maxNumSpaces) {\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n\t}\n\n\tif (stepSize || isNullOrUndef(precision)) {\n\t\t// If a precision is not specified, calculate factor based on spacing\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n\t} else {\n\t\t// If the user specified a precision, round to that number of decimal places\n\t\tfactor = Math.pow(10, precision);\n\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t}\n\n\tniceMin = Math.floor(rmin / spacing) * spacing;\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (!isNullOrUndef(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n\t\t\tniceMin = min;\n\t\t}\n\t\tif (!isNullOrUndef(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n\t\t\tniceMax = max;\n\t\t}\n\t}\n\n\tnumSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tniceMin = Math.round(niceMin * factor) / factor;\n\tniceMax = Math.round(niceMax * factor) / factor;\n\tticks.push(isNullOrUndef(min) ? niceMin : min);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n\t}\n\tticks.push(isNullOrUndef(max) ? niceMax : max);\n\n\treturn ticks;\n}\n\nvar scale_linearbase = core_scale.extend({\n\tgetRightValue: function(value) {\n\t\tif (typeof value === 'string') {\n\t\t\treturn +value;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t// axis, they can manually override it\n\t\tif (tickOpts.beginAtZero) {\n\t\t\tvar minSign = helpers$1.sign(me.min);\n\t\t\tvar maxSign = helpers$1.sign(me.max);\n\n\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t// move the top up to 0\n\t\t\t\tme.max = 0;\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t// move the bottom down to 0\n\t\t\t\tme.min = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\tif (tickOpts.min !== undefined) {\n\t\t\tme.min = tickOpts.min;\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t} else {\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t}\n\t\t}\n\n\t\tif (tickOpts.max !== undefined) {\n\t\t\tme.max = tickOpts.max;\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t} else {\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t}\n\t\t}\n\n\t\tif (setMin !== setMax) {\n\t\t\t// We set the min or the max but not both.\n\t\t\t// So ensure that our range is good\n\t\t\t// Inverted or 0 length range can happen when\n\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\tif (me.min >= me.max) {\n\t\t\t\tif (setMin) {\n\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (me.min === me.max) {\n\t\t\tme.max++;\n\n\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\tme.min--;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar stepSize = tickOpts.stepSize;\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\n\t\tvar maxTicks;\n\n\t\tif (stepSize) {\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n\t\t} else {\n\t\t\tmaxTicks = me._computeTickLimit();\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\n\t\t}\n\n\t\tif (maxTicksLimit) {\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\n\t\t}\n\n\t\treturn maxTicks;\n\t},\n\n\t_computeTickLimit: function() {\n\t\treturn Number.POSITIVE_INFINITY;\n\t},\n\n\thandleDirectionalChanges: noop,\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t// the graph. Make sure we always have at least 2 ticks\n\t\tvar maxTicks = me.getTickLimit();\n\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\tvar numericGeneratorOptions = {\n\t\t\tmaxTicks: maxTicks,\n\t\t\tmin: tickOpts.min,\n\t\t\tmax: tickOpts.max,\n\t\t\tprecision: tickOpts.precision,\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\tme.handleDirectionalChanges();\n\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\tticks.reverse();\n\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\n\t}\n});\n\nvar defaultConfig$1 = {\n\tposition: 'left',\n\tticks: {\n\t\tcallback: core_ticks.formatters.linear\n\t}\n};\n\nvar scale_linear = scale_linearbase.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar DEFAULT_MIN = 0;\n\t\tvar DEFAULT_MAX = 1;\n\n\t\tfunction IDMatches(meta) {\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t}\n\n\t\t// First Calculate the range\n\t\tme.min = null;\n\t\tme.max = null;\n\n\t\tvar hasStacks = opts.stacked;\n\t\tif (hasStacks === undefined) {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (hasStacks) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\thasStacks = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (opts.stacked || hasStacks) {\n\t\t\tvar valuesPerStack = {};\n\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tvar key = [\n\t\t\t\t\tmeta.type,\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\tmeta.stack\n\t\t\t\t].join('.');\n\n\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Store these per type\n\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\n\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\tvar minVal = helpers$1.min(values);\n\t\t\t\tvar maxVal = helpers$1.max(values);\n\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t});\n\n\t\t} else {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tthis.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickFont;\n\n\t\tif (me.isHorizontal()) {\n\t\t\treturn Math.ceil(me.width / 40);\n\t\t}\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\n\t},\n\n\t// Called after the ticks are built. We need\n\thandleDirectionalChanges: function() {\n\t\tif (!this.isHorizontal()) {\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\tthis.ticks.reverse();\n\t\t}\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\t// Utils\n\tgetPixelForValue: function(value) {\n\t\t// This must be called after fit has been run so that\n\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\tvar me = this;\n\t\tvar start = me.start;\n\n\t\tvar rightValue = +me.getRightValue(value);\n\t\tvar pixel;\n\t\tvar range = me.end - start;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t} else {\n\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t}\n\t\treturn pixel;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\treturn me.start + ((me.end - me.start) * offset);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$a = helpers$1.valueOrDefault;\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks$1(generationOptions, dataRange) {\n\tvar ticks = [];\n\n\tvar tickVal = valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers$1.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers$1.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers$1.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault$a(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\nvar defaultConfig$2 = {\n\tposition: 'left',\n\n\t// label settings\n\tticks: {\n\t\tcallback: core_ticks.formatters.logarithmic\n\t}\n};\n\n// TODO(v3): change this to positiveOrDefault\nfunction nonNegativeOrDefault(value, defaultValue) {\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n}\n\nvar scale_logarithmic = core_scale.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tfunction IDMatches(meta) {\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t}\n\n\t\t// Calculate Range\n\t\tme.min = null;\n\t\tme.max = null;\n\t\tme.minNotZero = null;\n\n\t\tvar hasStacks = opts.stacked;\n\t\tif (hasStacks === undefined) {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (hasStacks) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\thasStacks = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (opts.stacked || hasStacks) {\n\t\t\tvar valuesPerStack = {};\n\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tvar key = [\n\t\t\t\t\tmeta.type,\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\tmeta.stack\n\t\t\t\t].join('.');\n\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\n\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t}\n\t\t\t});\n\n\t\t} else {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\tthis.handleTickRangeOptions();\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar DEFAULT_MIN = 1;\n\t\tvar DEFAULT_MAX = 10;\n\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\n\n\t\tif (me.min === me.max) {\n\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1);\n\t\t\t\tme.max = Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1);\n\t\t\t} else {\n\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t}\n\t\t}\n\t\tif (me.min === null) {\n\t\t\tme.min = Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1);\n\t\t}\n\t\tif (me.max === null) {\n\t\t\tme.max = me.min !== 0\n\t\t\t\t? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1)\n\t\t\t\t: DEFAULT_MAX;\n\t\t}\n\t\tif (me.minNotZero === null) {\n\t\t\tif (me.min > 0) {\n\t\t\t\tme.minNotZero = me.min;\n\t\t\t} else if (me.max < 1) {\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers$1.log10(me.max)));\n\t\t\t} else {\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t}\n\t\t}\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = !me.isHorizontal();\n\n\t\tvar generationOptions = {\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\n\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\treverse = !reverse;\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t\tif (reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tthis.tickValues = this.ticks.slice();\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\n\t},\n\n\t// Get the correct tooltip label\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t},\n\n\t/**\n\t * Returns the value of the first tick.\n\t * @param {number} value - The minimum not zero value.\n\t * @return {number} The first tick value.\n\t * @private\n\t */\n\t_getFirstTickValue: function(value) {\n\t\tvar exp = Math.floor(helpers$1.log10(value));\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\treturn significand * Math.pow(10, exp);\n\t},\n\n\tgetPixelForValue: function(value) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = tickOpts.reverse;\n\t\tvar log10 = helpers$1.log10;\n\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\tvar offset = 0;\n\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\tvalue = +me.getRightValue(value);\n\t\tif (reverse) {\n\t\t\tstart = me.end;\n\t\t\tend = me.start;\n\t\t\tsign = -1;\n\t\t} else {\n\t\t\tstart = me.start;\n\t\t\tend = me.end;\n\t\t\tsign = 1;\n\t\t}\n\t\tif (me.isHorizontal()) {\n\t\t\tinnerDimension = me.width;\n\t\t\tpixel = reverse ? me.right : me.left;\n\t\t} else {\n\t\t\tinnerDimension = me.height;\n\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t}\n\t\tif (value !== start) {\n\t\t\tif (start === 0) { // include zero tick\n\t\t\t\toffset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);\n\t\t\t\tinnerDimension -= offset;\n\t\t\t\tstart = firstTickValue;\n\t\t\t}\n\t\t\tif (value !== 0) {\n\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t}\n\t\t\tpixel += sign * offset;\n\t\t}\n\t\treturn pixel;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = tickOpts.reverse;\n\t\tvar log10 = helpers$1.log10;\n\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\tvar innerDimension, start, end, value;\n\n\t\tif (reverse) {\n\t\t\tstart = me.end;\n\t\t\tend = me.start;\n\t\t} else {\n\t\t\tstart = me.start;\n\t\t\tend = me.end;\n\t\t}\n\t\tif (me.isHorizontal()) {\n\t\t\tinnerDimension = me.width;\n\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t} else {\n\t\t\tinnerDimension = me.height;\n\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t}\n\t\tif (value !== start) {\n\t\t\tif (start === 0) { // include zero tick\n\t\t\t\tvar offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);\n\t\t\t\tvalue -= offset;\n\t\t\t\tinnerDimension -= offset;\n\t\t\t\tstart = firstTickValue;\n\t\t\t}\n\t\t\tvalue *= log10(end) - log10(start);\n\t\t\tvalue /= innerDimension;\n\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t}\n\t\treturn value;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\nvar resolve$7 = helpers$1.options.resolve;\n\nvar defaultConfig$3 = {\n\tdisplay: true,\n\n\t// Boolean - Whether to animate scaling the chart from the centre\n\tanimate: true,\n\tposition: 'chartArea',\n\n\tangleLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\tgridLines: {\n\t\tcircular: false\n\t},\n\n\t// label settings\n\tticks: {\n\t\t// Boolean - Show a backdrop to the scale label\n\t\tshowLabelBackdrop: true,\n\n\t\t// String - The colour of the label backdrop\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t// Number - The backdrop padding above & below the label in pixels\n\t\tbackdropPaddingY: 2,\n\n\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\tbackdropPaddingX: 2,\n\n\t\tcallback: core_ticks.formatters.linear\n\t},\n\n\tpointLabels: {\n\t\t// Boolean - if true, show point labels\n\t\tdisplay: true,\n\n\t\t// Number - Point label font size in pixels\n\t\tfontSize: 10,\n\n\t\t// Function - Used to convert point labels\n\t\tcallback: function(label) {\n\t\t\treturn label;\n\t\t}\n\t}\n};\n\nfunction getValueCount(scale) {\n\tvar opts = scale.options;\n\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n}\n\nfunction getTickBackdropHeight(opts) {\n\tvar tickOpts = opts.ticks;\n\n\tif (tickOpts.display && opts.display) {\n\t\treturn valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n\t}\n\treturn 0;\n}\n\nfunction measureLabelSize(ctx, lineHeight, label) {\n\tif (helpers$1.isArray(label)) {\n\t\treturn {\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\n\t\t\th: label.length * lineHeight\n\t\t};\n\t}\n\n\treturn {\n\t\tw: ctx.measureText(label).width,\n\t\th: lineHeight\n\t};\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n\tif (angle === min || angle === max) {\n\t\treturn {\n\t\t\tstart: pos - (size / 2),\n\t\t\tend: pos + (size / 2)\n\t\t};\n\t} else if (angle < min || angle > max) {\n\t\treturn {\n\t\t\tstart: pos - size,\n\t\t\tend: pos\n\t\t};\n\t}\n\n\treturn {\n\t\tstart: pos,\n\t\tend: pos + size\n\t};\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n\t// Right, this is really confusing and there is a lot of maths going on here\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t//\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t//\n\t// Solution:\n\t//\n\t// We assume the radius of the polygon is half the size of the canvas at first\n\t// at each index we check if the text overlaps.\n\t//\n\t// Where it does, we store that angle and that index.\n\t//\n\t// After finding the largest index and angle we calculate how much we need to remove\n\t// from the shape radius to move the point inwards by that x.\n\t//\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\n\t// along with labels.\n\t//\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t//\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t// and position it in the most space efficient manner\n\t//\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\n\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\tvar furthestLimits = {\n\t\tl: 0,\n\t\tr: scale.width,\n\t\tt: 0,\n\t\tb: scale.height - scale.paddingTop\n\t};\n\tvar furthestAngles = {};\n\tvar i, textSize, pointPosition;\n\n\tscale.ctx.font = plFont.string;\n\tscale._pointLabelSizes = [];\n\n\tvar valueCount = getValueCount(scale);\n\tfor (i = 0; i < valueCount; i++) {\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || '');\n\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\tfurthestAngles.l = angleRadians;\n\t\t}\n\n\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\tfurthestAngles.r = angleRadians;\n\t\t}\n\n\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\tfurthestAngles.t = angleRadians;\n\t\t}\n\n\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\tfurthestAngles.b = angleRadians;\n\t\t}\n\t}\n\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n}\n\nfunction getTextAlignForAngle(angle) {\n\tif (angle === 0 || angle === 180) {\n\t\treturn 'center';\n\t} else if (angle < 180) {\n\t\treturn 'left';\n\t}\n\n\treturn 'right';\n}\n\nfunction fillText(ctx, text, position, lineHeight) {\n\tvar y = position.y + lineHeight / 2;\n\tvar i, ilen;\n\n\tif (helpers$1.isArray(text)) {\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\n\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\ty += lineHeight;\n\t\t}\n\t} else {\n\t\tctx.fillText(text, position.x, y);\n\t}\n}\n\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\tif (angle === 90 || angle === 270) {\n\t\tposition.y -= (textSize.h / 2);\n\t} else if (angle > 270 || angle < 90) {\n\t\tposition.y -= textSize.h;\n\t}\n}\n\nfunction drawPointLabels(scale) {\n\tvar ctx = scale.ctx;\n\tvar opts = scale.options;\n\tvar angleLineOpts = opts.angleLines;\n\tvar gridLineOpts = opts.gridLines;\n\tvar pointLabelOpts = opts.pointLabels;\n\tvar lineWidth = valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n\tvar lineColor = valueOrDefault$b(angleLineOpts.color, gridLineOpts.color);\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\n\n\tctx.save();\n\tctx.lineWidth = lineWidth;\n\tctx.strokeStyle = lineColor;\n\tif (ctx.setLineDash) {\n\t\tctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n\t\tctx.lineDashOffset = resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n\t}\n\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t// Point Label Font\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\n\n\tctx.font = plFont.string;\n\tctx.textBaseline = 'middle';\n\n\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\n\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tif (pointLabelOpts.display) {\n\t\t\t// Extra pixels out for some label spacing\n\t\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\n\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\n\n\t\t\t// Keep this in loop since we may support array properties here\n\t\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers$1.toDegrees(angleRadians);\n\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight);\n\t\t}\n\t}\n\tctx.restore();\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\tvar ctx = scale.ctx;\n\tvar circular = gridLineOpts.circular;\n\tvar valueCount = getValueCount(scale);\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n\tvar pointPosition;\n\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\n\t\treturn;\n\t}\n\n\tctx.save();\n\tctx.strokeStyle = lineColor;\n\tctx.lineWidth = lineWidth;\n\tif (ctx.setLineDash) {\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n\t}\n\n\tctx.beginPath();\n\tif (circular) {\n\t\t// Draw circular arcs between the points\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t} else {\n\t\t// Draw straight lines connecting each index\n\t\tpointPosition = scale.getPointPosition(0, radius);\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t}\n\t}\n\tctx.closePath();\n\tctx.stroke();\n\tctx.restore();\n}\n\nfunction numberOrZero(param) {\n\treturn helpers$1.isNumber(param) ? param : 0;\n}\n\nvar scale_radialLinear = scale_linearbase.extend({\n\tsetDimensions: function() {\n\t\tvar me = this;\n\n\t\t// Set the unconstrained dimension before label rotation\n\t\tme.width = me.maxWidth;\n\t\tme.height = me.maxHeight;\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\n\t\tme.xCenter = Math.floor(me.width / 2);\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar min = Number.POSITIVE_INFINITY;\n\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tme.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\n\n\t\t// Point labels\n\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\n\t\tif (opts.display && opts.pointLabels.display) {\n\t\t\tfitWithPointLabels(me);\n\t\t} else {\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\n\t\t}\n\t},\n\n\t/**\n\t * Set radius reductions and determine new radius and center point\n\t * @private\n\t */\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\tvar me = this;\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\tme.drawingArea = Math.min(\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t},\n\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\tvar me = this;\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\tvar maxTop = topMovement + me.drawingArea;\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\n\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\n\t},\n\n\tgetIndexAngle: function(index) {\n\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\tthis.chart.options.startAngle :\n\t\t\t0;\n\n\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\treturn index * angleMultiplier + startAngleRadians;\n\t},\n\n\tgetDistanceFromCenterForValue: function(value) {\n\t\tvar me = this;\n\n\t\tif (value === null) {\n\t\t\treturn 0; // null always in center\n\t\t}\n\n\t\t// Take into account half font size + the yPadding of the top value\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\tif (me.options.ticks.reverse) {\n\t\t\treturn (me.max - value) * scalingFactor;\n\t\t}\n\t\treturn (value - me.min) * scalingFactor;\n\t},\n\n\tgetPointPosition: function(index, distanceFromCenter) {\n\t\tvar me = this;\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\treturn {\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n\t\t};\n\t},\n\n\tgetPointPositionForValue: function(index, value) {\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t},\n\n\tgetBasePosition: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.getPointPositionForValue(0,\n\t\t\tme.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0);\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar tickOpts = opts.ticks;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar startAngle = this.getIndexAngle(0);\n\t\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\n\n\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\tdrawPointLabels(me);\n\t\t\t}\n\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\n\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\tvar tickFontColor = valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n\t\t\t\t\t\tctx.font = tickFont.string;\n\n\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t-yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn 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 */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {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 */\nfunction interpolate$1(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\nfunction toTimestamp(scale, input) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.options.time;\n\tvar parser = options.parser;\n\tvar format = parser || options.format;\n\tvar value = input;\n\n\tif (typeof parser === 'function') {\n\t\tvalue = parser(value);\n\t}\n\n\t// Only parse if its not a timestamp already\n\tif (!helpers$1.isFinite(value)) {\n\t\tvalue = typeof format === 'string'\n\t\t\t? adapter.parse(value, format)\n\t\t\t: adapter.parse(value);\n\t}\n\n\tif (value !== null) {\n\t\treturn +value;\n\t}\n\n\t// Labels are in an incompatible format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option for parsing.\n\tif (!parser && typeof format === 'function') {\n\t\tvalue = format(input);\n\n\t\t// `format` could return something else than a timestamp, if so, parse it\n\t\tif (!helpers$1.isFinite(value)) {\n\t\t\tvalue = adapter.parse(value);\n\t\t}\n\t}\n\n\treturn value;\n}\n\nfunction parse(scale, input) {\n\tif (helpers$1.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\n\tif (value === null) {\n\t\treturn value;\n\t}\n\n\tif (options.round) {\n\t\tvalue = +scale._adapter.startOf(value, options.round);\n\t}\n\n\treturn value;\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 */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(scale, ticks, minUnit, min, max) {\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\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 */\nfunction generate(scale, min, max, capacity) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.options;\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = valueOrDefault$c(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = min;\n\tvar last = max;\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\n\t\tlast = +adapter.startOf(last, 'isoWeek', weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\n\tlast = +adapter.startOf(last, weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast = +adapter.add(last, 1, minor);\n\t}\n\n\ttime = first;\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime = +adapter.startOf(time, major);\n\t\ttime = +adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time = +adapter.add(time, stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the start and end offsets from edges in the form of {start, end}\n * where each value is a relative width to the scale and ranges between 0 and 1.\n * They add extra margins on the both sides by scaling down the original scale.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar start = 0;\n\tvar end = 0;\n\tvar first, last;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\n\t\t\tif (ticks.length === 1) {\n\t\t\t\tstart = 1 - first;\n\t\t\t} else {\n\t\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n\t\t\t}\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n\t\t\tif (ticks.length === 1) {\n\t\t\t\tend = last;\n\t\t\t} else {\n\t\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {start: start, end: end};\n}\n\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +scale._adapter.startOf(value, majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nvar defaultConfig$4 = {\n\tposition: 'bottom',\n\n\t/**\n\t * Data distribution along the scale:\n\t * - 'linear': data are spread according to their time (distances can vary),\n\t * - 'series': data are spread at the same distance from each other.\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t * @since 2.7.0\n\t */\n\tdistribution: 'linear',\n\n\t/**\n\t * Scale boundary strategy (bypassed by min/max time options)\n\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t * @since 2.7.0\n\t */\n\tbounds: 'data',\n\n\tadapters: {},\n\ttime: {\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\tround: false, // none, or override with week, month, year, etc.\n\t\tdisplayFormat: false, // DEPRECATED\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n\t\tminUnit: 'millisecond',\n\t\tdisplayFormats: {}\n\t},\n\tticks: {\n\t\tautoSkip: false,\n\n\t\t/**\n\t\t * Ticks generation input values:\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tsource: 'auto',\n\n\t\tmajor: {\n\t\t\tenabled: false\n\t\t}\n\t}\n};\n\nvar scale_time = core_scale.extend({\n\tinitialize: function() {\n\t\tthis.mergeTicksOptions();\n\t\tcore_scale.prototype.initialize.call(this);\n\t},\n\n\tupdate: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar time = options.time || (options.time = {});\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\n\n\t\t// DEPRECATIONS: output a message only one time per update\n\t\tif (time.format) {\n\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t}\n\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\n\t\t// missing formats on update\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\n\n\t\treturn core_scale.prototype.update.apply(me, arguments);\n\t},\n\n\t/**\n\t * Allows data to be referenced via 't' attribute\n\t */\n\tgetRightValue: function(rawValue) {\n\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\trawValue = rawValue.t;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar adapter = me._adapter;\n\t\tvar timeOpts = me.options.time;\n\t\tvar unit = timeOpts.unit || 'day';\n\t\tvar min = MAX_INTEGER;\n\t\tvar max = MIN_INTEGER;\n\t\tvar timestamps = [];\n\t\tvar datasets = [];\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, data, timestamp;\n\t\tvar dataLabels = chart.data.labels || [];\n\n\t\t// Convert labels to timestamps\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n\t\t\tlabels.push(parse(me, dataLabels[i]));\n\t\t}\n\n\t\t// Convert data to timestamps\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\tif (helpers$1.isObject(data[0])) {\n\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\n\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\t\ttimestamps.push(labels[j]);\n\t\t\t\t\t}\n\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdatasets[i] = [];\n\t\t\t}\n\t\t}\n\n\t\tif (labels.length) {\n\t\t\t// Sort labels **after** data have been converted\n\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\tmin = Math.min(min, labels[0]);\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t}\n\n\t\tif (timestamps.length) {\n\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t}\n\n\t\tmin = parse(me, timeOpts.min) || min;\n\t\tmax = parse(me, timeOpts.max) || max;\n\n\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\n\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\tme.min = Math.min(min, max);\n\t\tme.max = Math.max(min + 1, max);\n\n\t\t// PRIVATE\n\t\tme._horizontal = me.isHorizontal();\n\t\tme._table = [];\n\t\tme._timestamps = {\n\t\t\tdata: timestamps,\n\t\t\tdatasets: datasets,\n\t\t\tlabels: labels\n\t\t};\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\t\tvar options = me.options;\n\t\tvar timeOpts = options.time;\n\t\tvar timestamps = [];\n\t\tvar ticks = [];\n\t\tvar i, ilen, timestamp;\n\n\t\tswitch (options.ticks.source) {\n\t\tcase 'data':\n\t\t\ttimestamps = me._timestamps.data;\n\t\t\tbreak;\n\t\tcase 'labels':\n\t\t\ttimestamps = me._timestamps.labels;\n\t\t\tbreak;\n\t\tcase 'auto':\n\t\tdefault:\n\t\t\ttimestamps = generate(me, min, max, me.getLabelCapacity(min), options);\n\t\t}\n\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\tmin = timestamps[0];\n\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t}\n\n\t\t// Enforce limits with user min/max options\n\t\tmin = parse(me, timeOpts.min) || min;\n\t\tmax = parse(me, timeOpts.max) || max;\n\n\t\t// Remove ticks outside the min/max range\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\ttimestamp = timestamps[i];\n\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\tticks.push(timestamp);\n\t\t\t}\n\t\t}\n\n\t\tme.min = min;\n\t\tme.max = max;\n\n\t\t// PRIVATE\n\t\tme._unit = timeOpts.unit || determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max);\n\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n\t\tif (options.ticks.reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar data = me.chart.data;\n\t\tvar timeOpts = me.options.time;\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\tif (helpers$1.isObject(value)) {\n\t\t\tlabel = me.getRightValue(value);\n\t\t}\n\t\tif (timeOpts.tooltipFormat) {\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n\t\t}\n\t\tif (typeof label === 'string') {\n\t\t\treturn label;\n\t\t}\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n\t},\n\n\t/**\n\t * Function to format an individual tick mark\n\t * @private\n\t */\n\ttickFormatFunction: function(time, index, ticks, format) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar options = me.options;\n\t\tvar formats = options.time.displayFormats;\n\t\tvar minorFormat = formats[me._unit];\n\t\tvar majorUnit = me._majorUnit;\n\t\tvar majorFormat = formats[majorUnit];\n\t\tvar majorTime = +adapter.startOf(time, majorUnit);\n\t\tvar majorTickOpts = options.ticks.major;\n\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\tvar formatter = valueOrDefault$c(tickOpts.callback, tickOpts.userCallback);\n\n\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t},\n\n\tconvertTicksToLabels: function(ticks) {\n\t\tvar labels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n\t\t}\n\n\t\treturn labels;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetPixelForOffset: function(time) {\n\t\tvar me = this;\n\t\tvar isReverse = me.options.ticks.reverse;\n\t\tvar size = me._horizontal ? me.width : me.height;\n\t\tvar start = me._horizontal ? isReverse ? me.right : me.left : isReverse ? me.bottom : me.top;\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\n\t\tvar offset = size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end);\n\n\t\treturn isReverse ? start - offset : start + offset;\n\t},\n\n\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar time = null;\n\n\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t}\n\n\t\tif (time === null) {\n\t\t\ttime = parse(me, value);\n\t\t}\n\n\t\tif (time !== null) {\n\t\t\treturn me.getPixelForOffset(time);\n\t\t}\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.getTicks();\n\t\treturn index >= 0 && index < ticks.length ?\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\tnull;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar size = me._horizontal ? me.width : me.height;\n\t\tvar start = me._horizontal ? me.left : me.top;\n\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end;\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\n\n\t\t// DEPRECATION, we should return time directly\n\t\treturn me._adapter._create(time);\n\t},\n\n\t/**\n\t * Crude approximation of what the label width might be\n\t * @private\n\t */\n\tgetLabelWidth: function(label) {\n\t\tvar me = this;\n\t\tvar ticksOpts = me.options.ticks;\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\tvar angle = helpers$1.toRadians(ticksOpts.maxRotation);\n\t\tvar cosRotation = Math.cos(angle);\n\t\tvar sinRotation = Math.sin(angle);\n\t\tvar tickFontSize = valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n\n\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetLabelCapacity: function(exampleTime) {\n\t\tvar me = this;\n\n\t\t// pick the longest format (milliseconds) for guestimation\n\t\tvar format = me.options.time.displayFormats.millisecond;\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format);\n\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\n\t\treturn capacity > 0 ? capacity : 1;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\n\tcategory: scale_category,\n\tlinear: scale_linear,\n\tlogarithmic: scale_logarithmic,\n\tradialLinear: scale_radialLinear,\n\ttime: scale_time\n};\n\nvar FORMATS = {\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\n\tmillisecond: 'h:mm:ss.SSS a',\n\tsecond: 'h:mm:ss a',\n\tminute: 'h:mm a',\n\thour: 'hA',\n\tday: 'MMM D',\n\tweek: 'll',\n\tmonth: 'MMM YYYY',\n\tquarter: '[Q]Q - YYYY',\n\tyear: 'YYYY'\n};\n\ncore_adapters._date.override(typeof moment === 'function' ? {\n\t_id: 'moment', // DEBUG ONLY\n\n\tformats: function() {\n\t\treturn FORMATS;\n\t},\n\n\tparse: function(value, format) {\n\t\tif (typeof value === 'string' && typeof format === 'string') {\n\t\t\tvalue = moment(value, format);\n\t\t} else if (!(value instanceof moment)) {\n\t\t\tvalue = moment(value);\n\t\t}\n\t\treturn value.isValid() ? value.valueOf() : null;\n\t},\n\n\tformat: function(time, format) {\n\t\treturn moment(time).format(format);\n\t},\n\n\tadd: function(time, amount, unit) {\n\t\treturn moment(time).add(amount, unit).valueOf();\n\t},\n\n\tdiff: function(max, min, unit) {\n\t\treturn moment.duration(moment(max).diff(moment(min))).as(unit);\n\t},\n\n\tstartOf: function(time, unit, weekday) {\n\t\ttime = moment(time);\n\t\tif (unit === 'isoWeek') {\n\t\t\treturn time.isoWeekday(weekday).valueOf();\n\t\t}\n\t\treturn time.startOf(unit).valueOf();\n\t},\n\n\tendOf: function(time, unit) {\n\t\treturn moment(time).endOf(unit).valueOf();\n\t},\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility with scale.getValueForPixel().\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(time) {\n\t\treturn moment(time);\n\t},\n} : {});\n\ncore_defaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (helpers$1.isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nvar plugin_filler = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || core_defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers$1.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\nvar noop$1 = helpers$1.noop;\nvar valueOrDefault$d = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\t\tonLeave: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers$1.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers$1.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('
  • ');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('
  • ');\n\t\t}\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param {object} labelopts - the label options on the legend\n * @param {number} fontSize - the label font size\n * @return {number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\n\t\tfontSize :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = core_element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers$1.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t/**\n \t\t * @private\n \t\t */\n\t\tthis._hoveredItem = null;\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop$1,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop$1,\n\n\t//\n\n\tbeforeSetDimensions: noop$1,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$1,\n\n\t//\n\n\tbeforeBuildLabels: noop$1,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop$1,\n\n\t//\n\n\tbeforeFit: noop$1,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\tvar fontSize = labelFont.size;\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont.string;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\n\t\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = labelOpts.padding;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (i > 0 && currentColHeight + itemHeight > minSize.height - vPadding) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop$1,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor;\n\t\tvar lineDefault = globalDefaults.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar fontColor = valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\t\tvar fontSize = labelFont.size;\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont.string;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tvar lineWidth = valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.fillStyle = valueOrDefault$d(legendItem.fillStyle, defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = lineWidth;\n\t\t\t\tctx.strokeStyle = valueOrDefault$d(legendItem.strokeStyle, defaultColor);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\n\t\t\t\t\tvar centerX = x + boxWidth / 2;\n\t\t\t\t\tvar centerY = y + fontSize / 2;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (lineWidth !== 0) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n\t\t\t\t// instead of me.right and me.bottom because me.width and me.height\n\t\t\t\t// may have been changed since me.minSize was calculated\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding;\n\t\t\t\t\t}\n\t\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + labelOpts.padding;\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getLegendItemAt: function(x, y) {\n\t\tvar me = this;\n\t\tvar i, hitBox, lh;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tlh = me.legendHitBoxes;\n\t\t\tfor (i = 0; i < lh.length; ++i) {\n\t\t\t\thitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\treturn me.legendItems[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar hoveredItem;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover && !opts.onLeave) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\n\n\t\tif (type === 'click') {\n\t\t\tif (hoveredItem && opts.onClick) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t} else {\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\n\t\t\t\tif (me._hoveredItem) {\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\n\t\t\t\t}\n\t\t\t\tme._hoveredItem = hoveredItem;\n\t\t\t}\n\n\t\t\tif (opts.onHover && hoveredItem) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, legend, legendOpts);\n\tcore_layouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nvar plugin_legend = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tcore_layouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\nvar noop$2 = helpers$1.noop;\n\ncore_defaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = core_element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers$1.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop$2,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop$2,\n\n\t//\n\n\tbeforeSetDimensions: noop$2,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$2,\n\n\t//\n\n\tbeforeBuildLabels: noop$2,\n\tbuildLabels: noop$2,\n\tafterBuildLabels: noop$2,\n\n\t//\n\n\tbeforeFit: noop$2,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\n\t\tvar textSize = display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop$2,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar opts = me.options;\n\n\t\tif (opts.display) {\n\t\t\tvar fontOpts = helpers$1.options._parseFont(opts);\n\t\t\tvar lineHeight = fontOpts.lineHeight;\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n\t\t\tctx.font = fontOpts.string;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers$1.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, title, titleOpts);\n\tcore_layouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nvar plugin_title = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\nvar plugins = {};\nvar filler = plugin_filler;\nvar legend = plugin_legend;\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\n * @namespace Chart\n */\n\n\ncore_controller.helpers = helpers$1;\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\ncore_helpers(core_controller);\n\ncore_controller._adapters = core_adapters;\ncore_controller.Animation = core_animation;\ncore_controller.animationService = core_animations;\ncore_controller.controllers = controllers;\ncore_controller.DatasetController = core_datasetController;\ncore_controller.defaults = core_defaults;\ncore_controller.Element = core_element;\ncore_controller.elements = elements;\ncore_controller.Interaction = core_interaction;\ncore_controller.layouts = core_layouts;\ncore_controller.platform = platform;\ncore_controller.plugins = core_plugins;\ncore_controller.Scale = core_scale;\ncore_controller.scaleService = core_scaleService;\ncore_controller.Ticks = core_ticks;\ncore_controller.Tooltip = core_tooltip;\n\n// Register built-in scales\n\ncore_controller.helpers.each(scales, function(scale, type) {\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n});\n\n// Load to register built-in adapters (as side effects)\n\n\n// Loading built-in plugins\n\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tcore_controller.plugins.register(plugins[k]);\n\t}\n}\n\ncore_controller.platform.initialize();\n\nvar src = core_controller;\nif (typeof window !== 'undefined') {\n\twindow.Chart = core_controller;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Chart\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.Chart = core_controller;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Title = plugins.title._element;\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 */\ncore_controller.pluginService = core_controller.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 */\ncore_controller.PluginBase = core_controller.Element.extend({});\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 */\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.7.3\n * @todo remove at version 3\n * @private\n */\ncore_controller.layoutService = core_controller.layouts;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.LinearScaleBase\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\ncore_controller.LinearScaleBase = scale_linearbase;\n\n/**\n * Provided for backward compatibility, instead we should create a new Chart\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n */\ncore_controller.helpers.each(\n\t[\n\t\t'Bar',\n\t\t'Bubble',\n\t\t'Doughnut',\n\t\t'Line',\n\t\t'PolarArea',\n\t\t'Radar',\n\t\t'Scatter'\n\t],\n\tfunction(klass) {\n\t\tcore_controller[klass] = function(ctx, cfg) {\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\n\t\t\t}));\n\t\t};\n\t}\n);\n\nreturn src;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","module.exports = clamp\n\nfunction clamp(value, min, max) {\n return min < max\n ? (value < min ? min : value > max ? max : value)\n : (value < max ? max : value > min ? min : value)\n}\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","function lerp(v0, v1, t) {\n return v0*(1-t)+v1*t\n}\nmodule.exports = lerp","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","'use strict'\r\n\r\n/**\r\n * @module color-interpolate\r\n * Pick color from palette by index\r\n */\r\n\r\nconst parse = require('color-parse');\r\nconst hsl = require('color-space/hsl');\r\nconst lerp = require('lerp');\r\nconst clamp = require('clamp');\r\n\r\nmodule.exports = interpolate;\r\n\r\nfunction interpolate (palette) {\r\n\tpalette = palette.map(function(c) {\r\n\t\tc = parse(c);\r\n\t\tif (c.space != 'rgb') {\r\n\t\t\tif (c.space != 'hsl') throw 'c.space' + 'space is not supported.';\r\n\t\t\tc.values = hsl.rgb(c.values);\r\n\t\t}\r\n\t\tc.values.push(c.alpha);\r\n\t\treturn c.values;\r\n\t});\r\n\r\n\treturn function(t, mix) {\r\n\t\tmix = mix || lerp;\r\n\t\tt = clamp(t, 0, 1);\r\n\r\n\t\tvar idx = ( palette.length - 1 ) * t,\r\n\t\t\tlIdx = Math.floor( idx ),\r\n\t\t\trIdx = Math.ceil( idx );\r\n\r\n\t\tt = idx - lIdx;\r\n\r\n\t\tvar lColor = palette[lIdx], rColor = palette[rIdx];\r\n\r\n\t\tvar result = lColor.map(function(v, i) {\r\n\t\t\tv = mix(v, rColor[i], t);\r\n\t\t\tif (i < 3) v = Math.round(v);\r\n\t\t\treturn v;\r\n\t\t});\r\n\r\n\t\tif (result[3] === 1) {\r\n\t\t\treturn 'rgb('+result.slice(0,3)+')';\r\n\t\t}\r\n\t\treturn 'rgba('+result+')';\r\n\t};\r\n}\r\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js\n//! version : 2.29.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 (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\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 (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\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 invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\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 len = t.length >>> 0,\n i;\n\n for (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 function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n 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 } 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 } 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 updateInProgress = false;\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 // 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 (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\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 arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\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(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\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 (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\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 '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n 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 (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\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,\n 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 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 function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\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?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n 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(\n func.apply(this, arguments),\n token\n );\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),\n i,\n 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 = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : 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] =\n 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(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\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\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\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 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 w: 'a week',\n ww: '%d weeks',\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'\n ? aliases[units] || aliases[units.toLowerCase()]\n : 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 u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 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]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\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 function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (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 var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\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 matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : 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(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\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,\n 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 MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\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 function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\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 defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n 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(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.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(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\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 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\n : this._monthsShortRegex;\n }\n }\n\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\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n 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(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + 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] =\n 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 // 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;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\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,\n 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,\n 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 (\n input,\n week,\n config,\n token\n ) {\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 6th 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 function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n 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(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.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(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\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 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\n : this._weekdaysRegex;\n }\n }\n\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\n : this._weekdaysShortRegex;\n }\n }\n\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\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n 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 = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(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\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\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 (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\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 (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\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 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 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 // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\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 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 localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\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,\n j,\n next,\n locale,\n 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 (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\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 globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\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 } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n '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 );\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 locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._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 }\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 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,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\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 if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\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(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\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 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 tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n 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 ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n 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 aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n 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 function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\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 if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\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. Please refer to 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 [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\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,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n 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 (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\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] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\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 // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\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(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\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 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 beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning 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,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n 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)) ||\n [])[0];\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(\n string.indexOf(parsedInput) + parsedInput.length\n );\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 } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\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 =\n 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 (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\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(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\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 scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\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 validFormatFound = false;\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 validFormatFound = true;\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 (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\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 dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\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 (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\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 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 = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (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 || normalizedInput.isoWeek || 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 =\n +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 + weeks * 7;\n // It is impossible to 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 + quarters * 3 + 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 // 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 (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\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 chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : 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 =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : 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());\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(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\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 } 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 other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && 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 // 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 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) || !isNaN(+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) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\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 if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\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 = {};\n\n res.months =\n other.month() - base.month() + (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(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\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 (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\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 output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\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(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(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 var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\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 (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\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, zoneDelta, 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 switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\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,\n 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(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\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 zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .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 (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .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 var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\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 [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\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 addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\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 // 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 (\n input,\n week,\n config,\n token\n ) {\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(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 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 getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), 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\n ? Math.ceil((this.month() + 1) / 3)\n : 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 // PRIORITY\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]);\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 =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 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 // 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, getSetMillisecond;\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\n 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 if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\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 proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\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 proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\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 proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\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 proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n 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 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 i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\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 eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\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 days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n 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 (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\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 months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\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':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n 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 asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\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 seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n 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/week\n w: null, // weeks 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, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (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\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\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(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, 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 sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\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 days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\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 // 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 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\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.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\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 proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\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) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.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 // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","/**\r\n * @module color-parse\r\n */\r\n\r\n'use strict'\r\n\r\nvar names = require('color-name')\r\n\r\nmodule.exports = parse\r\n\r\n/**\r\n * Base hues\r\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\r\n */\r\n//FIXME: use external hue detector\r\nvar baseHues = {\r\n\tred: 0,\r\n\torange: 60,\r\n\tyellow: 120,\r\n\tgreen: 180,\r\n\tblue: 240,\r\n\tpurple: 300\r\n}\r\n\r\n/**\r\n * Parse color from the string passed\r\n *\r\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\r\n */\r\nfunction parse (cstr) {\r\n\tvar m, parts = [], alpha = 1, space\r\n\r\n\tif (typeof cstr === 'string') {\r\n\t\t//keyword\r\n\t\tif (names[cstr]) {\r\n\t\t\tparts = names[cstr].slice()\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//reserved words\r\n\t\telse if (cstr === 'transparent') {\r\n\t\t\talpha = 0\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [0,0,0]\r\n\t\t}\r\n\r\n\t\t//hex\r\n\t\telse if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\r\n\t\t\tvar base = cstr.slice(1)\r\n\t\t\tvar size = base.length\r\n\t\t\tvar isShort = size <= 4\r\n\t\t\talpha = 1\r\n\r\n\t\t\tif (isShort) {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[0], 16),\r\n\t\t\t\t\tparseInt(base[1] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[2], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 4) {\r\n\t\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[3], 16),\r\n\t\t\t\t\tparseInt(base[4] + base[5], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 8) {\r\n\t\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!parts[0]) parts[0] = 0\r\n\t\t\tif (!parts[1]) parts[1] = 0\r\n\t\t\tif (!parts[2]) parts[2] = 0\r\n\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//color space\r\n\t\telse if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\r\n\t\t\tvar name = m[1]\r\n\t\t\tvar isRGB = name === 'rgb'\r\n\t\t\tvar base = name.replace(/a$/, '')\r\n\t\t\tspace = base\r\n\t\t\tvar size = base === 'cmyk' ? 4 : base === 'gray' ? 1 : 3\r\n\t\t\tparts = m[2].trim()\r\n\t\t\t\t.split(/\\s*[,\\/]\\s*|\\s+/)\r\n\t\t\t\t.map(function (x, i) {\r\n\t\t\t\t\t//\r\n\t\t\t\t\tif (/%$/.test(x)) {\r\n\t\t\t\t\t\t//alpha\r\n\t\t\t\t\t\tif (i === size)\treturn parseFloat(x) / 100\r\n\t\t\t\t\t\t//rgb\r\n\t\t\t\t\t\tif (base === 'rgb') return parseFloat(x) * 255 / 100\r\n\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//hue\r\n\t\t\t\t\telse if (base[i] === 'h') {\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\tif (/deg$/.test(x)) {\r\n\t\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\telse if (baseHues[x] !== undefined) {\r\n\t\t\t\t\t\t\treturn baseHues[x]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t})\r\n\r\n\t\t\tif (name === base) parts.push(1)\r\n\t\t\talpha = (isRGB) ? 1 : (parts[size] === undefined) ? 1 : parts[size]\r\n\t\t\tparts = parts.slice(0, size)\r\n\t\t}\r\n\r\n\t\t//named channels case\r\n\t\telse if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\r\n\t\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\r\n\t\t\t\treturn parseFloat(value)\r\n\t\t\t})\r\n\r\n\t\t\tspace = cstr.match(/([a-z])/ig).join('').toLowerCase()\r\n\t\t}\r\n\t}\r\n\r\n\t//numeric case\r\n\telse if (!isNaN(cstr)) {\r\n\t\tspace = 'rgb'\r\n\t\tparts = [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff]\r\n\t}\r\n\r\n\t//array-like\r\n\telse if (Array.isArray(cstr) || cstr.length) {\r\n\t\tparts = [cstr[0], cstr[1], cstr[2]]\r\n\t\tspace = 'rgb'\r\n\t\talpha = cstr.length === 4 ? cstr[3] : 1\r\n\t}\r\n\r\n\t//object case - detects css cases of rgb and hsl\r\n\telse if (cstr instanceof Object) {\r\n\t\tif (cstr.r != null || cstr.red != null || cstr.R != null) {\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.r || cstr.red || cstr.R || 0,\r\n\t\t\t\tcstr.g || cstr.green || cstr.G || 0,\r\n\t\t\t\tcstr.b || cstr.blue || cstr.B || 0\r\n\t\t\t]\r\n\t\t}\r\n\t\telse {\r\n\t\t\tspace = 'hsl'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.h || cstr.hue || cstr.H || 0,\r\n\t\t\t\tcstr.s || cstr.saturation || cstr.S || 0,\r\n\t\t\t\tcstr.l || cstr.lightness || cstr.L || cstr.b || cstr.brightness\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\talpha = cstr.a || cstr.alpha || cstr.opacity || 1\r\n\r\n\t\tif (cstr.opacity != null) alpha /= 100\r\n\t}\r\n\r\n\treturn {\r\n\t\tspace: space,\r\n\t\tvalues: parts,\r\n\t\talpha: alpha\r\n\t}\r\n}\r\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\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\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n"],"sourceRoot":""}