{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./src/js/index-free.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","isObject","TypeError","String","fails","a","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","ceil","floor","isNaN","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","IS_PURE","push","version","copyright","bitmap","configurable","writable","toString","slice","input","PREFERRED_STRING","fn","val","valueOf","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","TYPE","state","type","keys","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","internalObjectKeys","concat","getOwnPropertyNames","id","postfix","random","classof","Array","isArray","arg","max","integer","propertyIsEnumerable","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","SPECIES","wellKnownSymbol","METHOD_NAME","array","constructor","foo","Boolean","createElement","path","aFunction","variable","namespace","method","arguments","EXISTS","indexOf","names","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","C","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertySymbols","originalArray","TAG","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","__webpack_amd_options__","g","e","propertyKey","test","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","UNSCOPABLES","ArrayPrototype","CORRECT_PROTOTYPE_GETTER","wrappedWellKnownSymbolModule","$","createIteratorConstructor","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","PrototypeOfArrayIteratorPrototype","arrayIterator","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","ignoreCase","multiline","dotAll","unicode","sticky","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","codeAt","b","apply","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","nativeObjectCreate","objectKeys","getOwnPropertyNamesExternal","defineWellKnownSymbol","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","point","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","originalModule","webpackPolyfill","children","createProperty","arrayMethodHasSpeciesSupport","nativeSlice","start","end","Constructor","k","fin","whitespace","ltrim","rtrim","trim","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","windowNames","getWindowNames","$map","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","len","actualStart","argumentsLength","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","nativeJoin","ES3_STRINGS","separator","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","$filter","defaultConstructor","DatePrototype","Date","nativeDateToString","getTime","NaN","parseFloatImplementation","parseFloat","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","$find","SKIPS_HOLES","whitespaces","nativeParseFloat","Infinity","trimmedString","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","IS_RIGHT","memo","left","right","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","Wrapper","NewTarget","NewTargetPrototype","MATCH","nativeMatch","matcher","matchStr","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","$reduce","reduce","nativeReverse","reverse","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","parseIntImplementation","CONSTRUCTOR_NAME","FunctionPrototype","FunctionPrototypeToString","nameRE","endPos","nativeParseInt","hex","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","nativeLastIndexOf","lastIndexOf","jQuery","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","element","event","handler","addEventListener","each","resize","height","scrollHeight","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","ChangeDateInputType","makeActiveAutofocus","textAreaAutoResize","on","action","siblings","noValue","isValid","noPlaceholder","attr","removeClass","validateField","$formReset","is","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","append","$input","hasValue","hasPlaceholder","addOrRemove","hasClass","valid","Number","addClass","$dateInputs","$item","$textarea","fontFamily","css","fontSize","text","content","width","init","$navbar","offset","top","mdbTreeview","off","toggleClass","treeviewToggle","$elements","$closed","hide","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","visibility","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","scrollTop","pageYOffset","clientTop","round","_value","fill","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nativeKeys","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toPositiveInteger","BYTES","factory","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","label","parentNode","querySelector","innerHTML","findFirstChildNode","childNodes","node","nodeType","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","files","file","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","querySelectorAll","Event","formSelector","customFileInputList","formList","_i","_len","destroy","form","removeEventListener","_i2","_len2","define","Chart","require","u","Error","2","colorNames","getRgba","rgb","scale","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","toUpperCase","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","obj","hsl","hsv","cmyk","setValues","red","lightness","v","w","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","toJSON","clone","prop","spaces","maxes","getValues","space","capped","chans","sname","svalues","4","rgb2hsl","h","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","y","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","PI","sqrt","lab2rgb","lch2lab","lch","hr","cos","sin","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","5","conversions","Converter","func","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","defaults","Element","elements","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","register","initialize","Legend","legend","_element","Title","title","pluginService","PluginBase","extend","canvasHelpers","canvas","layoutService","8","Bar","context","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","hover","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","axis","rectangle","borderSkipped","tooltips","callbacks","item","yLabel","labels","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","update","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","backgroundColor","valueAtIndexOrDefault","borderColor","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","last","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","prev","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","hidden","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","opts","availableWidth","availableHeight","bottom","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","tension","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","requestAnimFrame","startDigest","startTime","now","framesToDrop","advance","endTime","callback","24","updateConfig","newOptions","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","instances","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","notify","retinaScale","devicePixelRatio","bindEvents","responsive","initToolTip","clear","stop","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","effects","stepDecimal","easingValue","transition","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","listener","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","active","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","26","scope","27","color","configuration","_view","ease","actual","origin","c0","c1","isFinite","interpolate","tooltipPosition","isNumber","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","deltaX","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","evt","mouseX","mouseY","originalEvent","srcElement","boundingRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","padding","parentDimension","parent","host","clientWidth","cw","clientHeight","currentStyle","getPropertyValue","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","deltaY","indexMode","nearest","ret","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","hook","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","minor","major","_ticks","beforeUpdate","maxWidth","maxHeight","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","translate","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","linear","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","existingModel","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","rect","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","clip","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","45","matches","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","createEvent","nativeEvent","addResizeListener","ticking","expando","resizer","cls","cssText","className","expand","shrink","_reset","scrollLeft","onScroll","createResizer","renderProxy","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","_enabled","keyframes","_style","setAttribute","getElementsByTagName","createTextNode","getElementById","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","format","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","diff","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","formats","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","innerWidth","displayFormat","$findIndex","screen","deviceXDPI","logicalXDPI","utils","toTextLines","unshift","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dx","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","borderRadius","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","frame","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","contains","margin","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","dispatchEvent","$context","$groups","_key","_dirty","handleMoveEvents","enter","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","override","configs","afterDatasetsDraw","beforeEvent","handlers","click","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","attribute","$modal_dialog","def","swing","Velocity","isWindow","isPlainObject","uuid","removeData","queue","dequeue","pageXOffset","clientLeft","nodeName","marginTop","marginLeft","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","isAnimating","Lists","transforms3D","Values","complete","tweensContainer","documentMode","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","mock","patch","debug","friction","dv","spring","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","backgroundPosition","transformOrigin","perspectiveOrigin","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","hexToRgb","Names","camelCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","offsetHeight","offsetWidth","getBBox","direction","scrollTo","alternateValue","skewX","skewY","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","remToPx","vwToPx","vhToPx","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","rejecter","clearTimeout","backwards","stagger","drag","velocity","marginBottom","overflow","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$includes","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","Waves","$$","isTouchAvailable","getWavesElements","nodes","stringRepr","elem","docElem","win","doc","ownerDocument","getWindow","convertStyle","styleObj","Effect","show","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","TagWrapper","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","parentElement","getWavesEffectElement","disabled","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","classes","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","ready"],"mappings":"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","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 146);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = false;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = require('../internals/global');\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","module.exports = {};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\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\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","jQuery(($) => {\r\n\r\n class Forms {\r\n\r\n constructor() {\r\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md']\r\n .map((selector) => `input[type=${selector}]`)\r\n .join(', ')}, textarea`;\r\n this.textAreaSelector = '.materialize-textarea';\r\n this.$text = $('.md-textarea-auto');\r\n this.$body = $('body');\r\n this.$document = $(document);\r\n }\r\n\r\n init() {\r\n\r\n if (this.$text.length) {\r\n let observe;\r\n \r\n if (window.attachEvent) {\r\n observe = function (element, event, handler) {\r\n element.attachEvent(`on${event}`, handler);\r\n };\r\n } else {\r\n observe = function (element, event, handler) {\r\n element.addEventListener(event, handler, false);\r\n };\r\n }\r\n \r\n this.$text.each(function () {\r\n const self = this;\r\n \r\n function resize() {\r\n self.style.height = 'auto';\r\n self.style.height = `${self.scrollHeight}px`;\r\n }\r\n \r\n function delayedResize() {\r\n window.setTimeout(resize, 0);\r\n }\r\n \r\n observe(self, 'change', resize);\r\n observe(self, 'cut', delayedResize);\r\n observe(self, 'paste', delayedResize);\r\n observe(self, 'drop', delayedResize);\r\n observe(self, 'keydown', delayedResize);\r\n \r\n resize();\r\n });\r\n }\r\n\r\n $(this.inputSelector).each((index, input) => {\r\n const $this = $(input);\r\n const isNotValid = input.validity.badInput;\r\n this.updateTextFields($this);\r\n\r\n if (isNotValid) {\r\n this.toggleActiveClass($this, 'add');\r\n }\r\n });\r\n \r\n this.addOnFocusEvent();\r\n this.addOnBlurEvent();\r\n this.addOnChangeEvent();\r\n this.addOnResetEvent();\r\n this.appendHiddenDiv();\r\n this.ChangeDateInputType();\r\n this.makeActiveAutofocus();\r\n\r\n $(this.textAreaSelector).each(this.textAreaAutoResize);\r\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\r\n }\r\n\r\n makeActiveAutofocus() {\r\n\r\n this.toggleActiveClass($('input[autofocus]'), 'add');\r\n }\r\n\r\n toggleActiveClass($this, action) {\r\n action = `${action}Class`;\r\n $this.siblings('label, i, .input-prefix')[action]('active');\r\n }\r\n\r\n addOnFocusEvent() {\r\n this.$document.on('focus', this.inputSelector, (e) => {\r\n this.toggleActiveClass($(e.target), 'add');\r\n });\r\n }\r\n\r\n addOnBlurEvent() {\r\n this.$document.on('blur', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n const noValue = !$this.val();\r\n const isValid = !e.target.validity.badInput;\r\n const noPlaceholder = $this.attr('placeholder') === undefined;\r\n \r\n if (noValue && isValid && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n } \r\n\r\n if (!noValue && isValid && noPlaceholder) {\r\n $this.siblings('i, .input-prefix').removeClass('active');\r\n }\r\n\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnChangeEvent() {\r\n this.$document.on('change', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n \r\n this.updateTextFields($this);\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnResetEvent() {\r\n this.$document.on('reset', (e) => {\r\n const $formReset = $(e.target);\r\n \r\n if ($formReset.is('form')) {\r\n const $formInputs = $formReset.find(this.inputSelector);\r\n \r\n $formInputs\r\n .removeClass('valid invalid')\r\n .each((index, input) => {\r\n const $this = $(input);\r\n const noDefaultValue = !$this.val();\r\n const noPlaceholder = !$this.attr('placeholder');\r\n \r\n if (noDefaultValue && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n });\r\n \r\n $formReset.find('select.initialized').each((index, select) => {\r\n const $select = $(select);\r\n const $visibleInput = $select.siblings('input.select-dropdown');\r\n const defaultValue = $select.children('[selected]').val();\r\n \r\n $select.val(defaultValue);\r\n $visibleInput.val(defaultValue);\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendHiddenDiv() {\r\n if (!$('.hiddendiv').first().length) {\r\n const $hiddenDiv = $('
');\r\n this.$body.append($hiddenDiv);\r\n }\r\n }\r\n\r\n updateTextFields($input) {\r\n\r\n const hasValue = Boolean($input.val().length);\r\n const hasPlaceholder = Boolean($input.attr('placeholder'));\r\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\r\n \r\n this.toggleActiveClass($input, addOrRemove);\r\n }\r\n\r\n validateField($input) {\r\n if ($input.hasClass('validate')) {\r\n const value = $input.val();\r\n const noValue = !value.length;\r\n const isValid = !$input[0].validity.badInput;\r\n \r\n if (noValue && isValid) {\r\n $input.removeClass('valid').removeClass('invalid');\r\n } else {\r\n const valid = $input[0].validity.valid;\r\n const length = Number($input.attr('length')) || 0;\r\n \r\n if (valid && (!length || length > value.length)) {\r\n $input.removeClass('invalid').addClass('valid');\r\n } else {\r\n $input.removeClass('valid').addClass('invalid');\r\n }\r\n }\r\n }\r\n }\r\n\r\n ChangeDateInputType() {\r\n const $dateInputs = $('input[type=\"date\"]');\r\n \r\n $dateInputs.each((index, $item) => {\r\n $item.type = 'text';\r\n });\r\n \r\n $dateInputs.on('focus', $item => {\r\n $item.target.type = 'date';\r\n });\r\n \r\n $dateInputs.on('blur', $item => {\r\n $item.target.type = 'text';\r\n if($item.target.value.length === 0) {\r\n $(`label[for=${$item.target.id}]`).removeClass('active');\r\n }\r\n }); \r\n }\r\n \r\n textAreaAutoResize() {\r\n const $textarea = $(this);\r\n \r\n if ($textarea.val().length) {\r\n const $hiddenDiv = $('.hiddendiv');\r\n const fontFamily = $textarea.css('font-family');\r\n const fontSize = $textarea.css('font-size');\r\n \r\n if (fontSize) {\r\n $hiddenDiv.css('font-size', fontSize);\r\n }\r\n \r\n if (fontFamily) {\r\n $hiddenDiv.css('font-family', fontFamily);\r\n }\r\n \r\n if ($textarea.attr('wrap') === 'off') {\r\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\r\n }\r\n \r\n $hiddenDiv.text(`${$textarea.val()}\\n`);\r\n const content = $hiddenDiv.html().replace(/\\n/g, '
');\r\n $hiddenDiv.html(content);\r\n \r\n // When textarea is hidden, width goes crazy.\r\n // Approximate with half of window size\r\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\r\n $textarea.css('height', $hiddenDiv.height());\r\n }\r\n } \r\n }\r\n\r\n //auto init Forms\r\n const forms = new Forms();\r\n forms.init();\r\n\r\n});\r\n","jQuery(function ($) {\r\n\r\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\r\n\r\n $(window).on('scroll', () => {\r\n\r\n const $navbar = $('.navbar');\r\n \r\n if (!$navbar.length) return;\r\n\r\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\r\n });\r\n});\r\n","jQuery(($) => {\r\n $.fn.mdbTreeview = function () {\r\n\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('treeview')) {\r\n treeviewToggle($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-animated')) {\r\n treeviewAnimated($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-colorful')) {\r\n treeviewColorful($this);\r\n }\r\n };\r\n\r\n function treeviewToggle($this) {\r\n const $toggler = $this.find('.rotate');\r\n\r\n $toggler.each(function () {\r\n const $this = $(this);\r\n\r\n $this.off('click');\r\n $this.on('click', function () {\r\n const $this = $(this);\r\n\r\n $this.siblings('.nested').toggleClass('active');\r\n $this.toggleClass('down');\r\n });\r\n });\r\n }\r\n\r\n function treeviewAnimated($this) {\r\n const $elements = $this.find('.treeview-animated-element');\r\n const $closed = $this.find('.closed');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $closed.off('click');\r\n $closed.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointer = $this.children('.fa-angle-right');\r\n\r\n $this.toggleClass('open');\r\n $pointer.toggleClass('down');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $this.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n\r\n function treeviewColorful($this) {\r\n const $elements = $this.find('.treeview-colorful-element');\r\n const $header = $this.find('.treeview-colorful-items-header');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $header.off('click');\r\n $header.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointerPlus = $this.children('.fa-plus-circle');\r\n const $pointerMinus = $this.children('.fa-minus-circle');\r\n\r\n $this.toggleClass('open');\r\n $pointerPlus.removeClass('fa-plus-circle');\r\n $pointerPlus.addClass('fa-minus-circle');\r\n $pointerMinus.removeClass('fa-minus-circle');\r\n $pointerMinus.addClass('fa-plus-circle');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $elements.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n});\r\n","jQuery($ => {\r\n\r\n class WOW {\r\n init() {\r\n $('.wow').wow();\r\n }\r\n }\r\n\r\n class MDBWow {\r\n constructor($wowElement, customization) {\r\n this.$wowElement = $wowElement;\r\n this.customization = customization;\r\n this.animated = true;\r\n this.options = this.assignElementCustomization();\r\n }\r\n\r\n init() {\r\n $(window).scroll(() => {\r\n if (this.animated) {\r\n this.hide();\r\n } else {\r\n this.mdbWow();\r\n }\r\n });\r\n\r\n this.appear();\r\n }\r\n\r\n assignElementCustomization() {\r\n return {\r\n animationName: this.$wowElement.css('animation-name'),\r\n offset: 100,\r\n iteration: this.fallback()\r\n .or(this.$wowElement.data('wow-iteration'))\r\n .or(1)\r\n .value(),\r\n duration: this.fallback()\r\n .or(this.$wowElement.data('wow-duration'))\r\n .or(1000)\r\n .value(),\r\n delay: this.fallback()\r\n .or(this.$wowElement.data('wow-delay'))\r\n .or(0)\r\n .value()\r\n };\r\n }\r\n\r\n mdbWow() {\r\n if (this.$wowElement.css('visibility') === 'visible') {\r\n return;\r\n }\r\n\r\n if (this.shouldElementBeVisible(true)) {\r\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\r\n this.appear();\r\n }\r\n }\r\n\r\n appear() {\r\n this.$wowElement.addClass('animated');\r\n this.$wowElement.css({\r\n visibility: 'visible',\r\n 'animation-name': this.options.animationName,\r\n 'animation-iteration-count': this.options.iteration,\r\n 'animation-duration': this.options.duration,\r\n 'animation-delay': this.options.delay\r\n });\r\n }\r\n\r\n hide() {\r\n if (this.shouldElementBeVisible(false)) {\r\n this.$wowElement.removeClass('animated');\r\n this.$wowElement.css({\r\n 'animation-name': 'none',\r\n visibility: 'hidden'\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.$wowElement.removeClass('animated');\r\n }, this.countRemoveTime());\r\n }\r\n this.mdbWow();\r\n this.animated = !this.animated;\r\n }\r\n\r\n shouldElementBeVisible(state) {\r\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\r\n const thisElementHeight = this.$wowElement.height();\r\n const documentHeight = $(document).height();\r\n const windowHeight = window.innerHeight;\r\n const scroll = window.scrollY;\r\n\r\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\r\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\r\n const isScrolledToTop = scroll < thisElementOffset;\r\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\r\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\r\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\r\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\r\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\r\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\r\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\r\n\r\n let returnLogic = false;\r\n\r\n if (state) {\r\n returnLogic = isElementTopVisible && isScrolledToTop ||\r\n isElementBottomVisible && isScrolledToBottom ||\r\n isDocumentHeightEqual && isOffsetHigherThanDocument;\r\n } else {\r\n returnLogic = isElementTopVisible && isScrolledOverTop ||\r\n isElementBottomHidden && isNotScrolledToTop ||\r\n isScrolledOverElement;\r\n }\r\n return returnLogic;\r\n }\r\n\r\n countRemoveTime() {\r\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\r\n let removeTime = 0;\r\n\r\n if (this.options.duration) {\r\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\r\n }\r\n if (this.options.delay) {\r\n removeTime += this.checkOptionsStringFormat(this.options.delay);\r\n }\r\n return removeTime;\r\n }\r\n\r\n checkOptionsStringFormat(element) {\r\n let valueToReturn;\r\n\r\n if (element.toString().slice(-1) === 's') {\r\n valueToReturn = element.toString().slice(0, -1);\r\n } else if (!isNaN(element.toString().slice(-1))) {\r\n valueToReturn = element;\r\n } else {\r\n return console.log('Not supported animation customization format.');\r\n }\r\n\r\n return valueToReturn;\r\n }\r\n\r\n getOffset(element) {\r\n const box = element.getBoundingClientRect();\r\n const body = document.body;\r\n const docEl = document.documentElement;\r\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n const clientTop = docEl.clientTop || body.clientTop || 0;\r\n const top = box.top + scrollTop - clientTop;\r\n\r\n return Math.round(top);\r\n }\r\n\r\n fallback() {\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.wow = function (options) {\r\n this.each(function () {\r\n const mdbWow = new MDBWow($(this), options);\r\n mdbWow.init();\r\n });\r\n };\r\n\r\n window.WOW = WOW;\r\n\r\n});\r\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","// JS VENDOR FREE\r\nimport './vendor/free/bs-custom-file-input'\r\nimport './vendor/free/chart'\r\nimport './vendor/free/chartjs-datalabels'\r\nimport './vendor/free/enhanced-modals'\r\nimport './vendor/free/jquery.easing'\r\nimport './vendor/free/velocity'\r\nimport './vendor/free/waves'\r\n\r\n// JS FREE\r\nimport './free/forms-free'\r\nimport './free/scrolling-navbar'\r\nimport './free/treeview'\r\nimport './free/wow'\r\n","/*!\r\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\r\n */\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.bsCustomFileInput = factory());\r\n}(this, function () {\r\n 'use strict';\r\n\r\n var Selector = {\r\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\r\n CUSTOMFILELABEL: '.custom-file-label',\r\n FORM: 'form',\r\n INPUT: 'input'\r\n };\r\n\r\n var textNodeType = 3;\r\n\r\n var getDefaultText = function getDefaultText(input) {\r\n var defaultText = '';\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n defaultText = label.innerHTML;\r\n }\r\n\r\n return defaultText;\r\n };\r\n\r\n var findFirstChildNode = function findFirstChildNode(element) {\r\n if (element.childNodes.length > 0) {\r\n var childNodes = [].slice.call(element.childNodes);\r\n\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var node = childNodes[i];\r\n\r\n if (node.nodeType !== textNodeType) {\r\n return node;\r\n }\r\n }\r\n }\r\n\r\n return element;\r\n };\r\n\r\n var restoreDefaultText = function restoreDefaultText(input) {\r\n var defaultText = input.bsCustomFileInput.defaultText;\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n element.innerHTML = defaultText;\r\n }\r\n };\r\n\r\n var fileApi = !!window.File;\r\n var FAKE_PATH = 'fakepath';\r\n var FAKE_PATH_SEPARATOR = '\\\\';\r\n\r\n var getSelectedFiles = function getSelectedFiles(input) {\r\n if (input.hasAttribute('multiple') && fileApi) {\r\n return [].slice.call(input.files).map(function (file) {\r\n return file.name;\r\n }).join(', ');\r\n }\r\n\r\n if (input.value.indexOf(FAKE_PATH) !== -1) {\r\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\r\n return splittedValue[splittedValue.length - 1];\r\n }\r\n\r\n return input.value;\r\n };\r\n\r\n function handleInputChange() {\r\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n var inputValue = getSelectedFiles(this);\r\n\r\n if (inputValue.length) {\r\n element.innerHTML = inputValue;\r\n } else {\r\n restoreDefaultText(this);\r\n }\r\n }\r\n }\r\n\r\n function handleFormReset() {\r\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileList.length; i < len; i++) {\r\n restoreDefaultText(customFileList[i]);\r\n }\r\n }\r\n\r\n var customProperty = 'bsCustomFileInput';\r\n var Event = {\r\n FORMRESET: 'reset',\r\n INPUTCHANGE: 'change'\r\n };\r\n var bsCustomFileInput = {\r\n init: function init(inputSelector, formSelector) {\r\n if (inputSelector === void 0) {\r\n inputSelector = Selector.CUSTOMFILE;\r\n }\r\n\r\n if (formSelector === void 0) {\r\n formSelector = Selector.FORM;\r\n }\r\n\r\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\r\n var formList = [].slice.call(document.querySelectorAll(formSelector));\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n Object.defineProperty(input, customProperty, {\r\n value: {\r\n defaultText: getDefaultText(input)\r\n },\r\n writable: true\r\n });\r\n handleInputChange.call(input);\r\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\r\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n Object.defineProperty(formList[_i], customProperty, {\r\n value: true,\r\n writable: true\r\n });\r\n }\r\n },\r\n destroy: function destroy() {\r\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\r\n return !!form.bsCustomFileInput;\r\n });\r\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n restoreDefaultText(input);\r\n input[customProperty] = undefined;\r\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\r\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n formList[_i2][customProperty] = undefined;\r\n }\r\n }\r\n };\r\n\r\n return bsCustomFileInput;\r\n\r\n}));\r\n//# sourceMappingURL=bs-custom-file-input.js.map\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n bsCustomFileInput.init()\r\n});\r\n","/*!\r\n * Chart.js\r\n * http://chartjs.org/\r\n * Version: 2.7.3\r\n *\r\n * Copyright 2018 Chart.js Contributors\r\n * Released under the MIT license\r\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\r\n */\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\r\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\r\n\t\t}\r\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\r\n\t},\r\n\r\n\tlevel: function (color2) {\r\n\t\tvar contrastRatio = this.contrast(color2);\r\n\t\tif (contrastRatio >= 7.1) {\r\n\t\t\treturn 'AAA';\r\n\t\t}\r\n\r\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\r\n\t},\r\n\r\n\tdark: function () {\r\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\r\n\t\tvar rgb = this.values.rgb;\r\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\r\n\t\treturn yiq < 128;\r\n\t},\r\n\r\n\tlight: function () {\r\n\t\treturn !this.dark();\r\n\t},\r\n\r\n\tnegate: function () {\r\n\t\tvar rgb = [];\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\trgb[i] = 255 - this.values.rgb[i];\r\n\t\t}\r\n\t\tthis.setValues('rgb', rgb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tlighten: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] += hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdarken: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] -= hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] += hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdesaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] -= hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\twhiten: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[1] += hwb[1] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tblacken: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[2] += hwb[2] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgreyscale: function () {\r\n\t\tvar rgb = this.values.rgb;\r\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\r\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\r\n\t\tthis.setValues('rgb', [val, val, val]);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclearer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\topaquer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\trotate: function (degrees) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\tvar hue = (hsl[0] + degrees) % 360;\r\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/**\r\n\t * Ported from sass implementation in C\r\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\r\n\t */\r\n\tmix: function (mixinColor, weight) {\r\n\t\tvar color1 = this;\r\n\t\tvar color2 = mixinColor;\r\n\t\tvar p = weight === undefined ? 0.5 : weight;\r\n\r\n\t\tvar w = 2 * p - 1;\r\n\t\tvar a = color1.alpha() - color2.alpha();\r\n\r\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\r\n\t\tvar w2 = 1 - w1;\r\n\r\n\t\treturn this\r\n\t\t\t.rgb(\r\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\r\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\r\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\r\n\t\t\t)\r\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\t\treturn this.rgb();\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\r\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\r\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\r\n\t\t// except 'alpha' which is a number.\r\n\t\tvar result = new Color();\r\n\t\tvar source = this.values;\r\n\t\tvar target = result.values;\r\n\t\tvar value, type;\r\n\r\n\t\tfor (var prop in source) {\r\n\t\t\tif (source.hasOwnProperty(prop)) {\r\n\t\t\t\tvalue = source[prop];\r\n\t\t\t\ttype = ({}).toString.call(value);\r\n\t\t\t\tif (type === '[object Array]') {\r\n\t\t\t\t\ttarget[prop] = value.slice(0);\r\n\t\t\t\t} else if (type === '[object Number]') {\r\n\t\t\t\t\ttarget[prop] = value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error('unexpected color value:', value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nColor.prototype.spaces = {\r\n\trgb: ['red', 'green', 'blue'],\r\n\thsl: ['hue', 'saturation', 'lightness'],\r\n\thsv: ['hue', 'saturation', 'value'],\r\n\thwb: ['hue', 'whiteness', 'blackness'],\r\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\r\n};\r\n\r\nColor.prototype.maxes = {\r\n\trgb: [255, 255, 255],\r\n\thsl: [360, 100, 100],\r\n\thsv: [360, 100, 100],\r\n\thwb: [360, 100, 100],\r\n\tcmyk: [100, 100, 100, 100]\r\n};\r\n\r\nColor.prototype.getValues = function (space) {\r\n\tvar values = this.values;\r\n\tvar vals = {};\r\n\r\n\tfor (var i = 0; i < space.length; i++) {\r\n\t\tvals[space.charAt(i)] = values[space][i];\r\n\t}\r\n\r\n\tif (values.alpha !== 1) {\r\n\t\tvals.a = values.alpha;\r\n\t}\r\n\r\n\t// {r: 255, g: 255, b: 255, a: 0.4}\r\n\treturn vals;\r\n};\r\n\r\nColor.prototype.setValues = function (space, vals) {\r\n\tvar values = this.values;\r\n\tvar spaces = this.spaces;\r\n\tvar maxes = this.maxes;\r\n\tvar alpha = 1;\r\n\tvar i;\r\n\r\n\tthis.valid = true;\r\n\r\n\tif (space === 'alpha') {\r\n\t\talpha = vals;\r\n\t} else if (vals.length) {\r\n\t\t// [10, 10, 10]\r\n\t\tvalues[space] = vals.slice(0, space.length);\r\n\t\talpha = vals[space.length];\r\n\t} else if (vals[space.charAt(0)] !== undefined) {\r\n\t\t// {r: 10, g: 10, b: 10}\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\r\n\t\t}\r\n\r\n\t\talpha = vals.a;\r\n\t} else if (vals[spaces[space][0]] !== undefined) {\r\n\t\t// {red: 10, green: 10, blue: 10}\r\n\t\tvar chans = spaces[space];\r\n\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[chans[i]];\r\n\t\t}\r\n\r\n\t\talpha = vals.alpha;\r\n\t}\r\n\r\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\r\n\r\n\tif (space === 'alpha') {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar capped;\r\n\r\n\t// cap values of the space prior converting all values\r\n\tfor (i = 0; i < space.length; i++) {\r\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\r\n\t\tvalues[space][i] = Math.round(capped);\r\n\t}\r\n\r\n\t// convert to all the other color spaces\r\n\tfor (var sname in spaces) {\r\n\t\tif (sname !== space) {\r\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nColor.prototype.setSpace = function (space, args) {\r\n\tvar vals = args[0];\r\n\r\n\tif (vals === undefined) {\r\n\t\t// color.rgb()\r\n\t\treturn this.getValues(space);\r\n\t}\r\n\r\n\t// color.rgb(10, 10, 10)\r\n\tif (typeof vals === 'number') {\r\n\t\tvals = Array.prototype.slice.call(args);\r\n\t}\r\n\r\n\tthis.setValues(space, vals);\r\n\treturn this;\r\n};\r\n\r\nColor.prototype.setChannel = function (space, index, val) {\r\n\tvar svalues = this.values[space];\r\n\tif (val === undefined) {\r\n\t\t// color.red()\r\n\t\treturn svalues[index];\r\n\t} else if (val === svalues[index]) {\r\n\t\t// color.red(color.red())\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// color.red(100)\r\n\tsvalues[index] = val;\r\n\tthis.setValues(space, svalues);\r\n\r\n\treturn this;\r\n};\r\n\r\nif (typeof window !== 'undefined') {\r\n\twindow.Color = Color;\r\n}\r\n\r\nmodule.exports = Color;\r\n\r\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\r\n/* MIT license */\r\n\r\nmodule.exports = {\r\n rgb2hsl: rgb2hsl,\r\n rgb2hsv: rgb2hsv,\r\n rgb2hwb: rgb2hwb,\r\n rgb2cmyk: rgb2cmyk,\r\n rgb2keyword: rgb2keyword,\r\n rgb2xyz: rgb2xyz,\r\n rgb2lab: rgb2lab,\r\n rgb2lch: rgb2lch,\r\n\r\n hsl2rgb: hsl2rgb,\r\n hsl2hsv: hsl2hsv,\r\n hsl2hwb: hsl2hwb,\r\n hsl2cmyk: hsl2cmyk,\r\n hsl2keyword: hsl2keyword,\r\n\r\n hsv2rgb: hsv2rgb,\r\n hsv2hsl: hsv2hsl,\r\n hsv2hwb: hsv2hwb,\r\n hsv2cmyk: hsv2cmyk,\r\n hsv2keyword: hsv2keyword,\r\n\r\n hwb2rgb: hwb2rgb,\r\n hwb2hsl: hwb2hsl,\r\n hwb2hsv: hwb2hsv,\r\n hwb2cmyk: hwb2cmyk,\r\n hwb2keyword: hwb2keyword,\r\n\r\n cmyk2rgb: cmyk2rgb,\r\n cmyk2hsl: cmyk2hsl,\r\n cmyk2hsv: cmyk2hsv,\r\n cmyk2hwb: cmyk2hwb,\r\n cmyk2keyword: cmyk2keyword,\r\n\r\n keyword2rgb: keyword2rgb,\r\n keyword2hsl: keyword2hsl,\r\n keyword2hsv: keyword2hsv,\r\n keyword2hwb: keyword2hwb,\r\n keyword2cmyk: keyword2cmyk,\r\n keyword2lab: keyword2lab,\r\n keyword2xyz: keyword2xyz,\r\n\r\n xyz2rgb: xyz2rgb,\r\n xyz2lab: xyz2lab,\r\n xyz2lch: xyz2lch,\r\n\r\n lab2xyz: lab2xyz,\r\n lab2rgb: lab2rgb,\r\n lab2lch: lab2lch,\r\n\r\n lch2lab: lch2lab,\r\n lch2xyz: lch2xyz,\r\n lch2rgb: lch2rgb\r\n}\r\n\r\n\r\nfunction rgb2hsl(rgb) {\r\n var r = rgb[0]/255,\r\n g = rgb[1]/255,\r\n b = rgb[2]/255,\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, l;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g)/ delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n l = (min + max) / 2;\r\n\r\n if (max == min)\r\n s = 0;\r\n else if (l <= 0.5)\r\n s = delta / (max + min);\r\n else\r\n s = delta / (2 - max - min);\r\n\r\n return [h, s * 100, l * 100];\r\n}\r\n\r\nfunction rgb2hsv(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, v;\r\n\r\n if (max == 0)\r\n s = 0;\r\n else\r\n s = (delta/max * 1000)/10;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g) / delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n v = ((max / 255) * 1000) / 10;\r\n\r\n return [h, s, v];\r\n}\r\n\r\nfunction rgb2hwb(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n h = rgb2hsl(rgb)[0],\r\n w = 1/255 * Math.min(r, Math.min(g, b)),\r\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\r\n\r\n return [h, w * 100, b * 100];\r\n}\r\n\r\nfunction rgb2cmyk(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255,\r\n c, m, y, k;\r\n\r\n k = Math.min(1 - r, 1 - g, 1 - b);\r\n c = (1 - r - k) / (1 - k) || 0;\r\n m = (1 - g - k) / (1 - k) || 0;\r\n y = (1 - b - k) / (1 - k) || 0;\r\n return [c * 100, m * 100, y * 100, k * 100];\r\n}\r\n\r\nfunction rgb2keyword(rgb) {\r\n return reverseKeywords[JSON.stringify(rgb)];\r\n}\r\n\r\nfunction rgb2xyz(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255;\r\n\r\n // assume sRGB\r\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\r\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\r\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\r\n\r\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\r\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\r\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\r\n\r\n return [x * 100, y *100, z * 100];\r\n}\r\n\r\nfunction rgb2lab(rgb) {\r\n var xyz = rgb2xyz(rgb),\r\n x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction rgb2lch(args) {\r\n return lab2lch(rgb2lab(args));\r\n}\r\n\r\nfunction hsl2rgb(hsl) {\r\n var h = hsl[0] / 360,\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n t1, t2, t3, rgb, val;\r\n\r\n if (s == 0) {\r\n val = l * 255;\r\n return [val, val, val];\r\n }\r\n\r\n if (l < 0.5)\r\n t2 = l * (1 + s);\r\n else\r\n t2 = l + s - l * s;\r\n t1 = 2 * l - t2;\r\n\r\n rgb = [0, 0, 0];\r\n for (var i = 0; i < 3; i++) {\r\n t3 = h + 1 / 3 * - (i - 1);\r\n t3 < 0 && t3++;\r\n t3 > 1 && t3--;\r\n\r\n if (6 * t3 < 1)\r\n val = t1 + (t2 - t1) * 6 * t3;\r\n else if (2 * t3 < 1)\r\n val = t2;\r\n else if (3 * t3 < 2)\r\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\r\n else\r\n val = t1;\r\n\r\n rgb[i] = val * 255;\r\n }\r\n\r\n return rgb;\r\n}\r\n\r\nfunction hsl2hsv(hsl) {\r\n var h = hsl[0],\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n sv, v;\r\n\r\n if(l === 0) {\r\n // no need to do calc on black\r\n // also avoids divide by 0 error\r\n return [0, 0, 0];\r\n }\r\n\r\n l *= 2;\r\n s *= (l <= 1) ? l : 2 - l;\r\n v = (l + s) / 2;\r\n sv = (2 * s) / (l + s);\r\n return [h, sv * 100, v * 100];\r\n}\r\n\r\nfunction hsl2hwb(args) {\r\n return rgb2hwb(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2cmyk(args) {\r\n return rgb2cmyk(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2keyword(args) {\r\n return rgb2keyword(hsl2rgb(args));\r\n}\r\n\r\n\r\nfunction hsv2rgb(hsv) {\r\n var h = hsv[0] / 60,\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n hi = Math.floor(h) % 6;\r\n\r\n var f = h - Math.floor(h),\r\n p = 255 * v * (1 - s),\r\n q = 255 * v * (1 - (s * f)),\r\n t = 255 * v * (1 - (s * (1 - f))),\r\n v = 255 * v;\r\n\r\n switch(hi) {\r\n case 0:\r\n return [v, t, p];\r\n case 1:\r\n return [q, v, p];\r\n case 2:\r\n return [p, v, t];\r\n case 3:\r\n return [p, q, v];\r\n case 4:\r\n return [t, p, v];\r\n case 5:\r\n return [v, p, q];\r\n }\r\n}\r\n\r\nfunction hsv2hsl(hsv) {\r\n var h = hsv[0],\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n sl, l;\r\n\r\n l = (2 - s) * v;\r\n sl = s * v;\r\n sl /= (l <= 1) ? l : 2 - l;\r\n sl = sl || 0;\r\n l /= 2;\r\n return [h, sl * 100, l * 100];\r\n}\r\n\r\nfunction hsv2hwb(args) {\r\n return rgb2hwb(hsv2rgb(args))\r\n}\r\n\r\nfunction hsv2cmyk(args) {\r\n return rgb2cmyk(hsv2rgb(args));\r\n}\r\n\r\nfunction hsv2keyword(args) {\r\n return rgb2keyword(hsv2rgb(args));\r\n}\r\n\r\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\r\nfunction hwb2rgb(hwb) {\r\n var h = hwb[0] / 360,\r\n wh = hwb[1] / 100,\r\n bl = hwb[2] / 100,\r\n ratio = wh + bl,\r\n i, v, f, n;\r\n\r\n // wh + bl cant be > 1\r\n if (ratio > 1) {\r\n wh /= ratio;\r\n bl /= ratio;\r\n }\r\n\r\n i = Math.floor(6 * h);\r\n v = 1 - bl;\r\n f = 6 * h - i;\r\n if ((i & 0x01) != 0) {\r\n f = 1 - f;\r\n }\r\n n = wh + f * (v - wh); // linear interpolation\r\n\r\n switch (i) {\r\n default:\r\n case 6:\r\n case 0: r = v; g = n; b = wh; break;\r\n case 1: r = n; g = v; b = wh; break;\r\n case 2: r = wh; g = v; b = n; break;\r\n case 3: r = wh; g = n; b = v; break;\r\n case 4: r = n; g = wh; b = v; break;\r\n case 5: r = v; g = wh; b = n; break;\r\n }\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction hwb2hsl(args) {\r\n return rgb2hsl(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2hsv(args) {\r\n return rgb2hsv(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2cmyk(args) {\r\n return rgb2cmyk(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2keyword(args) {\r\n return rgb2keyword(hwb2rgb(args));\r\n}\r\n\r\nfunction cmyk2rgb(cmyk) {\r\n var c = cmyk[0] / 100,\r\n m = cmyk[1] / 100,\r\n y = cmyk[2] / 100,\r\n k = cmyk[3] / 100,\r\n r, g, b;\r\n\r\n r = 1 - Math.min(1, c * (1 - k) + k);\r\n g = 1 - Math.min(1, m * (1 - k) + k);\r\n b = 1 - Math.min(1, y * (1 - k) + k);\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction cmyk2hsl(args) {\r\n return rgb2hsl(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hsv(args) {\r\n return rgb2hsv(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hwb(args) {\r\n return rgb2hwb(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2keyword(args) {\r\n return rgb2keyword(cmyk2rgb(args));\r\n}\r\n\r\n\r\nfunction xyz2rgb(xyz) {\r\n var x = xyz[0] / 100,\r\n y = xyz[1] / 100,\r\n z = xyz[2] / 100,\r\n r, g, b;\r\n\r\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\r\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\r\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\r\n\r\n // assume sRGB\r\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\r\n : r = (r * 12.92);\r\n\r\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\r\n : g = (g * 12.92);\r\n\r\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\r\n : b = (b * 12.92);\r\n\r\n r = Math.min(Math.max(0, r), 1);\r\n g = Math.min(Math.max(0, g), 1);\r\n b = Math.min(Math.max(0, b), 1);\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction xyz2lab(xyz) {\r\n var x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction xyz2lch(args) {\r\n return lab2lch(xyz2lab(args));\r\n}\r\n\r\nfunction lab2xyz(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n x, y, z, y2;\r\n\r\n if (l <= 8) {\r\n y = (l * 100) / 903.3;\r\n y2 = (7.787 * (y / 100)) + (16 / 116);\r\n } else {\r\n y = 100 * Math.pow((l + 16) / 116, 3);\r\n y2 = Math.pow(y / 100, 1/3);\r\n }\r\n\r\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);\r\n\r\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);\r\n\r\n return [x, y, z];\r\n}\r\n\r\nfunction lab2lch(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n hr, h, c;\r\n\r\n hr = Math.atan2(b, a);\r\n h = hr * 360 / 2 / Math.PI;\r\n if (h < 0) {\r\n h += 360;\r\n }\r\n c = Math.sqrt(a * a + b * b);\r\n return [l, c, h];\r\n}\r\n\r\nfunction lab2rgb(args) {\r\n return xyz2rgb(lab2xyz(args));\r\n}\r\n\r\nfunction lch2lab(lch) {\r\n var l = lch[0],\r\n c = lch[1],\r\n h = lch[2],\r\n a, b, hr;\r\n\r\n hr = h / 360 * 2 * Math.PI;\r\n a = c * Math.cos(hr);\r\n b = c * Math.sin(hr);\r\n return [l, a, b];\r\n}\r\n\r\nfunction lch2xyz(args) {\r\n return lab2xyz(lch2lab(args));\r\n}\r\n\r\nfunction lch2rgb(args) {\r\n return lab2rgb(lch2lab(args));\r\n}\r\n\r\nfunction keyword2rgb(keyword) {\r\n return cssKeywords[keyword];\r\n}\r\n\r\nfunction keyword2hsl(args) {\r\n return rgb2hsl(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hsv(args) {\r\n return rgb2hsv(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hwb(args) {\r\n return rgb2hwb(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2cmyk(args) {\r\n return rgb2cmyk(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2lab(args) {\r\n return rgb2lab(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2xyz(args) {\r\n return rgb2xyz(keyword2rgb(args));\r\n}\r\n\r\nvar cssKeywords = {\r\n aliceblue: [240,248,255],\r\n antiquewhite: [250,235,215],\r\n aqua: [0,255,255],\r\n aquamarine: [127,255,212],\r\n azure: [240,255,255],\r\n beige: [245,245,220],\r\n bisque: [255,228,196],\r\n black: [0,0,0],\r\n blanchedalmond: [255,235,205],\r\n blue: [0,0,255],\r\n blueviolet: [138,43,226],\r\n brown: [165,42,42],\r\n burlywood: [222,184,135],\r\n cadetblue: [95,158,160],\r\n chartreuse: [127,255,0],\r\n chocolate: [210,105,30],\r\n coral: [255,127,80],\r\n cornflowerblue: [100,149,237],\r\n cornsilk: [255,248,220],\r\n crimson: [220,20,60],\r\n cyan: [0,255,255],\r\n darkblue: [0,0,139],\r\n darkcyan: [0,139,139],\r\n darkgoldenrod: [184,134,11],\r\n darkgray: [169,169,169],\r\n darkgreen: [0,100,0],\r\n darkgrey: [169,169,169],\r\n darkkhaki: [189,183,107],\r\n darkmagenta: [139,0,139],\r\n darkolivegreen: [85,107,47],\r\n darkorange: [255,140,0],\r\n darkorchid: [153,50,204],\r\n darkred: [139,0,0],\r\n darksalmon: [233,150,122],\r\n darkseagreen: [143,188,143],\r\n darkslateblue: [72,61,139],\r\n darkslategray: [47,79,79],\r\n darkslategrey: [47,79,79],\r\n darkturquoise: [0,206,209],\r\n darkviolet: [148,0,211],\r\n deeppink: [255,20,147],\r\n deepskyblue: [0,191,255],\r\n dimgray: [105,105,105],\r\n dimgrey: [105,105,105],\r\n dodgerblue: [30,144,255],\r\n firebrick: [178,34,34],\r\n floralwhite: [255,250,240],\r\n forestgreen: [34,139,34],\r\n fuchsia: [255,0,255],\r\n gainsboro: [220,220,220],\r\n ghostwhite: [248,248,255],\r\n gold: [255,215,0],\r\n goldenrod: [218,165,32],\r\n gray: [128,128,128],\r\n green: [0,128,0],\r\n greenyellow: [173,255,47],\r\n grey: [128,128,128],\r\n honeydew: [240,255,240],\r\n hotpink: [255,105,180],\r\n indianred: [205,92,92],\r\n indigo: [75,0,130],\r\n ivory: [255,255,240],\r\n khaki: [240,230,140],\r\n lavender: [230,230,250],\r\n lavenderblush: [255,240,245],\r\n lawngreen: [124,252,0],\r\n lemonchiffon: [255,250,205],\r\n lightblue: [173,216,230],\r\n lightcoral: [240,128,128],\r\n lightcyan: [224,255,255],\r\n lightgoldenrodyellow: [250,250,210],\r\n lightgray: [211,211,211],\r\n lightgreen: [144,238,144],\r\n lightgrey: [211,211,211],\r\n lightpink: [255,182,193],\r\n lightsalmon: [255,160,122],\r\n lightseagreen: [32,178,170],\r\n lightskyblue: [135,206,250],\r\n lightslategray: [119,136,153],\r\n lightslategrey: [119,136,153],\r\n lightsteelblue: [176,196,222],\r\n lightyellow: [255,255,224],\r\n lime: [0,255,0],\r\n limegreen: [50,205,50],\r\n linen: [250,240,230],\r\n magenta: [255,0,255],\r\n maroon: [128,0,0],\r\n mediumaquamarine: [102,205,170],\r\n mediumblue: [0,0,205],\r\n mediumorchid: [186,85,211],\r\n mediumpurple: [147,112,219],\r\n mediumseagreen: [60,179,113],\r\n mediumslateblue: [123,104,238],\r\n mediumspringgreen: [0,250,154],\r\n mediumturquoise: [72,209,204],\r\n mediumvioletred: [199,21,133],\r\n midnightblue: [25,25,112],\r\n mintcream: [245,255,250],\r\n mistyrose: [255,228,225],\r\n moccasin: [255,228,181],\r\n navajowhite: [255,222,173],\r\n navy: [0,0,128],\r\n oldlace: [253,245,230],\r\n olive: [128,128,0],\r\n olivedrab: [107,142,35],\r\n orange: [255,165,0],\r\n orangered: [255,69,0],\r\n orchid: [218,112,214],\r\n palegoldenrod: [238,232,170],\r\n palegreen: [152,251,152],\r\n paleturquoise: [175,238,238],\r\n palevioletred: [219,112,147],\r\n papayawhip: [255,239,213],\r\n peachpuff: [255,218,185],\r\n peru: [205,133,63],\r\n pink: [255,192,203],\r\n plum: [221,160,221],\r\n powderblue: [176,224,230],\r\n purple: [128,0,128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255,0,0],\r\n rosybrown: [188,143,143],\r\n royalblue: [65,105,225],\r\n saddlebrown: [139,69,19],\r\n salmon: [250,128,114],\r\n sandybrown: [244,164,96],\r\n seagreen: [46,139,87],\r\n seashell: [255,245,238],\r\n sienna: [160,82,45],\r\n silver: [192,192,192],\r\n skyblue: [135,206,235],\r\n slateblue: [106,90,205],\r\n slategray: [112,128,144],\r\n slategrey: [112,128,144],\r\n snow: [255,250,250],\r\n springgreen: [0,255,127],\r\n steelblue: [70,130,180],\r\n tan: [210,180,140],\r\n teal: [0,128,128],\r\n thistle: [216,191,216],\r\n tomato: [255,99,71],\r\n turquoise: [64,224,208],\r\n violet: [238,130,238],\r\n wheat: [245,222,179],\r\n white: [255,255,255],\r\n whitesmoke: [245,245,245],\r\n yellow: [255,255,0],\r\n yellowgreen: [154,205,50]\r\n};\r\n\r\nvar reverseKeywords = {};\r\nfor (var key in cssKeywords) {\r\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\r\n}\r\n\r\n},{}],5:[function(require,module,exports){\r\nvar conversions = require(4);\r\n\r\nvar convert = function() {\r\n return new Converter();\r\n}\r\n\r\nfor (var func in conversions) {\r\n // export Raw versions\r\n convert[func + \"Raw\"] = (function(func) {\r\n // accept array or plain args\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n return conversions[func](arg);\r\n }\r\n })(func);\r\n\r\n var pair = /(\\w+)2(\\w+)/.exec(func),\r\n from = pair[1],\r\n to = pair[2];\r\n\r\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\r\n convert[from] = convert[from] || {};\r\n\r\n convert[from][to] = convert[func] = (function(func) {\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n\r\n var val = conversions[func](arg);\r\n if (typeof val == \"string\" || val === undefined)\r\n return val; // keyword\r\n\r\n for (var i = 0; i < val.length; i++)\r\n val[i] = Math.round(val[i]);\r\n return val;\r\n }\r\n })(func);\r\n}\r\n\r\n\r\n/* Converter does lazy conversion and caching */\r\nvar Converter = function() {\r\n this.convs = {};\r\n};\r\n\r\n/* Either get the values for a space or\r\n set the values for a space, depending on args */\r\nConverter.prototype.routeSpace = function(space, args) {\r\n var values = args[0];\r\n if (values === undefined) {\r\n // color.rgb()\r\n return this.getValues(space);\r\n }\r\n // color.rgb(10, 10, 10)\r\n if (typeof values == \"number\") {\r\n values = Array.prototype.slice.call(args);\r\n }\r\n\r\n return this.setValues(space, values);\r\n};\r\n\r\n/* Set the values for a space, invalidating cache */\r\nConverter.prototype.setValues = function(space, values) {\r\n this.space = space;\r\n this.convs = {};\r\n this.convs[space] = values;\r\n return this;\r\n};\r\n\r\n/* Get the values for a space. If there's already\r\n a conversion for the space, fetch it, otherwise\r\n compute it */\r\nConverter.prototype.getValues = function(space) {\r\n var vals = this.convs[space];\r\n if (!vals) {\r\n var fspace = this.space,\r\n from = this.convs[fspace];\r\n vals = convert[fspace][space](from);\r\n\r\n this.convs[space] = vals;\r\n }\r\n return vals;\r\n};\r\n\r\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\r\n Converter.prototype[space] = function(vals) {\r\n return this.routeSpace(space, arguments);\r\n }\r\n});\r\n\r\nmodule.exports = convert;\r\n},{\"4\":4}],6:[function(require,module,exports){\r\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\r\n},{}],7:[function(require,module,exports){\r\n/**\r\n * @namespace Chart\r\n */\r\nvar Chart = require(30)();\r\n\r\nChart.helpers = require(46);\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\nrequire(28)(Chart);\r\n\r\nChart.Animation = require(22);\r\nChart.animationService = require(23);\r\nChart.defaults = require(26);\r\nChart.Element = require(27);\r\nChart.elements = require(41);\r\nChart.Interaction = require(29);\r\nChart.layouts = require(31);\r\nChart.platform = require(49);\r\nChart.plugins = require(32);\r\nChart.Scale = require(33);\r\nChart.scaleService = require(34);\r\nChart.Ticks = require(35);\r\nChart.Tooltip = require(36);\r\n\r\nrequire(24)(Chart);\r\nrequire(25)(Chart);\r\n\r\nrequire(56)(Chart);\r\nrequire(54)(Chart);\r\nrequire(55)(Chart);\r\nrequire(57)(Chart);\r\nrequire(58)(Chart);\r\nrequire(59)(Chart);\r\n\r\n// Controllers must be loaded after elements\r\n// See Chart.core.datasetController.dataElementType\r\nrequire(15)(Chart);\r\nrequire(16)(Chart);\r\nrequire(17)(Chart);\r\nrequire(18)(Chart);\r\nrequire(19)(Chart);\r\nrequire(20)(Chart);\r\nrequire(21)(Chart);\r\n\r\nrequire(8)(Chart);\r\nrequire(9)(Chart);\r\nrequire(10)(Chart);\r\nrequire(11)(Chart);\r\nrequire(12)(Chart);\r\nrequire(13)(Chart);\r\nrequire(14)(Chart);\r\n\r\n// Loading built-in plugins\r\nvar plugins = require(50);\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tChart.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\nChart.platform.initialize();\r\n\r\nmodule.exports = Chart;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = Chart;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.pluginService = Chart.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.PluginBase = Chart.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.canvasHelpers = Chart.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.layoutService = Chart.layouts;\r\n\r\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bar = function(context, config) {\r\n\t\tconfig.type = 'bar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bubble = function(context, config) {\r\n\t\tconfig.type = 'bubble';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],10:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Doughnut = function(context, config) {\r\n\t\tconfig.type = 'doughnut';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Line = function(context, config) {\r\n\t\tconfig.type = 'line';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.PolarArea = function(context, config) {\r\n\t\tconfig.type = 'polarArea';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],13:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Radar = function(context, config) {\r\n\t\tconfig.type = 'radar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],14:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\tChart.Scatter = function(context, config) {\r\n\t\tconfig.type = 'scatter';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n};\r\n\r\n},{}],15:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ndefaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\tposition: 'left',\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Horizontal Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function(item, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\r\n\t\t\t\tif (item.length > 0) {\r\n\t\t\t\t\tif (item[0].yLabel) {\r\n\t\t\t\t\t\ttitle = item[0].yLabel;\r\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\r\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\r\n\t\t\t}\r\n\t\t},\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\r\n\tvar ticks = scale.getTicks();\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\r\n\t}\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar size, ratio;\r\n\r\n\tif (helpers.isNullOrUndef(thickness)) {\r\n\t\tsize = ruler.min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale end extremity.\r\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - ((curr - prev) / 2) * percent;\r\n\tsize = ((next - prev) / 2) * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bar = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Rectangle,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta;\r\n\r\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\t\tmeta = me.getMeta();\r\n\t\t\tmeta.stack = me.getDataset().stack;\r\n\t\t\tmeta.bar = true;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme._ruler = me.getRuler();\r\n\r\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateElement: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar custom = rectangle.custom || {};\r\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\r\n\r\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\trectangle._datasetIndex = me.index;\r\n\t\t\trectangle._index = index;\r\n\r\n\t\t\trectangle._model = {\r\n\t\t\t\tdatasetLabel: dataset.label,\r\n\t\t\t\tlabel: chart.data.labels[index],\r\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\r\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\r\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\r\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\r\n\t\t\t};\r\n\r\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\r\n\r\n\t\t\trectangle.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar model = rectangle._model;\r\n\t\t\tvar vscale = me.getValueScale();\r\n\t\t\tvar base = vscale.getBasePixel();\r\n\t\t\tvar horizontal = vscale.isHorizontal();\r\n\t\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\r\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\r\n\r\n\t\t\tmodel.horizontal = horizontal;\r\n\t\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stacks based on groups and bar visibility.\r\n\t\t * @param {Number} [last] - The dataset index\r\n\t\t * @returns {Array} The stack list\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getStacks: function(last) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\r\n\t\t\tvar stacks = [];\r\n\t\t\tvar i, meta;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\r\n\t\t\t\t\t(stacked === false ||\r\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\r\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\r\n\t\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn stacks;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackCount: function() {\r\n\t\t\treturn this._getStacks().length;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t\t * @param {Number} [datasetIndex] - The dataset index\r\n\t\t * @param {String} [name] - The stack name to find\r\n\t\t * @returns {Number} The stack index\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackIndex: function(datasetIndex, name) {\r\n\t\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\t\tvar index = (name !== undefined)\r\n\t\t\t\t? stacks.indexOf(name)\r\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\t\treturn (index === -1)\r\n\t\t\t\t? stacks.length - 1\r\n\t\t\t\t: index;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetRuler: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stackCount = me.getStackCount();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\r\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\r\n\t\t\tvar pixels = [];\r\n\t\t\tvar i, ilen, min;\r\n\r\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\r\n\t\t\t}\r\n\r\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\r\n\t\t\t\t? computeMinSampleSize(scale, pixels)\r\n\t\t\t\t: -1;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmin: min,\r\n\t\t\t\tpixels: pixels,\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tstackCount: stackCount,\r\n\t\t\t\tscale: scale\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Note: pixel values are not clamped to the scale area.\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar stack = meta.stack;\r\n\t\t\tvar start = 0;\r\n\t\t\tvar i, imeta, ivalue, base, head, size;\r\n\r\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\r\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\r\n\r\n\t\t\t\t\tif (imeta.bar &&\r\n\t\t\t\t\t\timeta.stack === stack &&\r\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\r\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\r\n\r\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\r\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbase = scale.getPixelForValue(start);\r\n\t\t\thead = scale.getPixelForValue(start + value);\r\n\t\t\tsize = (head - base) / 2;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tsize: size,\r\n\t\t\t\tbase: base,\r\n\t\t\t\thead: head,\r\n\t\t\t\tcenter: head + size / 2\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = ruler.scale.options;\r\n\t\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\t\tvar size = Math.min(\r\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\r\n\t\t\t\trange.chunk * range.ratio);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tbase: center - size / 2,\r\n\t\t\t\thead: center + size / 2,\r\n\t\t\t\tcenter: center,\r\n\t\t\t\tsize: size\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar ilen = rects.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\r\n\t\t\t\t\trects[i].draw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t},\r\n\t});\r\n\r\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bubble = Chart.DatasetController.extend({\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data;\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar options = me._resolveElementOptions(point, index);\r\n\t\t\tvar data = me.getDataset().data[index];\r\n\t\t\tvar dsIndex = me.index;\r\n\r\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._options = options;\r\n\t\t\tpoint._datasetIndex = dsIndex;\r\n\t\t\tpoint._index = index;\r\n\t\t\tpoint._model = {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\thitRadius: options.hitRadius,\r\n\t\t\t\tpointStyle: options.pointStyle,\r\n\t\t\t\trotation: options.rotation,\r\n\t\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t};\r\n\r\n\t\t\tpoint.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\tvar model = point._model;\r\n\t\t\tvar options = point._options;\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\r\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\r\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_resolveElementOptions: function(point, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar dataset = datasets[me.index];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar options = chart.options.elements.point;\r\n\t\t\tvar resolve = helpers.options.resolve;\r\n\t\t\tvar data = dataset.data[index];\r\n\t\t\tvar values = {};\r\n\t\t\tvar i, ilen, key;\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\tvar keys = [\r\n\t\t\t\t'backgroundColor',\r\n\t\t\t\t'borderColor',\r\n\t\t\t\t'borderWidth',\r\n\t\t\t\t'hoverBackgroundColor',\r\n\t\t\t\t'hoverBorderColor',\r\n\t\t\t\t'hoverBorderWidth',\r\n\t\t\t\t'hoverRadius',\r\n\t\t\t\t'hitRadius',\r\n\t\t\t\t'pointStyle',\r\n\t\t\t\t'rotation'\r\n\t\t\t];\r\n\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdataset[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index);\r\n\t\t\t}\r\n\r\n\t\t\t// Custom radius resolution\r\n\t\t\tvalues.radius = resolve([\r\n\t\t\t\tcustom.radius,\r\n\t\t\t\tdata ? data.r : undefined,\r\n\t\t\t\tdataset.radius,\r\n\t\t\t\toptions.radius\r\n\t\t\t], context, index);\r\n\t\t\treturn values;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: Math.PI * -0.5,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: Math.PI * 2.0,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ndefaults._set('pie', helpers.clone(defaults.doughnut));\r\ndefaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\t\tgetRingIndex: function(datasetIndex) {\r\n\t\t\tvar ringIndex = 0;\r\n\r\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t\t++ringIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ringIndex;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\r\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\r\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\r\n\t\t\tvar offset = {x: 0, y: 0};\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\r\n\t\t\tvar circumference = opts.circumference;\r\n\r\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\r\n\t\t\tif (circumference < Math.PI * 2.0) {\r\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\r\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\r\n\t\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\r\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\r\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\r\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\r\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\r\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\r\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\r\n\t\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))};\r\n\t\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))};\r\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\r\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\r\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\r\n\t\t\t}\r\n\r\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\r\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\r\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\r\n\r\n\t\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\r\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\r\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\t\tendAngle: endAngle,\r\n\t\t\t\t\tcircumference: circumference,\r\n\t\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\t// Resets the visual styles\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\t// Set correct angles if not resetting\r\n\t\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t\t}\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcalculateTotal: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar total = 0;\r\n\t\t\tvar value;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tvalue = dataset.data[index];\r\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* if (total === 0) {\r\n\t\t\t\ttotal = NaN;\r\n\t\t\t}*/\r\n\r\n\t\t\treturn total;\r\n\t\t},\r\n\r\n\t\tcalculateCircumference: function(value) {\r\n\t\t\tvar total = this.getMeta().total;\r\n\t\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t},\r\n\r\n\t\t// gets the max border or hover width to properly scale pie charts\r\n\t\tgetMaxBorderWidth: function(arcs) {\r\n\t\t\tvar max = 0;\r\n\t\t\tvar index = this.index;\r\n\t\t\tvar length = arcs.length;\r\n\t\t\tvar borderWidth;\r\n\t\t\tvar hoverWidth;\r\n\r\n\t\t\tfor (var i = 0; i < length; i++) {\r\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\r\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tfunction lineEnabled(dataset, options) {\r\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\r\n\t}\r\n\r\n\tChart.controllers.line = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar options = me.chart.options;\r\n\t\t\tvar lineElementOptions = options.elements.line;\r\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar i, ilen, custom;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar showLine = lineEnabled(dataset, options);\r\n\r\n\t\t\t// Update Line\r\n\t\t\tif (showLine) {\r\n\t\t\t\tcustom = line.custom || {};\r\n\r\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Utility\r\n\t\t\t\tline._scale = scale;\r\n\t\t\t\tline._datasetIndex = me.index;\r\n\t\t\t\t// Data\r\n\t\t\t\tline._children = points;\r\n\t\t\t\t// Model\r\n\t\t\t\tline._model = {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\r\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t\t\t\t// This option gives lines the ability to span gaps\r\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\r\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\r\n\t\t\t\t};\r\n\r\n\t\t\t\tline.pivot();\r\n\t\t\t}\r\n\r\n\t\t\t// Update Points\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t\t}\r\n\r\n\t\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\t\tme.updateBezierControlPoints();\r\n\t\t\t}\r\n\r\n\t\t\t// Now pivot the point for animation\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].pivot();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPointBackgroundColor: function(point, index) {\r\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.backgroundColor) {\r\n\t\t\t\tbackgroundColor = custom.backgroundColor;\r\n\t\t\t} else if (dataset.pointBackgroundColor) {\r\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\r\n\t\t\t} else if (dataset.backgroundColor) {\r\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn backgroundColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderColor: function(point, index) {\r\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.borderColor) {\r\n\t\t\t\tborderColor = custom.borderColor;\r\n\t\t\t} else if (dataset.pointBorderColor) {\r\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\r\n\t\t\t} else if (dataset.borderColor) {\r\n\t\t\t\tborderColor = dataset.borderColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderWidth: function(point, index) {\r\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.borderWidth)) {\r\n\t\t\t\tborderWidth = custom.borderWidth;\r\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\r\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\r\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\r\n\t\t\t\tborderWidth = dataset.borderWidth;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderWidth;\r\n\t\t},\r\n\r\n\t\tgetPointRotation: function(point, index) {\r\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.rotation)) {\r\n\t\t\t\tpointRotation = custom.rotation;\r\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\r\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\r\n\t\t\t}\r\n\t\t\treturn pointRotation;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar value = dataset.data[index];\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar pointOptions = me.chart.options.elements.point;\r\n\t\t\tvar x, y;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t\t// Utility\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._datasetIndex = datasetIndex;\r\n\t\t\tpoint._index = index;\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\tpoint._model = {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\t// Appearance\r\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\r\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\r\n\t\t\t\trotation: me.getPointRotation(point, index),\r\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\r\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\r\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\r\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\r\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\r\n\t\t\t\t// Tooltip\r\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar sumPos = 0;\r\n\t\t\tvar sumNeg = 0;\r\n\t\t\tvar i, ds, dsMeta;\r\n\r\n\t\t\tif (yScale.options.stacked) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\r\n\t\t\t\t\tds = chart.data.datasets[i];\r\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\r\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\r\n\t\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\r\n\t\t\t\tif (rightValue < 0) {\r\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t\t}\r\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t\t}\r\n\r\n\t\t\treturn yScale.getPixelForValue(value);\r\n\t\t},\r\n\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar area = me.chart.chartArea;\r\n\t\t\tvar points = (meta.data || []);\r\n\t\t\tvar i, ilen, point, model, controlPoints;\r\n\r\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\t\treturn !pt._model.skip;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\r\n\t\t\t\thelpers.splineCurveMonotone(points);\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tpoint = points[i];\r\n\t\t\t\t\tmodel = point._model;\r\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\r\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\r\n\t\t\t\t\t\tmodel,\r\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\r\n\t\t\t\t\t\tmeta.dataset._model.tension\r\n\t\t\t\t\t);\r\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar area = chart.chartArea;\r\n\t\t\tvar ilen = points.length;\r\n\t\t\tvar halfBorderWidth;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\r\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\r\n\r\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\r\n\t\t\t\t\tleft: area.left,\r\n\t\t\t\t\tright: area.right,\r\n\t\t\t\t\ttop: area.top - halfBorderWidth,\r\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t\t}\r\n\r\n\t\t\t// Draw the points\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].draw(area);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\t\tvar starts = me._starts = [];\r\n\t\t\tvar angles = me._angles = [];\r\n\t\t\tvar i, ilen, angle;\r\n\r\n\t\t\tme._updateRadius();\r\n\r\n\t\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\t\tstarts[i] = start;\r\n\t\t\t\tangle = me._computeAngle(i);\r\n\t\t\t\tangles[i] = angle;\r\n\t\t\t\tstart += angle;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateRadius: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar scale = chart.scale;\r\n\t\t\tvar labels = chart.data.labels;\r\n\r\n\t\t\tvar centerX = scale.xCenter;\r\n\t\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\t\tvar startAngle = me._starts[index];\r\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX,\r\n\t\t\t\t\ty: centerY,\r\n\t\t\t\t\tinnerRadius: 0,\r\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Apply border and fill style\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcountVisibleElements: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar count = 0;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_computeAngle: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar count = this.getMeta().count;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\r\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: me.chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\treturn helpers.options.resolve([\r\n\t\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t\t(2 * Math.PI) / count\r\n\t\t\t], context, index);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('radar', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.radar = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data;\r\n\t\t\tvar custom = line.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\r\n\t\t\tvar scale = me.chart.scale;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(meta.dataset, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_scale: scale,\r\n\t\t\t\t// Data\r\n\t\t\t\t_children: points,\r\n\t\t\t\t_loop: true,\r\n\t\t\t\t// Model\r\n\t\t\t\t_model: {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.pivot();\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t}, me);\r\n\r\n\t\t\t// Update bezier control points\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t},\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar scale = me.chart.scale;\r\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\r\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(point, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\r\n\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\r\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\r\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\r\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\r\n\r\n\t\t\t\t\t// Tooltip\r\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\r\n\t\t},\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar chartArea = this.chart.chartArea;\r\n\t\t\tvar meta = this.getMeta();\r\n\r\n\t\t\thelpers.each(meta.data, function(point, index) {\r\n\t\t\t\tvar model = point._model;\r\n\t\t\t\tvar controlPoints = helpers.splineCurve(\r\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel.tension\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\t// Now pivot the point for animation\r\n\t\t\t\tpoint.pivot();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar index = point._index;\r\n\t\t\tvar model = point._model;\r\n\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\tshowLines: false,\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Scatter charts use line controllers\r\n\tChart.controllers.scatter = Chart.controllers.line;\r\n\r\n};\r\n\r\n},{\"26\":26}],22:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Element = require(27);\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\r\n\r\n},{\"27\":27}],23:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers.noop,\r\n\t\tonComplete: helpers.noop\r\n\t}\r\n});\r\n\r\nmodule.exports = {\r\n\tframeDuration: 17,\r\n\tanimations: [],\r\n\tdropFrames: 0,\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {Number} duration - The animation duration in ms.\r\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\t\tvar startTime = Date.now();\r\n\t\tvar framesToDrop = 0;\r\n\r\n\t\tif (me.dropFrames > 1) {\r\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\r\n\t\t\tme.dropFrames = me.dropFrames % 1;\r\n\t\t}\r\n\r\n\t\tme.advance(1 + framesToDrop);\r\n\r\n\t\tvar endTime = Date.now();\r\n\r\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function(count) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart;\r\n\t\tvar i = 0;\r\n\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\r\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\r\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\r\n\r\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= animation.numSteps) {\r\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Animation = require(22);\r\nvar animations = require(23);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Interaction = require(29);\r\nvar layouts = require(31);\r\nvar platform = require(49);\r\nvar plugins = require(32);\r\nvar scaleService = require(34);\r\nvar Tooltip = require(36);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Create a dictionary of chart types, to allow for extension of existing types\r\n\tChart.types = {};\r\n\r\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\r\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\r\n\tChart.instances = {};\r\n\r\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\r\n\tChart.controllers = {};\r\n\r\n\t/**\r\n\t * Initializes the given config with global and chart default values.\r\n\t */\r\n\tfunction initConfig(config) {\r\n\t\tconfig = config || {};\r\n\r\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\r\n\t\t// and so would change references to labels and datasets, preventing data updates.\r\n\t\tvar data = config.data = config.data || {};\r\n\t\tdata.datasets = data.datasets || [];\r\n\t\tdata.labels = data.labels || [];\r\n\r\n\t\tconfig.options = helpers.configMerge(\r\n\t\t\tdefaults.global,\r\n\t\t\tdefaults[config.type],\r\n\t\t\tconfig.options || {});\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the config of the chart\r\n\t * @param chart {Chart} chart to update the options for\r\n\t */\r\n\tfunction updateConfig(chart) {\r\n\t\tvar newOptions = chart.options;\r\n\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\tlayouts.removeBox(chart, scale);\r\n\t\t});\r\n\r\n\t\tnewOptions = helpers.configMerge(\r\n\t\t\tChart.defaults.global,\r\n\t\t\tChart.defaults[chart.config.type],\r\n\t\t\tnewOptions);\r\n\r\n\t\tchart.options = chart.config.options = newOptions;\r\n\t\tchart.ensureScalesHaveIDs();\r\n\t\tchart.buildOrUpdateScales();\r\n\t\t// Tooltip\r\n\t\tchart.tooltip._options = newOptions.tooltips;\r\n\t\tchart.tooltip.initialize();\r\n\t}\r\n\r\n\tfunction positionIsHorizontal(position) {\r\n\t\treturn position === 'top' || position === 'bottom';\r\n\t}\r\n\r\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tconstruct: function(item, config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tconfig = initConfig(config);\r\n\r\n\t\t\tvar context = platform.acquireContext(item, config);\r\n\t\t\tvar canvas = context && context.canvas;\r\n\t\t\tvar height = canvas && canvas.height;\r\n\t\t\tvar width = canvas && canvas.width;\r\n\r\n\t\t\tme.id = helpers.uid();\r\n\t\t\tme.ctx = context;\r\n\t\t\tme.canvas = canvas;\r\n\t\t\tme.config = config;\r\n\t\t\tme.width = width;\r\n\t\t\tme.height = height;\r\n\t\t\tme.aspectRatio = height ? width / height : null;\r\n\t\t\tme.options = config.options;\r\n\t\t\tme._bufferedRender = false;\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t\t * @prop Chart#chart\r\n\t\t\t * @deprecated since version 2.6.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tme.chart = me;\r\n\t\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t\t// Add the chart instance to the global namespace\r\n\t\t\tChart.instances[me.id] = me;\r\n\r\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\t\tObject.defineProperty(me, 'data', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\treturn me.config.data;\r\n\t\t\t\t},\r\n\t\t\t\tset: function(value) {\r\n\t\t\t\t\tme.config.data = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!context || !canvas) {\r\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tme.initialize();\r\n\t\t\tme.update();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\t// Before init plugin notification\r\n\t\t\tplugins.notify(me, 'beforeInit');\r\n\r\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\t\tme.bindEvents();\r\n\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\t\tme.resize(true);\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\r\n\t\t\tme.ensureScalesHaveIDs();\r\n\t\t\tme.buildOrUpdateScales();\r\n\t\t\tme.initToolTip();\r\n\r\n\t\t\t// After init plugin notification\r\n\t\t\tplugins.notify(me, 'afterInit');\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tclear: function() {\r\n\t\t\thelpers.canvas.clear(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tstop: function() {\r\n\t\t\t// Stops any current animation loop occurring\r\n\t\t\tanimations.cancelAnimation(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tresize: function(silent) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\r\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\r\n\r\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcanvas.width = me.width = newWidth;\r\n\t\t\tcanvas.height = me.height = newHeight;\r\n\t\t\tcanvas.style.width = newWidth + 'px';\r\n\t\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\t\tif (!silent) {\r\n\t\t\t\t// Notify any plugins about the resize\r\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t\t// Notify of resize\r\n\t\t\t\tif (me.options.onResize) {\r\n\t\t\t\t\tme.options.onResize(me, newSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tme.stop();\r\n\t\t\t\tme.update({\r\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tensureScalesHaveIDs: function() {\r\n\t\t\tvar options = this.options;\r\n\t\t\tvar scalesOptions = options.scales || {};\r\n\t\t\tvar scaleOptions = options.scale;\r\n\r\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\tif (scaleOptions) {\r\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Builds a map of scale ID to scale object for future lookup.\r\n\t\t */\r\n\t\tbuildOrUpdateScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar scales = me.scales || {};\r\n\t\t\tvar items = [];\r\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\t\tobj[id] = false;\r\n\t\t\t\treturn obj;\r\n\t\t\t}, {});\r\n\r\n\t\t\tif (options.scales) {\r\n\t\t\t\titems = items.concat(\r\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.scale) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\toptions: options.scale,\r\n\t\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\t\tisDefault: true,\r\n\t\t\t\t\tdposition: 'chartArea'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(items, function(item) {\r\n\t\t\t\tvar scaleOptions = item.options;\r\n\t\t\t\tvar id = scaleOptions.id;\r\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\r\n\r\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdated[id] = true;\r\n\t\t\t\tvar scale = null;\r\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\t\tscale = scales[id];\r\n\t\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\t\tscale.chart = me;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\t\tchart: me\r\n\t\t\t\t\t});\r\n\t\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\t\tif (item.isDefault) {\r\n\t\t\t\t\tme.scale = scale;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// clear up discarded scales\r\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\r\n\t\t\t\tif (!hasUpdated) {\r\n\t\t\t\t\tdelete scales[id];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.scales = scales;\r\n\r\n\t\t\tscaleService.addScalesToLayout(this);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateControllers: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar types = [];\r\n\t\t\tvar newControllers = [];\r\n\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\r\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\t}\r\n\t\t\t\tmeta.type = type;\r\n\r\n\t\t\t\ttypes.push(meta.type);\r\n\r\n\t\t\t\tif (meta.controller) {\r\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\r\n\t\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\r\n\t\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\r\n\t\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t\t}\r\n\t\t\t}, me);\r\n\r\n\t\t\treturn newControllers;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Reset the elements of all datasets\r\n\t\t * @private\r\n\t\t */\r\n\t\tresetElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t* Resets the chart back to it's state before the initial animation\r\n\t\t*/\r\n\t\treset: function() {\r\n\t\t\tthis.resetElements();\r\n\t\t\tthis.tooltip.initialize();\r\n\t\t},\r\n\r\n\t\tupdate: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tupdateConfig(me);\r\n\r\n\t\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\t\tplugins._invalidate(me);\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// In case the entire data object changed\r\n\t\t\tme.tooltip._data = me.data;\r\n\r\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\r\n\t\t\t}, me);\r\n\r\n\t\t\tme.updateLayout();\r\n\r\n\t\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\t\thelpers.each(newControllers, function(controller) {\r\n\t\t\t\t\tcontroller.reset();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.updateDatasets();\r\n\r\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t\t// after update.\r\n\t\t\tme.tooltip.initialize();\r\n\r\n\t\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t\t// When we reset the tooltip, we need to clear it\r\n\t\t\tme.lastActive = [];\r\n\r\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\t\tplugins.notify(me, 'afterUpdate');\r\n\r\n\t\t\tif (me._bufferedRender) {\r\n\t\t\t\tme._bufferedRequest = {\r\n\t\t\t\t\tduration: config.duration,\r\n\t\t\t\t\teasing: config.easing,\r\n\t\t\t\t\tlazy: config.lazy\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tme.render(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateLayout: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlayouts.update(this, this.width, this.height);\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t\t * @deprecated since version 2.5.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\r\n\t\t\tplugins.notify(me, 'afterLayout');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDatasets: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateDataset(i);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDataset: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.update();\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t\t},\r\n\r\n\t\trender: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar duration = config.duration;\r\n\t\t\tvar lazy = config.lazy;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar animationOptions = me.options.animation;\r\n\t\t\tvar onComplete = function(animation) {\r\n\t\t\t\tplugins.notify(me, 'afterRender');\r\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t\t};\r\n\r\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\r\n\t\t\t\tvar animation = new Animation({\r\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\r\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\r\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t\t});\r\n\r\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\r\n\t\t\t} else {\r\n\t\t\t\tme.draw();\r\n\r\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\r\n\t\t\t}\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tdraw: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tme.clear();\r\n\r\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\r\n\t\t\t\teasingValue = 1;\r\n\t\t\t}\r\n\r\n\t\t\tme.transition(easingValue);\r\n\r\n\t\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw all the scales\r\n\t\t\thelpers.each(me.boxes, function(box) {\r\n\t\t\t\tbox.draw(me.chartArea);\r\n\t\t\t}, me);\r\n\r\n\t\t\tif (me.scale) {\r\n\t\t\t\tme.scale.draw();\r\n\t\t\t}\r\n\r\n\t\t\tme.drawDatasets(easingValue);\r\n\t\t\tme._drawTooltip(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.tooltip.transition(easingValue);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDatasets: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw datasets reversed to support proper line stacking\r\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.drawDataset(i, easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDataset: function(index, easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_drawTooltip: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\t\t\tvar args = {\r\n\t\t\t\ttooltip: tooltip,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttooltip.draw();\r\n\r\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t\t},\r\n\r\n\t\t// Get the single element that was clicked on\r\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t\tgetElementAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.single(this, e);\r\n\t\t},\r\n\r\n\t\tgetElementsAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtXAxis: function(e) {\r\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\t\tvar method = Interaction.modes[mode];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\treturn method(this, e, options);\r\n\t\t\t}\r\n\r\n\t\t\treturn [];\r\n\t\t},\r\n\r\n\t\tgetDatasetAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\t\tif (!dataset._meta) {\r\n\t\t\t\tdataset._meta = {};\r\n\t\t\t}\r\n\r\n\t\t\tvar meta = dataset._meta[me.id];\r\n\t\t\tif (!meta) {\r\n\t\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\t\ttype: null,\r\n\t\t\t\t\tdata: [],\r\n\t\t\t\t\tdataset: null,\r\n\t\t\t\t\tcontroller: null,\r\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\t\txAxisID: null,\r\n\t\t\t\t\tyAxisID: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn meta;\r\n\t\t},\r\n\r\n\t\tgetVisibleDatasetCount: function() {\r\n\t\t\tvar count = 0;\r\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\tisDatasetVisible: function(datasetIndex) {\r\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t\t},\r\n\r\n\t\tgenerateLegend: function() {\r\n\t\t\treturn this.options.legendCallback(this);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar id = this.id;\r\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\t\tif (meta) {\r\n\t\t\t\tmeta.controller.destroy();\r\n\t\t\t\tdelete dataset._meta[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroy: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// dataset controllers need to cleanup associated data\r\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (canvas) {\r\n\t\t\t\tme.unbindEvents();\r\n\t\t\t\thelpers.canvas.clear(me);\r\n\t\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\t\tme.canvas = null;\r\n\t\t\t\tme.ctx = null;\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'destroy');\r\n\r\n\t\t\tdelete Chart.instances[me.id];\r\n\t\t},\r\n\r\n\t\ttoBase64Image: function() {\r\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t\t},\r\n\r\n\t\tinitToolTip: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.tooltip = new Tooltip({\r\n\t\t\t\t_chart: me,\r\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t\t_data: me.data,\r\n\t\t\t\t_options: me.options.tooltips\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners = {};\r\n\t\t\tvar listener = function() {\r\n\t\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t\t};\r\n\r\n\t\t\thelpers.each(me.options.events, function(type) {\r\n\t\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\t\tlisteners[type] = listener;\r\n\t\t\t});\r\n\r\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\tlistener = function() {\r\n\t\t\t\t\tme.resize();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\t\tlisteners.resize = listener;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tunbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners;\r\n\t\t\tif (!listeners) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdelete me._listeners;\r\n\t\t\thelpers.each(listeners, function(listener, type) {\r\n\t\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\r\n\t\t\tvar element, i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\t\telement = elements[i];\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\teventHandler: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Buffer any update calls so that renders do not occur\r\n\t\t\tme._bufferedRender = true;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\tvar changed = me.handleEvent(e);\r\n\t\t\t// for smooth tooltip animations issue #4989\r\n\t\t\t// the tooltip should be the source of change\r\n\t\t\t// Animation check workaround:\r\n\t\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\t\tif (tooltip) {\r\n\t\t\t\tchanged = tooltip._start\r\n\t\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\t\tif (bufferedRequest) {\r\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\t\tme.render(bufferedRequest);\r\n\t\t\t} else if (changed && !me.animating) {\r\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\t\tme.stop();\r\n\r\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\t\tme.render({\r\n\t\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\t\tlazy: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme._bufferedRender = false;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handle an event\r\n\t\t * @private\r\n\t\t * @param {IEvent} event the event to handle\r\n\t\t * @return {Boolean} true if the chart needs to re-render\r\n\t\t */\r\n\t\thandleEvent: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options || {};\r\n\t\t\tvar hoverOptions = options.hover;\r\n\t\t\tvar changed = false;\r\n\r\n\t\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t\t// Find Active Elements for hover and tooltips\r\n\t\t\tif (e.type === 'mouseout') {\r\n\t\t\t\tme.active = [];\r\n\t\t\t} else {\r\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke onHover hook\r\n\t\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\t\tif (options.onClick) {\r\n\t\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove styling for last active (even if it may still be active)\r\n\t\t\tif (me.lastActive.length) {\r\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t\t}\r\n\r\n\t\t\t// Built in hover styling\r\n\t\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t\t}\r\n\r\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t\t// Remember Last Actives\r\n\t\t\tme.lastActive = me.active;\r\n\r\n\t\t\treturn changed;\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, use Chart instead.\r\n\t * @class Chart.Controller\r\n\t * @deprecated since version 2.6.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\tChart.Controller = Chart;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n\t/**\r\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n\t */\r\n\tfunction listenArrayEvents(array, listener) {\r\n\t\tif (array._chartjs) {\r\n\t\t\tarray._chartjs.listeners.push(listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(array, '_chartjs', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: {\r\n\t\t\t\tlisteners: [listener]\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\t\tvar base = array[key];\r\n\r\n\t\t\tObject.defineProperty(array, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: function() {\r\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the given array event listener and cleanup extra attached properties (such as\r\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n\t */\r\n\tfunction unlistenArrayEvents(array, listener) {\r\n\t\tvar stub = array._chartjs;\r\n\t\tif (!stub) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar listeners = stub.listeners;\r\n\t\tvar index = listeners.indexOf(listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif (listeners.length > 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tdelete array[key];\r\n\t\t});\r\n\r\n\t\tdelete array._chartjs;\r\n\t}\r\n\r\n\t// Base class for all dataset controllers (line, bar, etc)\r\n\tChart.DatasetController = function(chart, datasetIndex) {\r\n\t\tthis.initialize(chart, datasetIndex);\r\n\t};\r\n\r\n\thelpers.extend(Chart.DatasetController.prototype, {\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdatasetElementType: null,\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdataElementType: null,\r\n\r\n\t\tinitialize: function(chart, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tme.chart = chart;\r\n\t\t\tme.index = datasetIndex;\r\n\t\t\tme.linkScales();\r\n\t\t\tme.addElements();\r\n\t\t},\r\n\r\n\t\tupdateIndex: function(datasetIndex) {\r\n\t\t\tthis.index = datasetIndex;\r\n\t\t},\r\n\r\n\t\tlinkScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\r\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\r\n\t\t\t}\r\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetDataset: function() {\r\n\t\t\treturn this.chart.data.datasets[this.index];\r\n\t\t},\r\n\r\n\t\tgetMeta: function() {\r\n\t\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t\t},\r\n\r\n\t\tgetScaleForId: function(scaleID) {\r\n\t\t\treturn this.chart.scales[scaleID];\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.update(true);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tif (this._data) {\r\n\t\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcreateMetaDataset: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.datasetElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateMetaData: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.dataElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taddElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data || [];\r\n\t\t\tvar metaData = meta.data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t\t}\r\n\r\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t\t},\r\n\r\n\t\taddElementAndReset: function(index) {\r\n\t\t\tvar element = this.createMetaData(index);\r\n\t\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\t\tthis.updateElement(element, index, true);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t\t// the internal meta data accordingly.\r\n\t\t\tif (me._data !== data) {\r\n\t\t\t\tif (me._data) {\r\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t\tme._data = data;\r\n\t\t\t}\r\n\r\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\t\tme.resyncElements();\r\n\t\t},\r\n\r\n\t\tupdate: helpers.noop,\r\n\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].transition(easingValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.draw();\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].draw();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tremoveHoverStyle: function(element) {\r\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\r\n\t\t\tdelete element.$previousStyle;\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar getHoverColor = helpers.getHoverColor;\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tresyncElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data;\r\n\t\t\tvar numMeta = meta.data.length;\r\n\t\t\tvar numData = data.length;\r\n\r\n\t\t\tif (numData < numMeta) {\r\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t\t} else if (numData > numMeta) {\r\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinsertElements: function(start, count) {\r\n\t\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\t\tthis.addElementAndReset(start + i);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPush: function() {\r\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPop: function() {\r\n\t\t\tthis.getMeta().data.pop();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataShift: function() {\r\n\t\t\tthis.getMeta().data.shift();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataSplice: function(start, count) {\r\n\t\t\tthis.getMeta().data.splice(start, count);\r\n\t\t\tthis.insertElements(start, arguments.length - 2);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataUnshift: function() {\r\n\t\t\tthis.insertElements(0, arguments.length);\r\n\t\t}\r\n\t});\r\n\r\n\tChart.DatasetController.extend = helpers.inherits;\r\n};\r\n\r\n},{\"46\":46}],26:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],27:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar helpers = require(46);\r\n\r\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = color(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = color(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers.extend(Element.prototype, {\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers.clone(me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = model;\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers.inherits;\r\n\r\nmodule.exports = Element;\r\n\r\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\r\n/* global window: false */\r\n/* global document: false */\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers.configMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tvar tval = target[key] || {};\r\n\t\t\t\tvar sval = source[key];\r\n\r\n\t\t\t\tif (key === 'scales') {\r\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\r\n\t\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.scaleMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.where = function(collection, filterCallback) {\r\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\r\n\t};\r\n\thelpers.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers.log10 = Math.log10 ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.log10(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t\t// Check for whole powers of 10,\r\n\t\t\t// which due to floating point rounding error should be corrected.\r\n\t\t\tvar powerOf10 = Math.round(exponent);\r\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t\t};\r\n\thelpers.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\thelpers.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t// Private helper to get a constraint dimension\r\n\t// @param domNode : the node to check the constraint on\r\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\r\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\r\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.host) {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\thelpers.each(thing, function(nestedThing) {\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (var i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers.color = !color ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn color(value);\r\n\t\t};\r\n\r\n\thelpers.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\r\n\r\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {Point} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param chart {chart} the chart\r\n * @param handler {Function} the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar datasets = chart.data.datasets;\r\n\tvar meta, i, j, ilen, jlen;\r\n\r\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\tif (!chart.isDatasetVisible(i)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tmeta = chart.getDatasetMeta(i);\r\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\r\n\t\t\tvar element = meta.data[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param items {ChartElement[]} elements to filter\r\n * @param position {Point} the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param chart {Chart} the chart to look at elements from\r\n * @param position {Point} the point to be nearest to\r\n * @param intersect {Boolean} if true, only consider items that intersect the position\r\n * @param distanceMetric {Function} function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {String} axis the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\r\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t\t// don't count items that are skipped (null data)\r\n\t\t\tif (element && !element._view.skip) {\r\n\t\t\t\telements.push(element);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nmodule.exports = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\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\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\r\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\r\n\t\t\tif (nearestItems.length > 1) {\r\n\t\t\t\tnearestItems.sort(function(a, b) {\r\n\t\t\t\t\tvar sizeA = a.getArea();\r\n\t\t\t\t\tvar sizeB = b.getArea();\r\n\t\t\t\t\tvar ret = sizeA - sizeB;\r\n\r\n\t\t\t\t\tif (ret === 0) {\r\n\t\t\t\t\t\t// if equal sort by dataset index\r\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Return only 1 item\r\n\t\t\treturn nearestItems.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],30:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('global', {\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0,\r\n\tmaintainAspectRatio: true,\r\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tshowLines: true,\r\n\r\n\t// Element defaults defined in element extensions\r\n\telements: {},\r\n\r\n\t// Layout options such as padding\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Occupy the global variable of Chart, and create a simple base class\r\n\tvar Chart = function(item, config) {\r\n\t\tthis.construct(item, config);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tChart.Chart = Chart;\r\n\r\n\treturn Chart;\r\n};\r\n\r\n},{\"26\":26}],31:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers.where(array, function(v) {\r\n\t\treturn v.position === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\tarray.forEach(function(v, i) {\r\n\t\tv._tmpIndex_ = i;\r\n\t\treturn v;\r\n\t});\r\n\tarray.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n\tarray.forEach(function(v) {\r\n\t\tdelete v._tmpIndex_;\r\n\t});\r\n}\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {String} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {Function} getPadding - Returns an object with padding on the edges\r\n * @prop {Number} width - Width of item. Must be valid after update()\r\n * @prop {Number} height - Height of item. Must be valid after update()\r\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nmodule.exports = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {Object} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {Object} item - the item to configure with the given options\r\n\t * @param {Object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {Number} width - the width to fit into\r\n\t * @param {Number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\r\n\t\tvar leftPadding = padding.left;\r\n\t\tvar rightPadding = padding.right;\r\n\t\tvar topPadding = padding.top;\r\n\t\tvar bottomPadding = padding.bottom;\r\n\r\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\r\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\r\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\r\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\r\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\r\n\r\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\r\n\t\tsortByWeight(leftBoxes, true);\r\n\t\tsortByWeight(rightBoxes, false);\r\n\t\tsortByWeight(topBoxes, true);\r\n\t\tsortByWeight(bottomBoxes, false);\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\t\t// What we do to find the best sizing, we do the following\r\n\t\t// 1. Determine the minimum size of the chart area.\r\n\t\t// 2. Split the remaining width equally between each vertical axis\r\n\t\t// 3. Split the remaining height equally between each horizontal axis\r\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\r\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\r\n\t\t// 6. Refit each axis\r\n\t\t// 7. Position each axis in the final location\r\n\t\t// 8. Tell the chart the final location of the chart area\r\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\r\n\r\n\t\t// Step 1\r\n\t\tvar chartWidth = width - leftPadding - rightPadding;\r\n\t\tvar chartHeight = height - topPadding - bottomPadding;\r\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\r\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\r\n\r\n\t\t// Step 2\r\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\r\n\r\n\t\t// Step 3\r\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\r\n\r\n\t\t// Step 4\r\n\t\tvar maxChartAreaWidth = chartWidth;\r\n\t\tvar maxChartAreaHeight = chartHeight;\r\n\t\tvar minBoxSizes = [];\r\n\r\n\t\tfunction getMinimumBoxSize(box) {\r\n\t\t\tvar minSize;\r\n\t\t\tvar isHorizontal = box.isHorizontal();\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\r\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\r\n\t\t\t} else {\r\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\r\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\r\n\t\t\t}\r\n\r\n\t\t\tminBoxSizes.push({\r\n\t\t\t\thorizontal: isHorizontal,\r\n\t\t\t\tminSize: minSize,\r\n\t\t\t\tbox: box,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\r\n\r\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\r\n\t\tvar maxHorizontalLeftPadding = 0;\r\n\t\tvar maxHorizontalRightPadding = 0;\r\n\t\tvar maxVerticalTopPadding = 0;\r\n\t\tvar maxVerticalBottomPadding = 0;\r\n\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\r\n\t\t\tif (horizontalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\r\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\r\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\r\n\t\t\tif (verticalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\r\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\r\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\r\n\t\t// be if the axes are drawn at their minimum sizes.\r\n\t\t// Steps 5 & 6\r\n\t\tvar totalLeftBoxesWidth = leftPadding;\r\n\t\tvar totalRightBoxesWidth = rightPadding;\r\n\t\tvar totalTopBoxesHeight = topPadding;\r\n\t\tvar totalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\t// Function to fit a box\r\n\t\tfunction fitBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\r\n\t\t\t\treturn minBox.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\t\tvar scaleMargin = {\r\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\r\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tbottom: 0\r\n\t\t\t\t\t};\r\n\r\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\r\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\r\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\t// Set the Left and Right margins for the horizontal boxes\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\r\n\r\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\tfunction finalFitVerticalBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\r\n\t\t\t\treturn minSize.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tvar scaleMargin = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\tright: 0,\r\n\t\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\t\tbottom: totalBottomBoxesHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Let the left layout know the final margin\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\r\n\r\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\r\n\t\ttotalLeftBoxesWidth = leftPadding;\r\n\t\ttotalRightBoxesWidth = rightPadding;\r\n\t\ttotalTopBoxesHeight = topPadding;\r\n\t\ttotalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\t// We may be adding some padding to account for rotated x axis labels\r\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\r\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\r\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\r\n\r\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\r\n\t\ttotalTopBoxesHeight += topPaddingAddition;\r\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\r\n\r\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\r\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\r\n\t\t// without calling `fit` again\r\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\r\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\r\n\r\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\r\n\t\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\r\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\r\n\t\t}\r\n\r\n\t\t// Step 7 - Position the boxes\r\n\t\tvar left = leftPadding + leftPaddingAddition;\r\n\t\tvar top = topPadding + topPaddingAddition;\r\n\r\n\t\tfunction placeBox(box) {\r\n\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\r\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\r\n\t\t\t\tbox.top = top;\r\n\t\t\t\tbox.bottom = top + box.height;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\ttop = box.bottom;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tbox.left = left;\r\n\t\t\t\tbox.right = left + box.width;\r\n\t\t\t\tbox.top = totalTopBoxesHeight;\r\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\tleft = box.right;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\r\n\r\n\t\t// Account for chart width and height\r\n\t\tleft += maxChartAreaWidth;\r\n\t\ttop += maxChartAreaHeight;\r\n\r\n\t\thelpers.each(rightBoxes, placeBox);\r\n\t\thelpers.each(bottomBoxes, placeBox);\r\n\r\n\t\t// Step 8\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: totalLeftBoxesWidth,\r\n\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\r\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\r\n\t\t};\r\n\r\n\t\t// Step 9\r\n\t\thelpers.each(chartAreaBoxes, function(box) {\r\n\t\t\tbox.left = chart.chartArea.left;\r\n\t\t\tbox.top = chart.chartArea.top;\r\n\t\t\tbox.right = chart.chartArea.right;\r\n\t\t\tbox.bottom = chart.chartArea.bottom;\r\n\r\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],32:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {Number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {Array} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Object} chart - The chart instance for which plugins should be called.\r\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {Array} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\r\n\r\n/**\r\n * Plugin extension hooks.\r\n * @interface IPlugin\r\n * @since 2.1.0\r\n */\r\n/**\r\n * @method IPlugin#beforeInit\r\n * @desc Called before initializing `chart`.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterInit\r\n * @desc Called after `chart` has been initialized and before the first update.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeUpdate\r\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\r\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart update.\r\n */\r\n/**\r\n * @method IPlugin#afterUpdate\r\n * @desc Called after `chart` has been updated and before rendering. Note that this\r\n * hook will not be called if the chart update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsUpdate\r\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\r\n * the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} false to cancel the datasets update.\r\n * @since version 2.1.5\r\n*/\r\n/**\r\n * @method IPlugin#afterDatasetsUpdate\r\n * @desc Called after the `chart` datasets have been updated. Note that this hook\r\n * will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @since version 2.1.5\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetUpdate\r\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\r\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetUpdate\r\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\r\n * that this hook will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeLayout\r\n * @desc Called before laying out `chart`. If any plugin returns `false`,\r\n * the layout update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart layout.\r\n */\r\n/**\r\n * @method IPlugin#afterLayout\r\n * @desc Called after the `chart` has been layed out. Note that this hook will not\r\n * be called if the layout update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeRender\r\n * @desc Called before rendering `chart`. If any plugin returns `false`,\r\n * the rendering is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart rendering.\r\n */\r\n/**\r\n * @method IPlugin#afterRender\r\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\r\n * that this hook will not be called if the rendering has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDraw\r\n * @desc Called before drawing `chart` at every animation frame specified by the given\r\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\r\n * another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDraw\r\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\r\n * that this hook will not be called if the drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsDraw\r\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\r\n * the datasets drawing is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetsDraw\r\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\r\n * will not be called if the datasets drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetDraw\r\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\r\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\r\n * is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetDraw\r\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\r\n * (datasets are drawn in the reverse order). Note that this hook will not be called\r\n * if the datasets drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeTooltipDraw\r\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\r\n * the tooltip drawing is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterTooltipDraw\r\n * @desc Called after drawing the `tooltip`. Note that this hook will not\r\n * be called if the tooltip drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeEvent\r\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\r\n * the event will be discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterEvent\r\n * @desc Called after the `event` has been consumed. Note that this hook\r\n * will not be called if the `event` has been previously discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#resize\r\n * @desc Called after the chart as been resized.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#destroy\r\n * @desc Called after the chart as been destroyed.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n\r\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar Ticks = require(35);\r\n\r\ndefaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// line height\r\n\t\tlineHeight: 1.2,\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: Ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\nfunction labelsFromTicks(ticks) {\r\n\tvar labels = [];\r\n\tvar i, ilen;\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tlabels.push(ticks[i].label);\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction getLineValue(scale, index, offsetGridLines) {\r\n\tvar lineValue = scale.getPixelForTick(index);\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (index === 0) {\r\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction computeTextSize(context, tick, font) {\r\n\treturn helpers.isArray(tick) ?\r\n\t\thelpers.longestText(context, font, tick) :\r\n\t\tcontext.measureText(tick).width;\r\n}\r\n\r\nfunction parseFontOptions(options) {\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\tvar globalDefaults = defaults.global;\r\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\r\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\r\n\r\n\treturn {\r\n\t\tsize: size,\r\n\t\tstyle: style,\r\n\t\tfamily: family,\r\n\t\tfont: helpers.fontString(size, style, family)\r\n\t};\r\n}\r\n\r\nfunction parseLineHeight(options) {\r\n\treturn helpers.options.toLineHeight(\r\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\r\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\tmergeTicksOptions: function() {\r\n\t\tvar ticks = this.options.ticks;\r\n\t\tif (ticks.minor === false) {\r\n\t\t\tticks.minor = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (ticks.major === false) {\r\n\t\t\tticks.major = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor (var key in ticks) {\r\n\t\t\tif (key !== 'major' && key !== 'minor') {\r\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\r\n\t\t\t\t\tticks.minor[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\r\n\t\t\t\t\tticks.major[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeUpdate: function() {\r\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen, labels, label, ticks, tick;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\tme.afterBuildTicks();\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\ttick = ticks[i];\r\n\t\t\tif (!tick) {\r\n\t\t\t\tticks.push(tick = {\r\n\t\t\t\t\tlabel: label,\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttick.label = label;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: function() {\r\n\t\thelpers.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers.noop,\r\n\tafterBuildTicks: function() {\r\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar context = me.ctx;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\t// Get the width of each grid by calculating the difference\r\n\t\t// between x offsets between 0 and 1.\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tcontext.font = tickFont.font;\r\n\r\n\t\tvar labelRotation = tickOpts.minRotation || 0;\r\n\r\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\r\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar labelWidth = originalLabelWidth;\r\n\t\t\tvar cosRotation, sinRotation;\r\n\r\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\r\n\r\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\r\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\r\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\r\n\t\t\t\tcosRotation = Math.cos(angleRadians);\r\n\t\t\t\tsinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\r\n\t\t\t\t\t// go back one step\r\n\t\t\t\t\tlabelRotation--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelRotation++;\r\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = opts.display;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\r\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\r\n\t\t} else {\r\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t} else {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Are we showing a title for the scale?\r\n\t\tif (scaleLabelOpts.display && display) {\r\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\r\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\r\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize.height += deltaHeight;\r\n\t\t\t} else {\r\n\t\t\t\tminSize.width += deltaHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing them\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\r\n\t\t\tvar lineSpace = tickFont.size * 0.5;\r\n\t\t\tvar tickPadding = me.options.ticks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\r\n\r\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\t// TODO - improve this calculation\r\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\r\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\r\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\r\n\t\t\t\t\t+ lineSpace; // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tme.ctx.font = tickFont.font;\r\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\r\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (me.labelRotation !== 0) {\r\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tif (tickOpts.mirror) {\r\n\t\t\t\t\tlargestTextWidth = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\r\n\r\n\t\t\t\tme.paddingTop = tickFont.size / 2;\r\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\r\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\r\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\r\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn (this.options.fullWidth);\r\n\t},\r\n\r\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\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (helpers.isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel += tickWidth / 2;\r\n\t\t\t}\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(pixel);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\r\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\treturn me.top + (decimal * me.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar skipRatio;\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar optionTicks = me.options.ticks.minor;\r\n\t\tvar tickCount = ticks.length;\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\r\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\r\n\t\tvar result = [];\r\n\t\tvar i, tick, shouldSkip;\r\n\r\n\t\t// figure out the maximum number of gridlines to show\r\n\t\tvar maxTicks;\r\n\t\tif (optionTicks.maxTicksLimit) {\r\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\r\n\t\t}\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tskipRatio = false;\r\n\r\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\r\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\r\n\t\t\t}\r\n\r\n\t\t\t// if they defined a max number of optionTicks,\r\n\t\t\t// increase skipRatio until that number is met\r\n\t\t\tif (maxTicks && tickCount > maxTicks) {\r\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < tickCount; i++) {\r\n\t\t\ttick = ticks[i];\r\n\r\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\r\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\r\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\r\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\r\n\t\t\t\tdelete tick.label;\r\n\t\t\t}\r\n\t\t\tresult.push(tick);\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\r\n\t// Actually draw the scale on the canvas\r\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tif (!options.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar context = me.ctx;\r\n\t\tvar globalDefaults = defaults.global;\r\n\t\tvar optionTicks = options.ticks.minor;\r\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\r\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar tickFont = parseFontOptions(optionTicks);\r\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\r\n\r\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\r\n\r\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\r\n\t\tvar itemsToDraw = [];\r\n\r\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\r\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\r\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\r\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\r\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\r\n\r\n\t\thelpers.each(ticks, function(tick, index) {\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar label = tick.label;\r\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\r\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\r\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\r\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\r\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\r\n\t\t\t}\r\n\r\n\t\t\t// Common properties\r\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\r\n\t\t\tvar textAlign = 'middle';\r\n\t\t\tvar textBaseline = 'middle';\r\n\t\t\tvar tickPadding = optionTicks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tvar labelYOffset = tl + tickPadding;\r\n\r\n\t\t\t\tif (options.position === 'bottom') {\r\n\t\t\t\t\t// bottom\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\r\n\t\t\t\t\tlabelY = me.top + labelYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// top\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\r\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (xLineValue < me.left) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\r\n\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\r\n\t\t\t\tty1 = yTickStart;\r\n\t\t\t\tty2 = yTickEnd;\r\n\t\t\t\ty1 = chartArea.top;\r\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tvar labelXOffset;\r\n\r\n\t\t\t\tif (optionTicks.mirror) {\r\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\r\n\t\t\t\t\tlabelXOffset = tickPadding;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\r\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\r\n\r\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (yLineValue < me.top) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\r\n\r\n\t\t\t\ttx1 = xTickStart;\r\n\t\t\t\ttx2 = xTickEnd;\r\n\t\t\t\tx1 = chartArea.left;\r\n\t\t\t\tx2 = chartArea.right + axisWidth;\r\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titemsToDraw.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\tlabelX: labelX,\r\n\t\t\t\tlabelY: labelY,\r\n\t\t\t\tglWidth: lineWidth,\r\n\t\t\t\tglColor: lineColor,\r\n\t\t\t\tglBorderDash: borderDash,\r\n\t\t\t\tglBorderDashOffset: borderDashOffset,\r\n\t\t\t\trotation: -1 * labelRotationRadians,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tmajor: tick.major,\r\n\t\t\t\ttextBaseline: textBaseline,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\r\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\r\n\t\t\tif (gridLines.display) {\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\r\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\r\n\t\t\t\tif (context.setLineDash) {\r\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\r\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\r\n\t\t\tif (optionTicks.display) {\r\n\t\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\r\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\r\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\r\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\r\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\r\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\r\n\r\n\t\t\t\tvar label = itemToDraw.label;\r\n\t\t\t\tif (helpers.isArray(label)) {\r\n\t\t\t\t\tvar lineCount = label.length;\r\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\r\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\r\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\r\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\r\n\t\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.fillText(label, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleLabel.display) {\r\n\t\t\t// Draw the scale label\r\n\t\t\tvar scaleLabelX;\r\n\t\t\tvar scaleLabelY;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\r\n\t\t\t\tscaleLabelY = options.position === 'bottom'\r\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\r\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.save();\r\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\r\n\t\t\tcontext.rotate(rotation);\r\n\t\t\tcontext.textAlign = 'center';\r\n\t\t\tcontext.textBaseline = 'middle';\r\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\t\tcontext.font = scaleLabelFont.font;\r\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\r\n\t\t\tcontext.restore();\r\n\t\t}\r\n\r\n\t\tif (gridLines.drawBorder) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\r\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tvar x1 = me.left;\r\n\t\t\tvar x2 = me.right + axisWidth;\r\n\t\t\tvar y1 = me.top;\r\n\t\t\tvar y2 = me.bottom + axisWidth;\r\n\r\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\r\n\t\t\t\ty1 += aliasPixel;\r\n\t\t\t\ty2 += aliasPixel;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\r\n\t\t\t\tx1 += aliasPixel;\r\n\t\t\t\tx2 += aliasPixel;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.beginPath();\r\n\t\t\tcontext.moveTo(x1, y1);\r\n\t\t\tcontext.lineTo(x2, y2);\r\n\t\t\tcontext.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nmodule.exports = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tlayouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {String|Array} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {Number} the value to be formatted\r\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {Array} the list of ticks being converted\r\n\t\t * @return {String} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\r\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],36:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\r\n\t\t\t\t\tif (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers.noop,\r\n\t\t\tfooter: helpers.noop,\r\n\t\t\tafterFooter: helpers.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {Point} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: Math.round(x / count),\r\n\t\t\ty: Math.round(y / count)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\r\n\t * @returns {Point} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n/**\r\n * Helper method to merge the opacity into a color\r\n */\r\nfunction mergeOpacity(colorString, opacity) {\r\n\tvar color = helpers.color(colorString);\r\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\r\n}\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {String} value - The value to split by newline.\r\n * @returns {Array} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n// Private helper to create a tooltip item model\r\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\r\n// @return : new tooltip item\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {Object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = defaults.global;\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers.each(body, function(bodyItem) {\r\n\t\thelpers.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\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\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\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\r\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\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\r\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx, opacity) {\r\n\t\tvar title = vm.title;\r\n\r\n\t\tif (title.length) {\r\n\t\t\tctx.textAlign = vm._titleAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tvar titleFontSize = vm.titleFontSize;\r\n\t\t\tvar titleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tvar i, len;\r\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\r\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === title.length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx, opacity) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar body = vm.body;\r\n\r\n\t\tctx.textAlign = vm._bodyAlign;\r\n\t\tctx.textBaseline = 'top';\r\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\t// Before Body\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\r\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\thelpers.each(body, function(bodyItem, i) {\r\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\thelpers.each(bodyItem.lines, function(line) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\r\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(line);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\r\n\t\t});\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx, opacity) {\r\n\t\tvar footer = vm.footer;\r\n\r\n\t\tif (footer.length) {\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = vm._footerAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\thelpers.each(footer, function(line) {\r\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\r\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\r\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\r\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.x += vm.xPadding;\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {Boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nexports.positioners = positioners;\r\n\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar\tangle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar sA = vm.startAngle;\r\n\t\tvar eA = vm.endAngle;\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\r\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\r\n\r\n\t\tctx.closePath();\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\r\n\t\tctx.fill();\r\n\t\tctx.lineJoin = 'bevel';\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar globalDefaults = defaults.global;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: globalDefaults.defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar index, current, previous, currentVM;\r\n\r\n\t\t// If we are looping, adding the first point again\r\n\t\tif (me._loop && points.length) {\r\n\t\t\tpoints.push(points[0]);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\t\tlastDrawnIndex = -1;\r\n\r\n\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\tcurrent = points[index];\r\n\t\t\tprevious = helpers.previousItem(points, index);\r\n\t\t\tcurrentVM = current._view;\r\n\r\n\t\t\t// First point moves to it's starting position no matter what\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\r\n\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Line to next point\r\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar defaultColor = defaults.global.defaultColor;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar model = this._model;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: defaults.global.defaultColor,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(bar) {\r\n\treturn bar._view.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(bar) {\r\n\tvar vm = bar._view;\r\n\tvar x1, x2, y1, y2;\r\n\r\n\tif (isVertical(bar)) {\r\n\t\t// vertical\r\n\t\tvar halfWidth = vm.width / 2;\r\n\t\tx1 = vm.x - halfWidth;\r\n\t\tx2 = vm.x + halfWidth;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\t// horizontal bar\r\n\t\tvar halfHeight = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - halfHeight;\r\n\t\ty2 = vm.y + halfHeight;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\r\n\t\tvar borderWidth = vm.borderWidth;\r\n\r\n\t\tif (!vm.horizontal) {\r\n\t\t\t// bar\r\n\t\t\tleft = vm.x - vm.width / 2;\r\n\t\t\tright = vm.x + vm.width / 2;\r\n\t\t\ttop = vm.y;\r\n\t\t\tbottom = vm.base;\r\n\t\t\tsignX = 1;\r\n\t\t\tsignY = bottom > top ? 1 : -1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\r\n\t\t} else {\r\n\t\t\t// horizontal bar\r\n\t\t\tleft = vm.base;\r\n\t\t\tright = vm.x;\r\n\t\t\ttop = vm.y - vm.height / 2;\r\n\t\t\tbottom = vm.y + vm.height / 2;\r\n\t\t\tsignX = right > left ? 1 : -1;\r\n\t\t\tsignY = 1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\r\n\t\t}\r\n\r\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\r\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\r\n\t\tif (borderWidth) {\r\n\t\t\t// borderWidth shold be less than bar width and bar height.\r\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n\t\t\tvar halfStroke = borderWidth / 2;\r\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\r\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n\t\t\t// not become a vertical line?\r\n\t\t\tif (borderLeft !== borderRight) {\r\n\t\t\t\ttop = borderTop;\r\n\t\t\t\tbottom = borderBottom;\r\n\t\t\t}\r\n\t\t\t// not become a horizontal line?\r\n\t\t\tif (borderTop !== borderBottom) {\r\n\t\t\t\tleft = borderLeft;\r\n\t\t\t\tright = borderRight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\r\n\t\t// Corner points, from bottom-left to bottom-right clockwise\r\n\t\t// | 1 2 |\r\n\t\t// | 0 3 |\r\n\t\tvar corners = [\r\n\t\t\t[left, bottom],\r\n\t\t\t[left, top],\r\n\t\t\t[right, top],\r\n\t\t\t[right, bottom]\r\n\t\t];\r\n\r\n\t\t// Find first (starting) corner with fallback to 'bottom'\r\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\r\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\r\n\t\tif (startCorner === -1) {\r\n\t\t\tstartCorner = 0;\r\n\t\t}\r\n\r\n\t\tfunction cornerAt(index) {\r\n\t\t\treturn corners[(startCorner + index) % 4];\r\n\t\t}\r\n\r\n\t\t// Draw rectangle from 'startCorner'\r\n\t\tvar corner = cornerAt(0);\r\n\t\tctx.moveTo(corner[0], corner[1]);\r\n\r\n\t\tfor (var i = 1; i < 4; i++) {\r\n\t\t\tcorner = cornerAt(i);\r\n\t\t\tctx.lineTo(corner[0], corner[1]);\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tif (borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar inRange = false;\r\n\r\n\t\tif (this._view) {\r\n\t\t\tvar bounds = getBarBounds(this);\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar inRange = false;\r\n\t\tvar bounds = getBarBounds(me);\r\n\r\n\t\tif (isVertical(me)) {\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t\t} else {\r\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(this)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.Arc = require(37);\r\nmodule.exports.Line = require(38);\r\nmodule.exports.Point = require(39);\r\nmodule.exports.Rectangle = require(40);\r\n\r\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports = module.exports = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} width - The rectangle's width.\r\n\t * @param {Number} height - The rectangle's height.\r\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\r\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\r\n\t\t\tvar epsilon = 0.0000001;\r\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\r\n\r\n\t\t\tctx.moveTo(x + r, y);\r\n\t\t\tctx.lineTo(x + width - r, y);\r\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\r\n\t\t\tctx.lineTo(x + width, y + height - r);\r\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\r\n\t\t\tctx.lineTo(x + r, y + height);\r\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\r\n\t\t\tctx.lineTo(x, y + r);\r\n\t\t\tctx.arcTo(x, y, x + r, y, r);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\r\n\t\trotation = rotation || 0;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(x, y);\r\n\t\tctx.rotate(rotation * Math.PI / 180);\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\r\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\r\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(0, -2 * height / 3);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\tvar offset = radius / Math.SQRT2;\r\n\t\t\tvar leftX = -offset;\r\n\t\t\tvar topY = -offset;\r\n\t\t\tvar sideSize = Math.SQRT2 * radius;\r\n\r\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\r\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\r\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\r\n\t\t\t// results visually closer to the previous impl.\r\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRot':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.moveTo(-size, 0);\r\n\t\t\tctx.lineTo(0, size);\r\n\t\t\tctx.lineTo(size, 0);\r\n\t\t\tctx.lineTo(0, -size);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'cross':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(0, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tif (target.steppedLine) {\r\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.clear = exports.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports.roundedRect.apply(exports, arguments);\r\n};\r\n\r\n},{\"43\":43}],43:[function(require,module,exports){\r\n'use strict';\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {Number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: Array.isArray ? Array.isArray : function(value) {\r\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {Number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {Function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {Object|Array} loopable - The object or array to be iterated.\r\n\t * @param {Function} fn - The function to call for each item.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see http://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {Boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = {};\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @param {Object} [options] - Merging options:\r\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {Object} target - The target object in which all objects are merged into.\r\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\textend: function(target) {\r\n\t\tvar setFn = function(value, key) {\r\n\t\t\ttarget[key] = value;\r\n\t\t};\r\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\r\n\t\t\thelpers.each(arguments[i], setFn);\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t}\r\n};\r\n\r\nmodule.exports = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n},{}],44:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nmodule.exports = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.easingEffects = effects;\r\n\r\n},{\"43\":43}],45:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\r\n\t * @param {Object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {Number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index) {\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"43\":43}],46:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = require(43);\r\nmodule.exports.easing = require(44);\r\nmodule.exports.canvas = require(42);\r\nmodule.exports.options = require(45);\r\n\r\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\r\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nmodule.exports = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\r\n\r\n},{}],48:[function(require,module,exports){\r\n/**\r\n * Chart.Platform implementation for targeting a web browser\r\n */\r\n\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {Number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addEventListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeEventListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar resizer = document.createElement('div');\r\n\tvar cls = CSS_PREFIX + 'size-monitor';\r\n\tvar maxSize = 1000000;\r\n\tvar style =\r\n\t\t'position:absolute;' +\r\n\t\t'left:0;' +\r\n\t\t'top:0;' +\r\n\t\t'right:0;' +\r\n\t\t'bottom:0;' +\r\n\t\t'overflow:hidden;' +\r\n\t\t'pointer-events:none;' +\r\n\t\t'visibility:hidden;' +\r\n\t\t'z-index:-1;';\r\n\r\n\tresizer.style.cssText = style;\r\n\tresizer.className = cls;\r\n\tresizer.innerHTML =\r\n\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t'
' +\r\n\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t'
';\r\n\r\n\tvar expand = resizer.childNodes[0];\r\n\tvar shrink = resizer.childNodes[1];\r\n\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddEventListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveEventListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\treturn listener(createEvent('resize', chart));\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\nfunction injectCSS(platform, css) {\r\n\t// http://stackoverflow.com/q/3922139\r\n\tvar style = platform._style || document.createElement('style');\r\n\tif (!platform._style) {\r\n\t\tplatform._style = style;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\r\n\t}\r\n\r\n\tstyle.appendChild(document.createTextNode(css));\r\n}\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\tinitialize: function() {\r\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\r\n\r\n\t\tinjectCSS(this,\r\n\t\t\t// DOM rendering detection\r\n\t\t\t// https://davidwalsh.name/detect-node-insertion\r\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\r\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t'}'\r\n\t\t);\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddEventListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas, listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveEventListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.addEvent = addEventListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.removeEvent = removeEventListener;\r\n\r\n},{\"46\":46}],49:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar basic = require(47);\r\nvar dom = require(48);\r\n\r\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = dom._enabled ? dom : basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nmodule.exports = helpers.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {Object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {Boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {String} type - The ({@link IEvent}) type to listen for\r\n\t * @param {Function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart -Chart from which to remove the listener\r\n\t * @param {String} type - The ({@link IEvent}) type to remove\r\n\t * @param {Function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\r\n\r\n/**\r\n * @interface IPlatform\r\n * Allows abstracting platform dependencies away from the chart\r\n * @borrows Chart.platform.acquireContext as acquireContext\r\n * @borrows Chart.platform.releaseContext as releaseContext\r\n * @borrows Chart.platform.addEventListener as addEventListener\r\n * @borrows Chart.platform.removeEventListener as removeEventListener\r\n */\r\n\r\n/**\r\n * @interface IEvent\r\n * @prop {String} type - The event type name, possible values are:\r\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\r\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\r\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\r\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\r\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\r\n */\r\n\r\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.filler = require(51);\r\nmodule.exports.legend = require(52);\r\nmodule.exports.title = require(53);\r\n\r\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\r\n/**\r\n * Plugin based on discussion from the following Chart.js issues:\r\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\r\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\r\n */\r\n\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePosition) {\r\n\t\ttarget = scale.getBasePosition();\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (typeof target === 'number' && isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetDraw: function(chart, args) {\r\n\t\tvar meta = args.meta.$filler;\r\n\t\tif (!meta) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar el = meta.el;\r\n\t\tvar view = el._view;\r\n\t\tvar points = el._children || [];\r\n\t\tvar mapper = meta.mapper;\r\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\r\n\r\n\t\tif (mapper && color && points.length) {\r\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\thelpers.canvas.unclipArea(ctx);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: dataset.label,\r\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\r\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: dataset.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\r\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: i\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this) : [];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\r\n\t\t\ttext.push('
  • ');\r\n\t\t\tif (chart.data.datasets[i].label) {\r\n\t\t\t\ttext.push(chart.data.datasets[i].label);\r\n\t\t\t}\r\n\t\t\ttext.push('
  • ');\r\n\t\t}\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param labelopts {Object} the label options on the legend\r\n * @param fontSize {Number} the label font size\r\n * @return {Number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle ?\r\n\t\tfontSize * Math.SQRT2 :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = Element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\thelpers.extend(this, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tthis.legendHitBoxes = [];\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tthis.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (display) {\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// Labels\r\n\r\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\r\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\r\n\r\n\t\t\t\tctx.textAlign = 'left';\r\n\t\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\r\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\r\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\t\tvar currentColWidth = 0;\r\n\t\t\t\tvar currentColHeight = 0;\r\n\t\t\t\tvar itemHeight = fontSize + vPadding;\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\t// If too tall, go to new column\r\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\r\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\r\n\t\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Get max width\r\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\t\tcurrentColHeight += itemHeight;\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttotalWidth += currentColWidth;\r\n\t\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\t\tminSize.width += totalWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar lineDefault = globalDefault.elements.line;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar ctx = me.ctx;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\r\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar cursor;\r\n\r\n\t\t\t// Canvas setup\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.lineWidth = 0.5;\r\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t\t// current position\r\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set the ctx for the box\r\n\t\t\t\tctx.save();\r\n\r\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\r\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\r\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\r\n\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\r\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\r\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\r\n\t\t\t\t\tvar centerX = x + offSet;\r\n\t\t\t\t\tvar centerY = y + offSet;\r\n\r\n\t\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\t\tif (!isLineWidthZero) {\r\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.restore();\r\n\t\t\t};\r\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\r\n\t\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\t\tctx.beginPath();\r\n\t\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\r\n\t\t\t\t\tctx.stroke();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\t\tvar x = cursor.x;\r\n\t\t\t\tvar y = cursor.y;\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tif (x + width >= legendWidth) {\r\n\t\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\r\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrawLegendBox(x, y, legendItem);\r\n\r\n\t\t\t\thitboxes[i].left = x;\r\n\t\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t\t// Fill the actual label\r\n\t\t\t\tfillText(x, y, legendItem, textWidth);\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @return {Boolean} true if a change occured\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar changed = false;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\tvar x = e.x;\r\n\t\tvar y = e.y;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tvar lh = me.legendHitBoxes;\r\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\r\n\t\t\t\tvar hitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\tif (type === 'click') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else if (type === 'mousemove') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, legend, legendOpts);\r\n\tlayouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tlayouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tlineHeight: 1.2,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = Element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: noop,\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar display = opts.display;\r\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\r\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = textSize;\r\n\t\t} else {\r\n\t\t\tminSize.width = textSize;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar globalDefaults = defaults.global;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar top = me.top;\r\n\t\t\tvar left = me.left;\r\n\t\t\tvar bottom = me.bottom;\r\n\t\t\tvar right = me.right;\r\n\t\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\r\n\t\t\tctx.font = titleFont;\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\t\ttitleY = top + offset;\r\n\t\t\t\tmaxWidth = right - left;\r\n\t\t\t} else {\r\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\t\tmaxWidth = bottom - top;\r\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t\t}\r\n\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(titleX, titleY);\r\n\t\t\tctx.rotate(rotation);\r\n\t\t\tctx.textAlign = 'center';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tvar text = opts.text;\r\n\t\t\tif (helpers.isArray(text)) {\r\n\t\t\t\tvar y = 0;\r\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, title, titleOpts);\r\n\tlayouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tlayouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Default config for a category scale\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom'\r\n\t};\r\n\r\n\tvar DatasetScale = Scale.extend({\r\n\t\t/**\r\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\r\n\t\t* else fall back to data.labels\r\n\t\t* @private\r\n\t\t*/\r\n\t\tgetLabels: function() {\r\n\t\t\tvar data = this.chart.data;\r\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\tme.minIndex = 0;\r\n\t\t\tme.maxIndex = labels.length - 1;\r\n\t\t\tvar findIndex;\r\n\r\n\t\t\tif (me.options.ticks.min !== undefined) {\r\n\t\t\t\t// user specified min value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\r\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.options.ticks.max !== undefined) {\r\n\t\t\t\t// user specified max value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\r\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\r\n\t\t\t}\r\n\r\n\t\t\tme.min = labels[me.minIndex];\r\n\t\t\tme.max = labels[me.maxIndex];\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t\tif (data.yLabels && !isHorizontal) {\r\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\r\n\t\t\t}\r\n\t\t\treturn me.ticks[index - me.minIndex];\r\n\t\t},\r\n\r\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\t\tgetPixelForValue: function(value, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\t// 1 is added because we need the length but we have the indexes\r\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\r\n\r\n\t\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t\t// not the index of the scale. We need to change that.\r\n\t\t\tvar valueCategory;\r\n\t\t\tif (value !== undefined && value !== null) {\r\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t\t}\r\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\t\tvar labels = me.getLabels();\r\n\t\t\t\tvalue = valueCategory || value;\r\n\t\t\t\tvar idx = labels.indexOf(value);\r\n\t\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\r\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\r\n\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\twidthOffset += (valueWidth / 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn me.left + Math.round(widthOffset);\r\n\t\t\t}\r\n\t\t\tvar valueHeight = me.height / offsetAmt;\r\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\theightOffset += (valueHeight / 2);\r\n\t\t\t}\r\n\r\n\t\t\treturn me.top + Math.round(heightOffset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\tvar value;\r\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar horz = me.isHorizontal();\r\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\r\n\r\n\t\t\tpixel -= horz ? me.left : me.top;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel -= (valueDimension / 2);\r\n\t\t\t}\r\n\r\n\t\t\tif (pixel <= 0) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\r\n\t\t\t}\r\n\r\n\t\t\treturn value + me.minIndex;\r\n\t\t},\r\n\t\tgetBasePixel: function() {\r\n\t\t\treturn this.bottom;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t}\r\n\t};\r\n\r\n\tvar LinearScale = Chart.LinearScaleBase.extend({\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar DEFAULT_MIN = 0;\r\n\t\t\tvar DEFAULT_MAX = 1;\r\n\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// First Calculate the range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = {\r\n\t\t\t\t\t\t\tpositiveValues: [],\r\n\t\t\t\t\t\t\tnegativeValues: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store these per type\r\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\r\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\r\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\r\n\r\n\t\t\t\t\t\t\tif (opts.relativePoints) {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\r\n\t\t\t\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\r\n\t\t\t\t\tvar minVal = helpers.min(values);\r\n\t\t\t\t\tvar maxVal = helpers.max(values);\r\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar maxTicks;\r\n\t\t\tvar me = this;\r\n\t\t\tvar tickOpts = me.options.ticks;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\r\n\t\t\t} else {\r\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\r\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\r\n\t\t\t}\r\n\r\n\t\t\treturn maxTicks;\r\n\t\t},\r\n\t\t// Called after the ticks are built. We need\r\n\t\thandleDirectionalChanges: function() {\r\n\t\t\tif (!this.isHorizontal()) {\r\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\t\tthis.ticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\t// Utils\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\t// This must be called after fit has been run so that\r\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\r\n\t\t\tvar me = this;\r\n\t\t\tvar start = me.start;\r\n\r\n\t\t\tvar rightValue = +me.getRightValue(value);\r\n\t\t\tvar pixel;\r\n\t\t\tvar range = me.end - start;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\r\n\t\t\t} else {\r\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\r\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\r\n\t\t\treturn me.start + ((me.end - me.start) * offset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar factor;\r\n\tvar precision;\r\n\tvar spacing;\r\n\r\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\r\n\t\tspacing = generationOptions.stepSize;\r\n\t} else {\r\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\r\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\r\n\r\n\t\tprecision = generationOptions.precision;\r\n\t\tif (precision !== undefined) {\r\n\t\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\t\tfactor = Math.pow(10, precision);\r\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t\t}\r\n\t}\r\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\r\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\r\n\t\t\tniceMin = generationOptions.min;\r\n\t\t\tniceMax = generationOptions.max;\r\n\t\t}\r\n\t}\r\n\r\n\tvar numSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tprecision = 1;\r\n\tif (spacing < 1) {\r\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\r\n\t\tniceMin = Math.round(niceMin * precision) / precision;\r\n\t\tniceMax = Math.round(niceMax * precision) / precision;\r\n\t}\r\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\r\n\t}\r\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar noop = helpers.noop;\r\n\r\n\tChart.LinearScaleBase = Scale.extend({\r\n\t\tgetRightValue: function(value) {\r\n\t\t\tif (typeof value === 'string') {\r\n\t\t\t\treturn +value;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\r\n\t\t},\r\n\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t\t// axis, they can manually override it\r\n\t\t\tif (tickOpts.beginAtZero) {\r\n\t\t\t\tvar minSign = helpers.sign(me.min);\r\n\t\t\t\tvar maxSign = helpers.sign(me.max);\r\n\r\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t\t// move the top up to 0\r\n\t\t\t\t\tme.max = 0;\r\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t\t// move the bottom down to 0\r\n\t\t\t\t\tme.min = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\t\tif (tickOpts.min !== undefined) {\r\n\t\t\t\tme.min = tickOpts.min;\r\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (tickOpts.max !== undefined) {\r\n\t\t\t\tme.max = tickOpts.max;\r\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setMin !== setMax) {\r\n\t\t\t\t// We set the min or the max but not both.\r\n\t\t\t\t// So ensure that our range is good\r\n\t\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\t\tif (me.min >= me.max) {\r\n\t\t\t\t\tif (setMin) {\r\n\t\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tme.max++;\r\n\r\n\t\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\t\tme.min--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetTickLimit: noop,\r\n\t\thandleDirectionalChanges: noop,\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\t\tvar maxTicks = me.getTickLimit();\r\n\t\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\t\tvar numericGeneratorOptions = {\r\n\t\t\t\tmaxTicks: maxTicks,\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max,\r\n\t\t\t\tprecision: tickOpts.precision,\r\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\t\tme.handleDirectionalChanges();\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\tticks.reverse();\r\n\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t// the graph\r\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(helpers.log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.logarithmic\r\n\t\t}\r\n\t};\r\n\r\n\tvar LogarithmicScale = Scale.extend({\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate Range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\t\t\tme.minNotZero = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\r\n\t\t\t\t\t\t\tvalues[index] += value;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\r\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\r\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\r\n\t\t\t\t\t\t\t\tme.minNotZero = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar DEFAULT_MIN = 1;\r\n\t\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\r\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\r\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\r\n\t\t\t}\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = me.min !== 0\r\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\r\n\t\t\t\t\t: DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t\tif (me.minNotZero === null) {\r\n\t\t\t\tif (me.min > 0) {\r\n\t\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t\t} else if (me.max < 1) {\r\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\t\tvar generationOptions = {\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\treverse = !reverse;\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t\tif (reverse) {\r\n\t\t\t\tticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\r\n\t\t},\r\n\t\t// Get the correct tooltip label\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\r\n\t\t},\r\n\t\t/**\r\n\t\t * Returns the value of the first tick.\r\n\t\t * @param {Number} value - The minimum not zero value.\r\n\t\t * @return {Number} The first tick value.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getFirstTickValue: function(value) {\r\n\t\t\tvar exp = Math.floor(helpers.log10(value));\r\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\t\treturn significand * Math.pow(10, exp);\r\n\t\t},\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar offset = 0;\r\n\t\t\tvar innerDimension, pixel, start, end, sign;\r\n\r\n\t\t\tvalue = +me.getRightValue(value);\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t\tsign = -1;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t\tsign = 1;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tpixel = reverse ? me.right : me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\r\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\toffset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (value !== 0) {\r\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\r\n\t\t\t\t}\r\n\t\t\t\tpixel += sign * offset;\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar innerDimension, start, end, value;\r\n\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tvalue -= offset;\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tvalue *= log10(end) - log10(start);\r\n\t\t\t\tvalue /= innerDimension;\r\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar globalDefaults = defaults.global;\r\n\r\n\tvar defaultConfig = {\r\n\t\tdisplay: true,\r\n\r\n\t\t// Boolean - Whether to animate scaling the chart from the centre\r\n\t\tanimate: true,\r\n\t\tposition: 'chartArea',\r\n\r\n\t\tangleLines: {\r\n\t\t\tdisplay: true,\r\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\t\tlineWidth: 1\r\n\t\t},\r\n\r\n\t\tgridLines: {\r\n\t\t\tcircular: false\r\n\t\t},\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\t// Boolean - Show a backdrop to the scale label\r\n\t\t\tshowLabelBackdrop: true,\r\n\r\n\t\t\t// String - The colour of the label backdrop\r\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\t\tbackdropPaddingY: 2,\r\n\r\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\t\tbackdropPaddingX: 2,\r\n\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t},\r\n\r\n\t\tpointLabels: {\r\n\t\t\t// Boolean - if true, show point labels\r\n\t\t\tdisplay: true,\r\n\r\n\t\t\t// Number - Point label font size in pixels\r\n\t\t\tfontSize: 10,\r\n\r\n\t\t\t// Function - Used to convert point labels\r\n\t\t\tcallback: function(label) {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getValueCount(scale) {\r\n\t\tvar opts = scale.options;\r\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\r\n\t}\r\n\r\n\tfunction getPointLabelFontOptions(scale) {\r\n\t\tvar pointLabelOptions = scale.options.pointLabels;\r\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\treturn {\r\n\t\t\tsize: fontSize,\r\n\t\t\tstyle: fontStyle,\r\n\t\t\tfamily: fontFamily,\r\n\t\t\tfont: font\r\n\t\t};\r\n\t}\r\n\r\n\tfunction measureLabelSize(ctx, fontSize, label) {\r\n\t\tif (helpers.isArray(label)) {\r\n\t\t\treturn {\r\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\r\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tw: ctx.measureText(label).width,\r\n\t\t\th: fontSize\r\n\t\t};\r\n\t}\r\n\r\n\tfunction determineLimits(angle, pos, size, min, max) {\r\n\t\tif (angle === min || angle === max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - (size / 2),\r\n\t\t\t\tend: pos + (size / 2)\r\n\t\t\t};\r\n\t\t} else if (angle < min || angle > max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - size - 5,\r\n\t\t\t\tend: pos\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart: pos,\r\n\t\t\tend: pos + size + 5\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with point labels\r\n\t */\r\n\tfunction fitWithPointLabels(scale) {\r\n\t\t/*\r\n\t\t * Right, this is really confusing and there is a lot of maths going on here\r\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t\t *\r\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t\t *\r\n\t\t * Solution:\r\n\t\t *\r\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\r\n\t\t * at each index we check if the text overlaps.\r\n\t\t *\r\n\t\t * Where it does, we store that angle and that index.\r\n\t\t *\r\n\t\t * After finding the largest index and angle we calculate how much we need to remove\r\n\t\t * from the shape radius to move the point inwards by that x.\r\n\t\t *\r\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t\t * along with labels.\r\n\t\t *\r\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t\t *\r\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t\t * and position it in the most space efficient manner\r\n\t\t *\r\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\t\t */\r\n\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tvar furthestLimits = {\r\n\t\t\tr: scale.width,\r\n\t\t\tl: 0,\r\n\t\t\tt: scale.height,\r\n\t\t\tb: 0\r\n\t\t};\r\n\t\tvar furthestAngles = {};\r\n\t\tvar i, textSize, pointPosition;\r\n\r\n\t\tscale.ctx.font = plFont.font;\r\n\t\tscale._pointLabelSizes = [];\r\n\r\n\t\tvar valueCount = getValueCount(scale);\r\n\t\tfor (i = 0; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\r\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\r\n\t\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\r\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with no point labels\r\n\t */\r\n\tfunction fit(scale) {\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\r\n\t\tscale.setCenterPoint(0, 0, 0, 0);\r\n\t}\r\n\r\n\tfunction getTextAlignForAngle(angle) {\r\n\t\tif (angle === 0 || angle === 180) {\r\n\t\t\treturn 'center';\r\n\t\t} else if (angle < 180) {\r\n\t\t\treturn 'left';\r\n\t\t}\r\n\r\n\t\treturn 'right';\r\n\t}\r\n\r\n\tfunction fillText(ctx, text, position, fontSize) {\r\n\t\tif (helpers.isArray(text)) {\r\n\t\t\tvar y = position.y;\r\n\t\t\tvar spacing = 1.5 * fontSize;\r\n\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\t\ty += spacing;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, position.x, position.y);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\t\tif (angle === 90 || angle === 270) {\r\n\t\t\tposition.y -= (textSize.h / 2);\r\n\t\t} else if (angle > 270 || angle < 90) {\r\n\t\t\tposition.y -= textSize.h;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawPointLabels(scale) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tvar opts = scale.options;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar pointLabelOpts = opts.pointLabels;\r\n\r\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\r\n\t\tctx.strokeStyle = angleLineOpts.color;\r\n\r\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\r\n\t\t// Point Label Font\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\tctx.textBaseline = 'top';\r\n\r\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\r\n\t\t\tif (angleLineOpts.display) {\r\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\r\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.closePath();\r\n\t\t\t}\r\n\r\n\t\t\tif (pointLabelOpts.display) {\r\n\t\t\t\t// Extra 3px out for some label spacing\r\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\r\n\r\n\t\t\t\t// Keep this in loop since we may support array properties here\r\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\r\n\t\t\t\tctx.font = plFont.font;\r\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\r\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\r\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\r\n\r\n\t\tif (scale.options.gridLines.circular) {\r\n\t\t\t// Draw circular arcs between the points\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t} else {\r\n\t\t\t// Draw straight lines connecting each index\r\n\t\t\tvar valueCount = getValueCount(scale);\r\n\r\n\t\t\tif (valueCount === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tctx.beginPath();\r\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\r\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t\t}\r\n\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction numberOrZero(param) {\r\n\t\treturn helpers.isNumber(param) ? param : 0;\r\n\t}\r\n\r\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\r\n\t\tsetDimensions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\t// Set the unconstrained dimension before label rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.height = me.maxHeight;\r\n\t\t\tme.xCenter = Math.round(me.width / 2);\r\n\t\t\tme.yCenter = Math.round(me.height / 2);\r\n\r\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\r\n\t\t},\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tme.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar tickOpts = this.options.ticks;\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t\t// Point labels\r\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tfit: function() {\r\n\t\t\tif (this.options.pointLabels.display) {\r\n\t\t\t\tfitWithPointLabels(this);\r\n\t\t\t} else {\r\n\t\t\t\tfit(this);\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set radius reductions and determine new radius and center point\r\n\t\t * @private\r\n\t\t */\r\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\t\tme.drawingArea = Math.min(\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t\t},\r\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\r\n\r\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\r\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\r\n\t\t},\r\n\r\n\t\tgetIndexAngle: function(index) {\r\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\r\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\r\n\t\t\t\tthis.chart.options.startAngle :\r\n\t\t\t\t0;\r\n\r\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\r\n\r\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\t\treturn index * angleMultiplier + startAngleRadians;\r\n\t\t},\r\n\t\tgetDistanceFromCenterForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (value === null) {\r\n\t\t\t\treturn 0; // null always in center\r\n\t\t\t}\r\n\r\n\t\t\t// Take into account half font size + the yPadding of the top value\r\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\t\tif (me.options.ticks.reverse) {\r\n\t\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t\t}\r\n\t\t\treturn (value - me.min) * scalingFactor;\r\n\t\t},\r\n\t\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\t\treturn {\r\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\r\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\r\n\t\t\t};\r\n\t\t},\r\n\t\tgetPointPositionForValue: function(index, value) {\r\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t\t},\r\n\r\n\t\tgetBasePosition: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\r\n\t\t\treturn me.getPointPositionForValue(0,\r\n\t\t\t\tme.beginAtZero ? 0 :\r\n\t\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t\t0);\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar gridLineOpts = opts.gridLines;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t\t\tif (opts.display) {\r\n\t\t\t\tvar ctx = me.ctx;\r\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\r\n\r\n\t\t\t\t// Tick Font\r\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\r\n\r\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\r\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\r\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\r\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\t\t\t\t// Draw circular lines around the scale\r\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\r\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (tickOpts.display) {\r\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\r\n\r\n\t\t\t\t\t\t\tctx.save();\r\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\t\t\t\t\t\tctx.rotate(startAngle);\r\n\r\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\r\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\t\t\t\t\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tctx.textAlign = 'center';\r\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\r\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\r\n\t\t\t\t\t\t\tctx.restore();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\r\n\t\t\t\t\tdrawPointLabels(me);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar moment = require(1);\r\nmoment = typeof moment === 'function' ? moment : window.moment;\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: [1, 2, 3, 6, 12]\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: [1, 2, 5]\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: [1, 2, 3]\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\n/**\r\n * Convert the given value to a moment object using the given time options.\r\n * @see http://momentjs.com/docs/#/parsing/\r\n */\r\nfunction momentify(value, options) {\r\n\tvar parser = options.parser;\r\n\tvar format = options.parser || options.format;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\treturn parser(value);\r\n\t}\r\n\r\n\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\treturn moment(value, format);\r\n\t}\r\n\r\n\tif (!(value instanceof moment)) {\r\n\t\tvalue = moment(value);\r\n\t}\r\n\r\n\tif (value.isValid()) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option to convert his inputs.\r\n\tif (typeof format === 'function') {\r\n\t\treturn format(value);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(input, scale) {\r\n\tif (helpers.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = momentify(scale.getRightValue(input), options);\r\n\tif (!value.isValid()) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue.startOf(options.round);\r\n\t}\r\n\r\n\treturn value.valueOf();\r\n}\r\n\r\n/**\r\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\r\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\r\n */\r\nfunction determineStepSize(min, max, unit, capacity) {\r\n\tvar range = max - min;\r\n\tvar interval = INTERVALS[unit];\r\n\tvar milliseconds = interval.size;\r\n\tvar steps = interval.steps;\r\n\tvar i, ilen, factor;\r\n\r\n\tif (!steps) {\r\n\t\treturn Math.ceil(range / (capacity * milliseconds));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\r\n\t\tfactor = steps[i];\r\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn factor;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\r\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\r\n\tvar ilen = UNITS.length;\r\n\tvar i, unit;\r\n\r\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(min, max, capacity, options) {\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar major = determineMajorUnit(minor);\r\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar majorTicksEnabled = options.ticks.major.enabled;\r\n\tvar interval = INTERVALS[minor];\r\n\tvar first = moment(min);\r\n\tvar last = moment(max);\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\tif (!stepSize) {\r\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\r\n\t}\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = first.isoWeekday(weekday);\r\n\t\tlast = last.isoWeekday(weekday);\r\n\t}\r\n\r\n\t// Align first/last ticks on unit\r\n\tfirst = first.startOf(weekday ? 'day' : minor);\r\n\tlast = last.startOf(weekday ? 'day' : minor);\r\n\r\n\t// Make sure that the last tick include max\r\n\tif (last < max) {\r\n\t\tlast.add(1, minor);\r\n\t}\r\n\r\n\ttime = moment(first);\r\n\r\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\r\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\r\n\t\t// we first aligned time on the previous `major` unit then add the number of full\r\n\t\t// stepSize there is between first and the previous major time.\r\n\t\ttime.startOf(major);\r\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\r\n\t}\r\n\r\n\tfor (; time < last; time.add(stepSize, minor)) {\r\n\t\tticks.push(+time);\r\n\t}\r\n\r\n\tticks.push(+time);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the right and left offsets from edges in the form of {left, right}.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar left = 0;\r\n\tvar right = 0;\r\n\tvar upper, lower;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tif (!options.time.min) {\r\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\r\n\t\t\tlower = ticks[0];\r\n\t\t\tleft = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t\tif (!options.time.max) {\r\n\t\t\tupper = ticks[ticks.length - 1];\r\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\r\n\t\t\tright = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {left: left, right: right};\r\n}\r\n\r\nfunction ticksFromTimestamps(values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar i, ilen, value, major;\r\n\r\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: major\r\n\t\t});\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\nfunction determineLabelFormat(data, timeOpts) {\r\n\tvar i, momentDate, hasTime;\r\n\tvar ilen = data.length;\r\n\r\n\t// find the label with the most parts (milliseconds, minutes, etc.)\r\n\t// format all labels with the same level of detail as the most specific label\r\n\tfor (i = 0; i < ilen; i++) {\r\n\t\tmomentDate = momentify(data[i], timeOpts);\r\n\t\tif (momentDate.millisecond() !== 0) {\r\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\r\n\t\t}\r\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\r\n\t\t\thasTime = true;\r\n\t\t}\r\n\t}\r\n\tif (hasTime) {\r\n\t\treturn 'MMM D, YYYY h:mm:ss a';\r\n\t}\r\n\treturn 'MMM D, YYYY';\r\n}\r\n\r\nmodule.exports = function() {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom',\r\n\r\n\t\t/**\r\n\t\t * Data distribution along the scale:\r\n\t\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t\t * - 'series': data are spread at the same distance from each other.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tdistribution: 'linear',\r\n\r\n\t\t/**\r\n\t\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tbounds: 'data',\r\n\r\n\t\ttime: {\r\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\r\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\t\tdisplayFormat: false, // DEPRECATED\r\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\t\tminUnit: 'millisecond',\r\n\r\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\r\n\t\t\tdisplayFormats: {\r\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\r\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\r\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\r\n\t\t\t\thour: 'hA', // 5PM\r\n\t\t\t\tday: 'MMM D', // Sep 4\r\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\r\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\r\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\r\n\t\t\t\tyear: 'YYYY' // 2015\r\n\t\t\t},\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tautoSkip: false,\r\n\r\n\t\t\t/**\r\n\t\t\t * Ticks generation input values:\r\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t\t * @since 2.7.0\r\n\t\t\t */\r\n\t\t\tsource: 'auto',\r\n\r\n\t\t\tmajor: {\r\n\t\t\t\tenabled: false\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar TimeScale = Scale.extend({\r\n\t\tinitialize: function() {\r\n\t\t\tif (!moment) {\r\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\r\n\t\t\t}\r\n\r\n\t\t\tthis.mergeTicksOptions();\r\n\r\n\t\t\tScale.prototype.initialize.call(this);\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\r\n\t\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\t\tif (options.time && options.time.format) {\r\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\r\n\t\t\t}\r\n\r\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Allows data to be referenced via 't' attribute\r\n\t\t */\r\n\t\tgetRightValue: function(rawValue) {\r\n\t\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\t\trawValue = rawValue.t;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar unit = timeOpts.unit || 'day';\r\n\t\t\tvar min = MAX_INTEGER;\r\n\t\t\tvar max = MIN_INTEGER;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar datasets = [];\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\r\n\r\n\t\t\t// Convert labels to timestamps\r\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\r\n\t\t\t}\r\n\r\n\t\t\t// Convert data to timestamps\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\t\tif (helpers.isObject(data[0])) {\r\n\t\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\r\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\r\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (labels.length) {\r\n\t\t\t\t// Sort labels **after** data have been converted\r\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tif (timestamps.length) {\r\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\r\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\r\n\r\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\t\tme.min = Math.min(min, max);\r\n\t\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._horizontal = me.isHorizontal();\r\n\t\t\tme._table = [];\r\n\t\t\tme._timestamps = {\r\n\t\t\t\tdata: timestamps,\r\n\t\t\t\tdatasets: datasets,\r\n\t\t\t\tlabels: labels\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar timeOpts = options.time;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar ticks = [];\r\n\t\t\tvar i, ilen, timestamp;\r\n\r\n\t\t\tswitch (options.ticks.source) {\r\n\t\t\tcase 'data':\r\n\t\t\t\ttimestamps = me._timestamps.data;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'labels':\r\n\t\t\t\ttimestamps = me._timestamps.labels;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'auto':\r\n\t\t\tdefault:\r\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\t\tmin = timestamps[0];\r\n\t\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t\t}\r\n\r\n\t\t\t// Enforce limits with user min/max options\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// Remove ticks outside the min/max range\r\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\t\ttimestamp = timestamps[i];\r\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\t\tticks.push(timestamp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.min = min;\r\n\t\t\tme.max = max;\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\r\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\r\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\r\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\r\n\r\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\t\tif (helpers.isObject(value)) {\r\n\t\t\t\tlabel = me.getRightValue(value);\r\n\t\t\t}\r\n\t\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\r\n\t\t\t}\r\n\t\t\tif (typeof label === 'string') {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\r\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Function to format an individual tick mark\r\n\t\t * @private\r\n\t\t */\r\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar time = tick.valueOf();\r\n\t\t\tvar formats = options.time.displayFormats;\r\n\t\t\tvar minorFormat = formats[me._unit];\r\n\t\t\tvar majorUnit = me._majorUnit;\r\n\t\t\tvar majorFormat = formats[majorUnit];\r\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\r\n\t\t\tvar majorTickOpts = options.ticks.major;\r\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\r\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\r\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\r\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\r\n\r\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t\t},\r\n\r\n\t\tconvertTicksToLabels: function(ticks) {\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\r\n\t\t\t}\r\n\r\n\t\t\treturn labels;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetPixelForOffset: function(time) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\r\n\r\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\r\n\t\t},\r\n\r\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar time = null;\r\n\r\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t\t}\r\n\r\n\t\t\tif (time === null) {\r\n\t\t\t\ttime = parse(value, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (time !== null) {\r\n\t\t\t\treturn me.getPixelForOffset(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\tvar ticks = this.getTicks();\r\n\t\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\t\tnull;\r\n\t\t},\r\n\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\r\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\r\n\r\n\t\t\treturn moment(time);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Crude approximation of what the label width might be\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelWidth: function(label) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar ticksOpts = me.options.ticks;\r\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\r\n\t\t\tvar cosRotation = Math.cos(angle);\r\n\t\t\tvar sinRotation = Math.sin(angle);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\r\n\r\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelCapacity: function(exampleTime) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\r\n\r\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\r\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\r\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\r\n\r\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\r\n\t\t\treturn capacity > 0 ? capacity : 1;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\r\n};\r\n\r\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\r\n * chartjs-plugin-datalabels v0.7.0\r\n * https://chartjs-plugin-datalabels.netlify.com\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT license\r\n */\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\r\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\r\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\r\n}(this, function (Chart) { 'use strict';\r\n\r\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\r\n\r\nvar helpers = Chart.helpers;\r\n\r\nvar devicePixelRatio = (function() {\r\n\tif (typeof window !== 'undefined') {\r\n\t\tif (window.devicePixelRatio) {\r\n\t\t\treturn window.devicePixelRatio;\r\n\t\t}\r\n\r\n\t\t// devicePixelRatio is undefined on IE10\r\n\t\t// https://stackoverflow.com/a/20204180/8837887\r\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\r\n\t\tvar screen = window.screen;\r\n\t\tif (screen) {\r\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\r\n\t\t}\r\n\t}\r\n\r\n\treturn 1;\r\n}());\r\n\r\nvar utils = {\r\n\t// @todo move this in Chart.helpers.toTextLines\r\n\ttoTextLines: function(inputs) {\r\n\t\tvar lines = [];\r\n\t\tvar input;\r\n\r\n\t\tinputs = [].concat(inputs);\r\n\t\twhile (inputs.length) {\r\n\t\t\tinput = inputs.pop();\r\n\t\t\tif (typeof input === 'string') {\r\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\r\n\t\t\t} else if (Array.isArray(input)) {\r\n\t\t\t\tinputs.push.apply(inputs, input);\r\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\r\n\t\t\t\tlines.unshift('' + input);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\r\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n\ttoFontString: function(font) {\r\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (font.style ? font.style + ' ' : '')\r\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t\t+ font.size + 'px '\r\n\t\t\t+ font.family;\r\n\t},\r\n\r\n\t// @todo move this in Chart.helpers.canvas.textSize\r\n\t// @todo cache calls of measureText if font doesn't change?!\r\n\ttextSize: function(ctx, lines, font) {\r\n\t\tvar items = [].concat(lines);\r\n\t\tvar ilen = items.length;\r\n\t\tvar prev = ctx.font;\r\n\t\tvar width = 0;\r\n\t\tvar i;\r\n\r\n\t\tctx.font = font.string;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\r\n\t\t}\r\n\r\n\t\tctx.font = prev;\r\n\r\n\t\treturn {\r\n\t\t\theight: ilen * font.lineHeight,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.options.toFont\r\n\tparseFont: function(value) {\r\n\t\tvar global = Chart.defaults.global;\r\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\r\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\r\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = utils.toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\r\n\t * @todo move this method in Chart.helpers.bound\r\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\r\n\t */\r\n\tbound: function(min, value, max) {\r\n\t\treturn Math.max(min, Math.min(value, max));\r\n\t},\r\n\r\n\t/**\r\n\t * Returns an array of pair [value, state] where state is:\r\n\t * * -1: value is only in a0 (removed)\r\n\t * * 1: value is only in a1 (added)\r\n\t */\r\n\tarrayDiff: function(a0, a1) {\r\n\t\tvar prev = a0.slice();\r\n\t\tvar updates = [];\r\n\t\tvar i, j, ilen, v;\r\n\r\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\r\n\t\t\tv = a1[i];\r\n\t\t\tj = prev.indexOf(v);\r\n\r\n\t\t\tif (j === -1) {\r\n\t\t\t\tupdates.push([v, 1]);\r\n\t\t\t} else {\r\n\t\t\t\tprev.splice(j, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\r\n\t\t\tupdates.push([prev[i], -1]);\r\n\t\t}\r\n\r\n\t\treturn updates;\r\n\t},\r\n\r\n\t/**\r\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\r\n\t */\r\n\trasterize: function(v) {\r\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\r\n\t}\r\n};\r\n\r\nfunction orient(point, origin) {\r\n\tvar x0 = origin.x;\r\n\tvar y0 = origin.y;\r\n\r\n\tif (x0 === null) {\r\n\t\treturn {x: 0, y: -1};\r\n\t}\r\n\tif (y0 === null) {\r\n\t\treturn {x: 1, y: 0};\r\n\t}\r\n\r\n\tvar dx = point.x - x0;\r\n\tvar dy = point.y - y0;\r\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\treturn {\r\n\t\tx: ln ? dx / ln : 0,\r\n\t\ty: ln ? dy / ln : -1\r\n\t};\r\n}\r\n\r\nfunction aligned(x, y, vx, vy, align) {\r\n\tswitch (align) {\r\n\tcase 'center':\r\n\t\tvx = vy = 0;\r\n\t\tbreak;\r\n\tcase 'bottom':\r\n\t\tvx = 0;\r\n\t\tvy = 1;\r\n\t\tbreak;\r\n\tcase 'right':\r\n\t\tvx = 1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'left':\r\n\t\tvx = -1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'top':\r\n\t\tvx = 0;\r\n\t\tvy = -1;\r\n\t\tbreak;\r\n\tcase 'start':\r\n\t\tvx = -vx;\r\n\t\tvy = -vy;\r\n\t\tbreak;\r\n\tcase 'end':\r\n\t\t// keep natural orientation\r\n\t\tbreak;\r\n\tdefault:\r\n\t\t// clockwise rotation (in degree)\r\n\t\talign *= (Math.PI / 180);\r\n\t\tvx = Math.cos(align);\r\n\t\tvy = Math.sin(align);\r\n\t\tbreak;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y,\r\n\t\tvx: vx,\r\n\t\tvy: vy\r\n\t};\r\n}\r\n\r\n// Line clipping (Cohen–Sutherland algorithm)\r\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\r\n\r\nvar R_INSIDE = 0;\r\nvar R_LEFT = 1;\r\nvar R_RIGHT = 2;\r\nvar R_BOTTOM = 4;\r\nvar R_TOP = 8;\r\n\r\nfunction region(x, y, rect) {\r\n\tvar res = R_INSIDE;\r\n\r\n\tif (x < rect.left) {\r\n\t\tres |= R_LEFT;\r\n\t} else if (x > rect.right) {\r\n\t\tres |= R_RIGHT;\r\n\t}\r\n\tif (y < rect.top) {\r\n\t\tres |= R_TOP;\r\n\t} else if (y > rect.bottom) {\r\n\t\tres |= R_BOTTOM;\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction clipped(segment, area) {\r\n\tvar x0 = segment.x0;\r\n\tvar y0 = segment.y0;\r\n\tvar x1 = segment.x1;\r\n\tvar y1 = segment.y1;\r\n\tvar r0 = region(x0, y0, area);\r\n\tvar r1 = region(x1, y1, area);\r\n\tvar r, x, y;\r\n\r\n\t// eslint-disable-next-line no-constant-condition\r\n\twhile (true) {\r\n\t\tif (!(r0 | r1) || (r0 & r1)) {\r\n\t\t\t// both points inside or on the same side: no clipping\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// at least one point is outside\r\n\t\tr = r0 || r1;\r\n\r\n\t\tif (r & R_TOP) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\r\n\t\t\ty = area.top;\r\n\t\t} else if (r & R_BOTTOM) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\r\n\t\t\ty = area.bottom;\r\n\t\t} else if (r & R_RIGHT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\r\n\t\t\tx = area.right;\r\n\t\t} else if (r & R_LEFT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\r\n\t\t\tx = area.left;\r\n\t\t}\r\n\r\n\t\tif (r === r0) {\r\n\t\t\tx0 = x;\r\n\t\t\ty0 = y;\r\n\t\t\tr0 = region(x0, y0, area);\r\n\t\t} else {\r\n\t\t\tx1 = x;\r\n\t\t\ty1 = y;\r\n\t\t\tr1 = region(x1, y1, area);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tx0: x0,\r\n\t\tx1: x1,\r\n\t\ty0: y0,\r\n\t\ty1: y1\r\n\t};\r\n}\r\n\r\nfunction compute(range, config) {\r\n\tvar anchor = config.anchor;\r\n\tvar segment = range;\r\n\tvar x, y;\r\n\r\n\tif (config.clamp) {\r\n\t\tsegment = clipped(segment, config.area);\r\n\t}\r\n\r\n\tif (anchor === 'start') {\r\n\t\tx = segment.x0;\r\n\t\ty = segment.y0;\r\n\t} else if (anchor === 'end') {\r\n\t\tx = segment.x1;\r\n\t\ty = segment.y1;\r\n\t} else {\r\n\t\tx = (segment.x0 + segment.x1) / 2;\r\n\t\ty = (segment.y0 + segment.y1) / 2;\r\n\t}\r\n\r\n\treturn aligned(x, y, range.vx, range.vy, config.align);\r\n}\r\n\r\nvar positioners = {\r\n\tarc: function(vm, config) {\r\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar vx = Math.cos(angle);\r\n\t\tvar vy = Math.sin(angle);\r\n\t\tvar r0 = vm.innerRadius;\r\n\t\tvar r1 = vm.outerRadius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x + vx * r0,\r\n\t\t\ty0: vm.y + vy * r0,\r\n\t\t\tx1: vm.x + vx * r1,\r\n\t\t\ty1: vm.y + vy * r1,\r\n\t\t\tvx: vx,\r\n\t\t\tvy: vy\r\n\t\t}, config);\r\n\t},\r\n\r\n\tpoint: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar rx = v.x * vm.radius;\r\n\t\tvar ry = v.y * vm.radius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x - rx,\r\n\t\t\ty0: vm.y - ry,\r\n\t\t\tx1: vm.x + rx,\r\n\t\t\ty1: vm.y + ry,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\trect: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar sx = 0;\r\n\t\tvar sy = 0;\r\n\r\n\t\tif (vm.horizontal) {\r\n\t\t\tx = Math.min(vm.x, vm.base);\r\n\t\t\tsx = Math.abs(vm.base - vm.x);\r\n\t\t} else {\r\n\t\t\ty = Math.min(vm.y, vm.base);\r\n\t\t\tsy = Math.abs(vm.base - vm.y);\r\n\t\t}\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: x,\r\n\t\t\ty0: y + sy,\r\n\t\t\tx1: x + sx,\r\n\t\t\ty1: y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\tfallback: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x,\r\n\t\t\ty0: vm.y,\r\n\t\t\tx1: vm.x,\r\n\t\t\ty1: vm.y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t}\r\n};\r\n\r\nvar helpers$1 = Chart.helpers;\r\nvar rasterize = utils.rasterize;\r\n\r\nfunction boundingRects(model) {\r\n\tvar borderWidth = model.borderWidth || 0;\r\n\tvar padding = model.padding;\r\n\tvar th = model.size.height;\r\n\tvar tw = model.size.width;\r\n\tvar tx = -tw / 2;\r\n\tvar ty = -th / 2;\r\n\r\n\treturn {\r\n\t\tframe: {\r\n\t\t\tx: tx - padding.left - borderWidth,\r\n\t\t\ty: ty - padding.top - borderWidth,\r\n\t\t\tw: tw + padding.width + borderWidth * 2,\r\n\t\t\th: th + padding.height + borderWidth * 2\r\n\t\t},\r\n\t\ttext: {\r\n\t\t\tx: tx,\r\n\t\t\ty: ty,\r\n\t\t\tw: tw,\r\n\t\t\th: th\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getScaleOrigin(el) {\r\n\tvar horizontal = el._model.horizontal;\r\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\r\n\r\n\tif (!scale) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\r\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\r\n\t}\r\n\r\n\tvar pixel = scale.getBasePixel();\r\n\treturn horizontal ?\r\n\t\t{x: pixel, y: null} :\r\n\t\t{x: null, y: pixel};\r\n}\r\n\r\nfunction getPositioner(el) {\r\n\tif (el instanceof Chart.elements.Arc) {\r\n\t\treturn positioners.arc;\r\n\t}\r\n\tif (el instanceof Chart.elements.Point) {\r\n\t\treturn positioners.point;\r\n\t}\r\n\tif (el instanceof Chart.elements.Rectangle) {\r\n\t\treturn positioners.rect;\r\n\t}\r\n\treturn positioners.fallback;\r\n}\r\n\r\nfunction drawFrame(ctx, rect, model) {\r\n\tvar bgColor = model.backgroundColor;\r\n\tvar borderColor = model.borderColor;\r\n\tvar borderWidth = model.borderWidth;\r\n\r\n\tif (!bgColor && (!borderColor || !borderWidth)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\r\n\thelpers$1.canvas.roundedRect(\r\n\t\tctx,\r\n\t\trasterize(rect.x) + borderWidth / 2,\r\n\t\trasterize(rect.y) + borderWidth / 2,\r\n\t\trasterize(rect.w) - borderWidth,\r\n\t\trasterize(rect.h) - borderWidth,\r\n\t\tmodel.borderRadius);\r\n\r\n\tctx.closePath();\r\n\r\n\tif (bgColor) {\r\n\t\tctx.fillStyle = bgColor;\r\n\t\tctx.fill();\r\n\t}\r\n\r\n\tif (borderColor && borderWidth) {\r\n\t\tctx.strokeStyle = borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\t\tctx.lineJoin = 'miter';\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction textGeometry(rect, align, font) {\r\n\tvar h = font.lineHeight;\r\n\tvar w = rect.w;\r\n\tvar x = rect.x;\r\n\tvar y = rect.y + h / 2;\r\n\r\n\tif (align === 'center') {\r\n\t\tx += w / 2;\r\n\t} else if (align === 'end' || align === 'right') {\r\n\t\tx += w;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\tw: w,\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction drawTextLine(ctx, text, cfg) {\r\n\tvar shadow = ctx.shadowBlur;\r\n\tvar stroked = cfg.stroked;\r\n\tvar x = rasterize(cfg.x);\r\n\tvar y = rasterize(cfg.y);\r\n\tvar w = rasterize(cfg.w);\r\n\r\n\tif (stroked) {\r\n\t\tctx.strokeText(text, x, y, w);\r\n\t}\r\n\r\n\tif (cfg.filled) {\r\n\t\tif (shadow && stroked) {\r\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\r\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\r\n\t\t\tctx.shadowBlur = 0;\r\n\t\t}\r\n\r\n\t\tctx.fillText(text, x, y, w);\r\n\r\n\t\tif (shadow && stroked) {\r\n\t\t\tctx.shadowBlur = shadow;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction drawText(ctx, lines, rect, model) {\r\n\tvar align = model.textAlign;\r\n\tvar color = model.color;\r\n\tvar filled = !!color;\r\n\tvar font = model.font;\r\n\tvar ilen = lines.length;\r\n\tvar strokeColor = model.textStrokeColor;\r\n\tvar strokeWidth = model.textStrokeWidth;\r\n\tvar stroked = strokeColor && strokeWidth;\r\n\tvar i;\r\n\r\n\tif (!ilen || (!filled && !stroked)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Adjust coordinates based on text alignment and line height\r\n\trect = textGeometry(rect, align, font);\r\n\r\n\tctx.font = font.string;\r\n\tctx.textAlign = align;\r\n\tctx.textBaseline = 'middle';\r\n\tctx.shadowBlur = model.textShadowBlur;\r\n\tctx.shadowColor = model.textShadowColor;\r\n\r\n\tif (filled) {\r\n\t\tctx.fillStyle = color;\r\n\t}\r\n\tif (stroked) {\r\n\t\tctx.lineJoin = 'round';\r\n\t\tctx.lineWidth = strokeWidth;\r\n\t\tctx.strokeStyle = strokeColor;\r\n\t}\r\n\r\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\r\n\t\tdrawTextLine(ctx, lines[i], {\r\n\t\t\tstroked: stroked,\r\n\t\t\tfilled: filled,\r\n\t\t\tw: rect.w,\r\n\t\t\tx: rect.x,\r\n\t\t\ty: rect.y + rect.h * i\r\n\t\t});\r\n\t}\r\n}\r\n\r\nvar Label = function(config, ctx, el, index) {\r\n\tvar me = this;\r\n\r\n\tme._config = config;\r\n\tme._index = index;\r\n\tme._model = null;\r\n\tme._rects = null;\r\n\tme._ctx = ctx;\r\n\tme._el = el;\r\n};\r\n\r\nhelpers$1.extend(Label.prototype, {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_modelize: function(display, lines, config, context) {\r\n\t\tvar me = this;\r\n\t\tvar index = me._index;\r\n\t\tvar resolve = helpers$1.options.resolve;\r\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\r\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\r\n\r\n\t\treturn {\r\n\t\t\talign: resolve([config.align, 'center'], context, index),\r\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\r\n\t\t\tarea: context.chart.chartArea,\r\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\r\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\r\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\r\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\r\n\t\t\tclamp: resolve([config.clamp, false], context, index),\r\n\t\t\tclip: resolve([config.clip, false], context, index),\r\n\t\t\tcolor: color,\r\n\t\t\tdisplay: display,\r\n\t\t\tfont: font,\r\n\t\t\tlines: lines,\r\n\t\t\toffset: resolve([config.offset, 0], context, index),\r\n\t\t\topacity: resolve([config.opacity, 1], context, index),\r\n\t\t\torigin: getScaleOrigin(me._el),\r\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\r\n\t\t\tpositioner: getPositioner(me._el),\r\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\r\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\r\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\r\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\r\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\r\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\r\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(context) {\r\n\t\tvar me = this;\r\n\t\tvar model = null;\r\n\t\tvar rects = null;\r\n\t\tvar index = me._index;\r\n\t\tvar config = me._config;\r\n\t\tvar value, label, lines;\r\n\r\n\t\t// We first resolve the display option (separately) to avoid computing\r\n\t\t// other options in case the label is hidden (i.e. display: false).\r\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\r\n\r\n\t\tif (display) {\r\n\t\t\tvalue = context.dataset.data[index];\r\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\r\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\r\n\r\n\t\t\tif (lines.length) {\r\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\r\n\t\t\t\trects = boundingRects(model);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._model = model;\r\n\t\tme._rects = rects;\r\n\t},\r\n\r\n\tgeometry: function() {\r\n\t\treturn this._rects ? this._rects.frame : {};\r\n\t},\r\n\r\n\trotation: function() {\r\n\t\treturn this._model ? this._model.rotation : 0;\r\n\t},\r\n\r\n\tvisible: function() {\r\n\t\treturn this._model && this._model.opacity;\r\n\t},\r\n\r\n\tmodel: function() {\r\n\t\treturn this._model;\r\n\t},\r\n\r\n\tdraw: function(chart, center) {\r\n\t\tvar me = this;\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar model = me._model;\r\n\t\tvar rects = me._rects;\r\n\t\tvar area;\r\n\r\n\t\tif (!this.visible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\tif (model.clip) {\r\n\t\t\tarea = model.area;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.rect(\r\n\t\t\t\tarea.left,\r\n\t\t\t\tarea.top,\r\n\t\t\t\tarea.right - area.left,\r\n\t\t\t\tarea.bottom - area.top);\r\n\t\t\tctx.clip();\r\n\t\t}\r\n\r\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\r\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\r\n\t\tctx.rotate(model.rotation);\r\n\r\n\t\tdrawFrame(ctx, rects.frame, model);\r\n\t\tdrawText(ctx, model.lines, rects.text, model);\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nvar helpers$2 = Chart.helpers;\r\n\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\r\n\r\nfunction rotated(point, center, angle) {\r\n\tvar cos = Math.cos(angle);\r\n\tvar sin = Math.sin(angle);\r\n\tvar cx = center.x;\r\n\tvar cy = center.y;\r\n\r\n\treturn {\r\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\r\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\r\n\t};\r\n}\r\n\r\nfunction projected(points, axis) {\r\n\tvar min = MAX_INTEGER;\r\n\tvar max = MIN_INTEGER;\r\n\tvar origin = axis.origin;\r\n\tvar i, pt, vx, vy, dp;\r\n\r\n\tfor (i = 0; i < points.length; ++i) {\r\n\t\tpt = points[i];\r\n\t\tvx = pt.x - origin.x;\r\n\t\tvy = pt.y - origin.y;\r\n\t\tdp = axis.vx * vx + axis.vy * vy;\r\n\t\tmin = Math.min(min, dp);\r\n\t\tmax = Math.max(max, dp);\r\n\t}\r\n\r\n\treturn {\r\n\t\tmin: min,\r\n\t\tmax: max\r\n\t};\r\n}\r\n\r\nfunction toAxis(p0, p1) {\r\n\tvar vx = p1.x - p0.x;\r\n\tvar vy = p1.y - p0.y;\r\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\r\n\r\n\treturn {\r\n\t\tvx: (p1.x - p0.x) / ln,\r\n\t\tvy: (p1.y - p0.y) / ln,\r\n\t\torigin: p0,\r\n\t\tln: ln\r\n\t};\r\n}\r\n\r\nvar HitBox = function() {\r\n\tthis._rotation = 0;\r\n\tthis._rect = {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\tw: 0,\r\n\t\th: 0\r\n\t};\r\n};\r\n\r\nhelpers$2.extend(HitBox.prototype, {\r\n\tcenter: function() {\r\n\t\tvar r = this._rect;\r\n\t\treturn {\r\n\t\t\tx: r.x + r.w / 2,\r\n\t\t\ty: r.y + r.h / 2\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(center, rect, rotation) {\r\n\t\tthis._rotation = rotation;\r\n\t\tthis._rect = {\r\n\t\t\tx: rect.x + center.x,\r\n\t\t\ty: rect.y + center.y,\r\n\t\t\tw: rect.w,\r\n\t\t\th: rect.h\r\n\t\t};\r\n\t},\r\n\r\n\tcontains: function(point) {\r\n\t\tvar me = this;\r\n\t\tvar margin = 1;\r\n\t\tvar rect = me._rect;\r\n\r\n\t\tpoint = rotated(point, me.center(), -me._rotation);\r\n\r\n\t\treturn !(point.x < rect.x - margin\r\n\t\t\t|| point.y < rect.y - margin\r\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\r\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\r\n\t},\r\n\r\n\t// Separating Axis Theorem\r\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\r\n\tintersects: function(other) {\r\n\t\tvar r0 = this._points();\r\n\t\tvar r1 = other._points();\r\n\t\tvar axes = [\r\n\t\t\ttoAxis(r0[0], r0[1]),\r\n\t\t\ttoAxis(r0[0], r0[3])\r\n\t\t];\r\n\t\tvar i, pr0, pr1;\r\n\r\n\t\tif (this._rotation !== other._rotation) {\r\n\t\t\t// Only separate with r1 axis if the rotation is different,\r\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\r\n\t\t\taxes.push(\r\n\t\t\t\ttoAxis(r1[0], r1[1]),\r\n\t\t\t\ttoAxis(r1[0], r1[3])\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < axes.length; ++i) {\r\n\t\t\tpr0 = projected(r0, axes[i]);\r\n\t\t\tpr1 = projected(r1, axes[i]);\r\n\r\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_points: function() {\r\n\t\tvar me = this;\r\n\t\tvar rect = me._rect;\r\n\t\tvar angle = me._rotation;\r\n\t\tvar center = me.center();\r\n\r\n\t\treturn [\r\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\r\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\r\n\t\t];\r\n\t}\r\n});\r\n\r\nfunction coordinates(view, model, geometry) {\r\n\tvar point = model.positioner(view, model);\r\n\tvar vx = point.vx;\r\n\tvar vy = point.vy;\r\n\r\n\tif (!vx && !vy) {\r\n\t\t// if aligned center, we don't want to offset the center point\r\n\t\treturn {x: point.x, y: point.y};\r\n\t}\r\n\r\n\tvar w = geometry.w;\r\n\tvar h = geometry.h;\r\n\r\n\t// take in account the label rotation\r\n\tvar rotation = model.rotation;\r\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\r\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\r\n\r\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\r\n\t// w or h respectively (else we would calculate the distance to the\r\n\t// ellipse inscribed in the bounding rect)\r\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\r\n\tdx *= vx * vs;\r\n\tdy *= vy * vs;\r\n\r\n\t// finally, include the explicit offset\r\n\tdx += model.offset * vx;\r\n\tdy += model.offset * vy;\r\n\r\n\treturn {\r\n\t\tx: point.x + dx,\r\n\t\ty: point.y + dy\r\n\t};\r\n}\r\n\r\nfunction collide(labels, collider) {\r\n\tvar i, j, s0, s1;\r\n\r\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\r\n\t// list have an higher weight/priority and thus should be less impacted\r\n\t// by the overlapping strategy.\r\n\r\n\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\ts0 = labels[i].$layout;\r\n\r\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\r\n\t\t\ts1 = labels[j].$layout;\r\n\r\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\r\n\t\t\t\tcollider(s0, s1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction compute$1(labels) {\r\n\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t// Initialize labels for overlap detection\r\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\tlabel = labels[i];\r\n\t\tstate = label.$layout;\r\n\r\n\t\tif (state._visible) {\r\n\t\t\tgeometry = label.geometry();\r\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\r\n\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t}\r\n\t}\r\n\r\n\t// Auto hide overlapping labels\r\n\treturn collide(labels, function(s0, s1) {\r\n\t\tvar h0 = s0._hidable;\r\n\t\tvar h1 = s1._hidable;\r\n\r\n\t\tif ((h0 && h1) || h1) {\r\n\t\t\ts1._visible = false;\r\n\t\t} else if (h0) {\r\n\t\t\ts0._visible = false;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nvar layout = {\r\n\tprepare: function(datasets) {\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, label;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\r\n\t\t\t\tlabel = datasets[i][j];\r\n\t\t\t\tlabels.push(label);\r\n\t\t\t\tlabel.$layout = {\r\n\t\t\t\t\t_box: new HitBox(),\r\n\t\t\t\t\t_hidable: false,\r\n\t\t\t\t\t_visible: true,\r\n\t\t\t\t\t_set: i,\r\n\t\t\t\t\t_idx: j\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\r\n\t\t// of top of the ones with a lower index. Lowest z-index labels\r\n\t\t// are also discarded first when hiding overlapping labels.\r\n\t\tlabels.sort(function(a, b) {\r\n\t\t\tvar sa = a.$layout;\r\n\t\t\tvar sb = b.$layout;\r\n\r\n\t\t\treturn sa._idx === sb._idx\r\n\t\t\t\t? sb._set - sa._set\r\n\t\t\t\t: sb._idx - sa._idx;\r\n\t\t});\r\n\r\n\t\tthis.update(labels);\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\tupdate: function(labels) {\r\n\t\tvar dirty = false;\r\n\t\tvar i, ilen, label, model, state;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tmodel = label.model();\r\n\t\t\tstate = label.$layout;\r\n\t\t\tstate._hidable = model && model.display === 'auto';\r\n\t\t\tstate._visible = label.visible();\r\n\t\t\tdirty |= state._hidable;\r\n\t\t}\r\n\r\n\t\tif (dirty) {\r\n\t\t\tcompute$1(labels);\r\n\t\t}\r\n\t},\r\n\r\n\tlookup: function(labels, point) {\r\n\t\tvar i, state;\r\n\r\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\r\n\t\t// the list have an higher z-index, thus should be picked first.\r\n\r\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\t\tstate = labels[i].$layout;\r\n\r\n\t\t\tif (state && state._visible && state._box.contains(point)) {\r\n\t\t\t\treturn labels[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tdraw: function(chart, labels) {\r\n\t\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tstate = label.$layout;\r\n\r\n\t\t\tif (state._visible) {\r\n\t\t\t\tgeometry = label.geometry();\r\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\r\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t\t\tlabel.draw(chart, center);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers$3 = Chart.helpers;\r\n\r\nvar formatter = function(value) {\r\n\tif (helpers$3.isNullOrUndef(value)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar label = value;\r\n\tvar keys, klen, k;\r\n\tif (helpers$3.isObject(value)) {\r\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\r\n\t\t\tlabel = value.label;\r\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\r\n\t\t\tlabel = value.r;\r\n\t\t} else {\r\n\t\t\tlabel = '';\r\n\t\t\tkeys = Object.keys(value);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn '' + label;\r\n};\r\n\r\n/**\r\n * IMPORTANT: make sure to also update tests and TypeScript definition\r\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\r\n */\r\n\r\nvar defaults = {\r\n\talign: 'center',\r\n\tanchor: 'center',\r\n\tbackgroundColor: null,\r\n\tborderColor: null,\r\n\tborderRadius: 0,\r\n\tborderWidth: 0,\r\n\tclamp: false,\r\n\tclip: false,\r\n\tcolor: undefined,\r\n\tdisplay: true,\r\n\tfont: {\r\n\t\tfamily: undefined,\r\n\t\tlineHeight: 1.2,\r\n\t\tsize: undefined,\r\n\t\tstyle: undefined,\r\n\t\tweight: null\r\n\t},\r\n\tformatter: formatter,\r\n\tlabels: undefined,\r\n\tlisteners: {},\r\n\toffset: 4,\r\n\topacity: 1,\r\n\tpadding: {\r\n\t\ttop: 4,\r\n\t\tright: 4,\r\n\t\tbottom: 4,\r\n\t\tleft: 4\r\n\t},\r\n\trotation: 0,\r\n\ttextAlign: 'start',\r\n\ttextStrokeColor: undefined,\r\n\ttextStrokeWidth: 0,\r\n\ttextShadowBlur: 0,\r\n\ttextShadowColor: undefined\r\n};\r\n\r\n/**\r\n * @see https://github.com/chartjs/Chart.js/issues/4176\r\n */\r\n\r\nvar helpers$4 = Chart.helpers;\r\nvar EXPANDO_KEY = '$datalabels';\r\nvar DEFAULT_KEY = '$default';\r\n\r\nfunction configure(dataset, options) {\r\n\tvar override = dataset.datalabels;\r\n\tvar listeners = {};\r\n\tvar configs = [];\r\n\tvar labels, keys;\r\n\r\n\tif (override === false) {\r\n\t\treturn null;\r\n\t}\r\n\tif (override === true) {\r\n\t\toverride = {};\r\n\t}\r\n\r\n\toptions = helpers$4.merge({}, [options, override]);\r\n\tlabels = options.labels || {};\r\n\tkeys = Object.keys(labels);\r\n\tdelete options.labels;\r\n\r\n\tif (keys.length) {\r\n\t\tkeys.forEach(function(key) {\r\n\t\t\tif (labels[key]) {\r\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\r\n\t\t\t\t\toptions,\r\n\t\t\t\t\tlabels[key],\r\n\t\t\t\t\t{_key: key}\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\t// Default label if no \"named\" label defined.\r\n\t\tconfigs.push(options);\r\n\t}\r\n\r\n\t// listeners: {: {: }}\r\n\tlisteners = configs.reduce(function(target, config) {\r\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\r\n\t\t\ttarget[event] = target[event] || {};\r\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\r\n\t\t});\r\n\r\n\t\tdelete config.listeners;\r\n\t\treturn target;\r\n\t}, {});\r\n\r\n\treturn {\r\n\t\tlabels: configs,\r\n\t\tlisteners: listeners\r\n\t};\r\n}\r\n\r\nfunction dispatchEvent(chart, listeners, label) {\r\n\tif (!listeners) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar context = label.$context;\r\n\tvar groups = label.$groups;\r\n\tvar callback;\r\n\r\n\tif (!listeners[groups._set]) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallback = listeners[groups._set][groups._key];\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (helpers$4.callback(callback, [context]) === true) {\r\n\t\t// Users are allowed to tweak the given context by injecting values that can be\r\n\t\t// used in scriptable options to display labels differently based on the current\r\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\r\n\t\t// the output context and schedule a new chart render by setting it dirty.\r\n\t\tchart[EXPANDO_KEY]._dirty = true;\r\n\t\tlabel.update(context);\r\n\t}\r\n}\r\n\r\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\r\n\tvar enter, leave;\r\n\r\n\tif (!previous && !label) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!previous) {\r\n\t\tenter = true;\r\n\t} else if (!label) {\r\n\t\tleave = true;\r\n\t} else if (previous !== label) {\r\n\t\tleave = enter = true;\r\n\t}\r\n\r\n\tif (leave) {\r\n\t\tdispatchEvent(chart, listeners.leave, previous);\r\n\t}\r\n\tif (enter) {\r\n\t\tdispatchEvent(chart, listeners.enter, label);\r\n\t}\r\n}\r\n\r\nfunction handleMoveEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar listeners = expando._listeners;\r\n\tvar previous, label;\r\n\r\n\tif (!listeners.enter && !listeners.leave) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (event.type === 'mousemove') {\r\n\t\tlabel = layout.lookup(expando._labels, event);\r\n\t} else if (event.type !== 'mouseout') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tprevious = expando._hovered;\r\n\texpando._hovered = label;\r\n\tdispatchMoveEvents(chart, listeners, previous, label);\r\n}\r\n\r\nfunction handleClickEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar handlers = expando._listeners.click;\r\n\tvar label = handlers && layout.lookup(expando._labels, event);\r\n\tif (label) {\r\n\t\tdispatchEvent(chart, handlers, label);\r\n\t}\r\n}\r\n\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\r\nfunction invalidate(chart) {\r\n\tif (chart.animating) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// `chart.animating` can be `false` even if there is animation in progress,\r\n\t// so let's iterate all animations to find if there is one for the `chart`.\r\n\tvar animations = Chart.animationService.animations;\r\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\tif (animations[i].chart === chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\r\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\r\n\t// animation is created so the controller can stop it before any transition.\r\n\tchart.render({duration: 1, lazy: true});\r\n}\r\n\r\nChart.defaults.global.plugins.datalabels = defaults;\r\n\r\nvar plugin = {\r\n\tid: 'datalabels',\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tchart[EXPANDO_KEY] = {\r\n\t\t\t_actives: []\r\n\t\t};\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\texpando._listened = false;\r\n\t\texpando._listeners = {}; // {: {: {: }}}\r\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\r\n\t\texpando._labels = []; // layouted labels: Label[]\r\n\t},\r\n\r\n\tafterDatasetUpdate: function(chart, args, options) {\r\n\t\tvar datasetIndex = args.index;\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar labels = expando._datasets[datasetIndex] = [];\r\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\r\n\t\tvar dataset = chart.data.datasets[datasetIndex];\r\n\t\tvar config = configure(dataset, options);\r\n\t\tvar elements = args.meta.data || [];\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\tel = elements[i];\r\n\t\t\tel[EXPANDO_KEY] = [];\r\n\r\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\r\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tcfg = config.labels[j];\r\n\t\t\t\t\tkey = cfg._key;\r\n\r\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\r\n\t\t\t\t\tlabel.$groups = {\r\n\t\t\t\t\t\t_set: datasetIndex,\r\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlabel.$context = {\r\n\t\t\t\t\t\tactive: false,\r\n\t\t\t\t\t\tchart: chart,\r\n\t\t\t\t\t\tdataIndex: i,\r\n\t\t\t\t\t\tdataset: dataset,\r\n\t\t\t\t\t\tdatasetIndex: datasetIndex\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\r\n\t\t\t\t\tlabels.push(label);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\r\n\t\t// Store listeners at the chart level and per event type to optimize\r\n\t\t// cases where no listeners are registered for a specific event.\r\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\r\n\t\t\tmerger: function(event, target, source) {\r\n\t\t\t\ttarget[event] = target[event] || {};\r\n\t\t\t\ttarget[event][args.index] = source[event];\r\n\t\t\t\texpando._listened = true;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tafterUpdate: function(chart, options) {\r\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\r\n\t\t\tchart[EXPANDO_KEY]._datasets,\r\n\t\t\toptions);\r\n\t},\r\n\r\n\t// Draw labels on top of all dataset elements\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\r\n\tafterDatasetsDraw: function(chart) {\r\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\r\n\t},\r\n\r\n\tbeforeEvent: function(chart, event) {\r\n\t\t// If there is no listener registered for this chart, `listened` will be false,\r\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\r\n\t\t// computation for users who don't implement label interactions.\r\n\t\tif (chart[EXPANDO_KEY]._listened) {\r\n\t\t\tswitch (event.type) {\r\n\t\t\tcase 'mousemove':\r\n\t\t\tcase 'mouseout':\r\n\t\t\t\thandleMoveEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'click':\r\n\t\t\t\thandleClickEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar previous = expando._actives;\r\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\r\n\t\tvar updates = utils.arrayDiff(previous, actives);\r\n\t\tvar i, ilen, j, jlen, update, label, labels;\r\n\r\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\r\n\t\t\tupdate = updates[i];\r\n\t\t\tif (update[1]) {\r\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\r\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tlabel = labels[j];\r\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (expando._dirty || updates.length) {\r\n\t\t\tlayout.update(expando._labels);\r\n\t\t\tinvalidate(chart);\r\n\t\t}\r\n\r\n\t\tdelete expando._dirty;\r\n\t}\r\n};\r\n\r\n// TODO Remove at version 1, we shouldn't automatically register plugins.\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\r\nChart.plugins.unregister(plugin);\r\nreturn plugin;\r\n\r\n}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*\r\n Enhanced Bootstrap Modals\r\n https://mdbootstrap.com\r\n office@mdbootstrap.com\r\n*/\r\n\r\n(function($){\r\n $('body').on('shown.bs.modal', '.modal', function() {\r\n if(!$('.modal-backdrop').length) {\r\n\r\n $modal_dialog = $(this).children('.modal-dialog')\r\n\r\n if($modal_dialog.hasClass('modal-side')) {\r\n $(this).addClass('modal-scrolling');\r\n $('body').addClass('scrollable');\r\n }\r\n\r\n if($modal_dialog.hasClass('modal-frame')) {\r\n $(this).addClass('modal-content-clickable');\r\n $('body').addClass('scrollable');\r\n }\r\n }\r\n });\r\n $('body').on('hidden.bs.modal', '.modal', function() {\r\n $('body').removeClass('scrollable');\r\n });\r\n})(jQuery);\r\n","/*\r\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\r\n *\r\n * Uses the built in easing capabilities added In jQuery 1.1\r\n * to offer multiple easing options\r\n *\r\n * TERMS OF USE - jQuery Easing\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2008 George McGinley Smith\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n*/\r\n\r\n// t: current time, b: begInnIng value, c: change In value, d: duration\r\njQuery.easing['jswing'] = jQuery.easing['swing'];\r\n\r\njQuery.extend( jQuery.easing,\r\n{\r\n def: 'easeOutQuad',\r\n swing: function (x, t, b, c, d) {\r\n //alert(jQuery.easing.default);\r\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\r\n },\r\n easeInQuad: function (x, t, b, c, d) {\r\n return c*(t/=d)*t + b;\r\n },\r\n easeOutQuad: function (x, t, b, c, d) {\r\n return -c *(t/=d)*(t-2) + b;\r\n },\r\n easeInOutQuad: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t + b;\r\n return -c/2 * ((--t)*(t-2) - 1) + b;\r\n },\r\n easeInCubic: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t + b;\r\n },\r\n easeOutCubic: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n },\r\n easeInOutCubic: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\r\n return c/2*((t-=2)*t*t + 2) + b;\r\n },\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n },\r\n easeOutQuart: function (x, t, b, c, d) {\r\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\r\n },\r\n easeInOutQuart: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\r\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\r\n },\r\n easeInQuint: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t*t + b;\r\n },\r\n easeOutQuint: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\r\n },\r\n easeInOutQuint: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\r\n return c/2*((t-=2)*t*t*t*t + 2) + b;\r\n },\r\n easeInSine: function (x, t, b, c, d) {\r\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\r\n },\r\n easeOutSine: function (x, t, b, c, d) {\r\n return c * Math.sin(t/d * (Math.PI/2)) + b;\r\n },\r\n easeInOutSine: function (x, t, b, c, d) {\r\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\r\n },\r\n easeInExpo: function (x, t, b, c, d) {\r\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\r\n },\r\n easeOutExpo: function (x, t, b, c, d) {\r\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\r\n },\r\n easeInOutExpo: function (x, t, b, c, d) {\r\n if (t==0) return b;\r\n if (t==d) return b+c;\r\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\r\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\r\n },\r\n easeInCirc: function (x, t, b, c, d) {\r\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\r\n },\r\n easeOutCirc: function (x, t, b, c, d) {\r\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\r\n },\r\n easeInOutCirc: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\r\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\r\n },\r\n easeInElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n },\r\n easeOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\r\n },\r\n easeInOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\r\n },\r\n easeInBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*(t/=d)*t*((s+1)*t - s) + b;\r\n },\r\n easeOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\r\n },\r\n easeInOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\r\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\r\n },\r\n easeInBounce: function (x, t, b, c, d) {\r\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\r\n },\r\n easeOutBounce: function (x, t, b, c, d) {\r\n if ((t/=d) < (1/2.75)) {\r\n return c*(7.5625*t*t) + b;\r\n } else if (t < (2/2.75)) {\r\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\r\n } else if (t < (2.5/2.75)) {\r\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\r\n } else {\r\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\r\n }\r\n },\r\n easeInOutBounce: function (x, t, b, c, d) {\r\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\r\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\r\n }\r\n});\r\n\r\n/*\r\n *\r\n * TERMS OF USE - EASING EQUATIONS\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2001 Robert Penner\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\r\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\r\n * Waves v0.7.6\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n(function (window, factory) {\r\n 'use strict';\r\n\r\n // AMD. Register as an anonymous module. Wrap in function so we have access\r\n // to root via `this`.\r\n if (typeof define === 'function' && define.amd) {\r\n define([], function () {\r\n window.Waves = factory.call(window);\r\n return window.Waves;\r\n });\r\n }\r\n\r\n // Node. Does not work with strict CommonJS, but only CommonJS-like\r\n // environments that support module.exports, like Node.\r\n else if (typeof exports === 'object') {\r\n module.exports = factory.call(window);\r\n }\r\n\r\n // Browser globals.\r\n else {\r\n window.Waves = factory.call(window);\r\n }\r\n})(typeof window === 'object' ? window : this, function () {\r\n 'use strict';\r\n\r\n var Waves = Waves || {};\r\n var $$ = document.querySelectorAll.bind(document);\r\n var toString = Object.prototype.toString;\r\n var isTouchAvailable = 'ontouchstart' in window;\r\n\r\n\r\n // Find exact position of element\r\n function isWindow(obj) {\r\n return obj !== null && obj === obj.window;\r\n }\r\n\r\n function getWindow(elem) {\r\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\r\n }\r\n\r\n function isObject(value) {\r\n var type = typeof value;\r\n return type === 'function' || type === 'object' && !!value;\r\n }\r\n\r\n function isDOMNode(obj) {\r\n return isObject(obj) && obj.nodeType > 0;\r\n }\r\n\r\n function getWavesElements(nodes) {\r\n var stringRepr = toString.call(nodes);\r\n\r\n if (stringRepr === '[object String]') {\r\n return $$(nodes);\r\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\r\n return nodes;\r\n } else if (isDOMNode(nodes)) {\r\n return [nodes];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function offset(elem) {\r\n var docElem, win,\r\n box = {\r\n top: 0,\r\n left: 0\r\n },\r\n doc = elem && elem.ownerDocument;\r\n\r\n docElem = doc.documentElement;\r\n\r\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n win = getWindow(doc);\r\n return {\r\n top: box.top + win.pageYOffset - docElem.clientTop,\r\n left: box.left + win.pageXOffset - docElem.clientLeft\r\n };\r\n }\r\n\r\n function convertStyle(styleObj) {\r\n var style = '';\r\n\r\n for (var prop in styleObj) {\r\n if (styleObj.hasOwnProperty(prop)) {\r\n style += (prop + ':' + styleObj[prop] + ';');\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n var Effect = {\r\n\r\n // Effect duration\r\n duration: 750,\r\n\r\n // Effect delay (check for scroll before showing effect)\r\n delay: 200,\r\n\r\n show: function (e, element, velocity) {\r\n\r\n // Disable right click\r\n if (e.button === 2) {\r\n return false;\r\n }\r\n\r\n element = element || this;\r\n\r\n // Create ripple\r\n var ripple = document.createElement('div');\r\n ripple.className = 'waves-ripple waves-rippling';\r\n element.appendChild(ripple);\r\n\r\n // Get click coordinate and element width\r\n var pos = offset(element);\r\n var relativeY = 0;\r\n var relativeX = 0;\r\n // Support for touch devices\r\n if ('touches' in e && e.touches.length) {\r\n relativeY = (e.touches[0].pageY - pos.top);\r\n relativeX = (e.touches[0].pageX - pos.left);\r\n }\r\n //Normal case\r\n else {\r\n relativeY = (e.pageY - pos.top);\r\n relativeX = (e.pageX - pos.left);\r\n }\r\n // Support for synthetic events\r\n relativeX = relativeX >= 0 ? relativeX : 0;\r\n relativeY = relativeY >= 0 ? relativeY : 0;\r\n\r\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\r\n var translate = 'translate(0,0)';\r\n\r\n if (velocity) {\r\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\r\n }\r\n\r\n // Attach data to element\r\n ripple.setAttribute('data-hold', Date.now());\r\n ripple.setAttribute('data-x', relativeX);\r\n ripple.setAttribute('data-y', relativeY);\r\n ripple.setAttribute('data-scale', scale);\r\n ripple.setAttribute('data-translate', translate);\r\n\r\n // Set ripple position\r\n var rippleStyle = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px'\r\n };\r\n\r\n ripple.classList.add('waves-notransition');\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n ripple.classList.remove('waves-notransition');\r\n\r\n // Scale the ripple\r\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\r\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\r\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\r\n rippleStyle['-o-transform'] = scale + ' ' + translate;\r\n rippleStyle.transform = scale + ' ' + translate;\r\n rippleStyle.opacity = '1';\r\n\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\r\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\r\n rippleStyle['-o-transition-duration'] = duration + 'ms';\r\n rippleStyle['transition-duration'] = duration + 'ms';\r\n\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n },\r\n\r\n hide: function (e, element) {\r\n element = element || this;\r\n\r\n var ripples = element.getElementsByClassName('waves-rippling');\r\n\r\n for (var i = 0, len = ripples.length; i < len; i++) {\r\n removeRipple(e, element, ripples[i]);\r\n }\r\n\r\n if (isTouchAvailable) {\r\n element.removeEventListener('touchend', Effect.hide);\r\n element.removeEventListener('touchcancel', Effect.hide);\r\n }\r\n\r\n element.removeEventListener('mouseup', Effect.hide);\r\n element.removeEventListener('mouseleave', Effect.hide);\r\n }\r\n };\r\n\r\n /**\r\n * Collection of wrapper for HTML element that only have single tag\r\n * like and \r\n */\r\n var TagWrapper = {\r\n\r\n // Wrap tag so it can perform the effect\r\n input: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element class and style to the specified parent\r\n var wrapper = document.createElement('span');\r\n wrapper.className = 'waves-input-wrapper';\r\n // element.className = 'waves-button-input';\r\n\r\n // Put element as child\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n },\r\n\r\n // Wrap tag so it can perform the effect\r\n img: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element as child\r\n var wrapper = document.createElement('i');\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n }\r\n };\r\n\r\n /**\r\n * Hide the effect and remove the ripple. Must be\r\n * a separate function to pass the JSLint...\r\n */\r\n function removeRipple(e, el, ripple) {\r\n\r\n // Check if the ripple still exist\r\n if (!ripple) {\r\n return;\r\n }\r\n\r\n ripple.classList.remove('waves-rippling');\r\n\r\n var relativeX = ripple.getAttribute('data-x');\r\n var relativeY = ripple.getAttribute('data-y');\r\n var scale = ripple.getAttribute('data-scale');\r\n var translate = ripple.getAttribute('data-translate');\r\n\r\n // Get delay beetween mousedown and mouse leave\r\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\r\n var delay = 350 - diff;\r\n\r\n if (delay < 0) {\r\n delay = 0;\r\n }\r\n\r\n if (e.type === 'mousemove') {\r\n delay = 150;\r\n }\r\n\r\n // Fade out ripple after delay\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n\r\n setTimeout(function () {\r\n\r\n var style = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px',\r\n opacity: '0',\r\n\r\n // Duration\r\n '-webkit-transition-duration': duration + 'ms',\r\n '-moz-transition-duration': duration + 'ms',\r\n '-o-transition-duration': duration + 'ms',\r\n 'transition-duration': duration + 'ms',\r\n '-webkit-transform': scale + ' ' + translate,\r\n '-moz-transform': scale + ' ' + translate,\r\n '-ms-transform': scale + ' ' + translate,\r\n '-o-transform': scale + ' ' + translate,\r\n 'transform': scale + ' ' + translate\r\n };\r\n\r\n ripple.setAttribute('style', convertStyle(style));\r\n\r\n setTimeout(function () {\r\n try {\r\n el.removeChild(ripple);\r\n } catch (e) {\r\n return false;\r\n }\r\n }, duration);\r\n\r\n }, delay);\r\n }\r\n\r\n\r\n /**\r\n * Disable mousedown event for 500ms during and after touch\r\n */\r\n var TouchHandler = {\r\n\r\n /* uses an integer rather than bool so there's no issues with\r\n * needing to clear timeouts if another touch event occurred\r\n * within the 500ms. Cannot mouseup between touchstart and\r\n * touchend, nor in the 500ms after touchend. */\r\n touches: 0,\r\n\r\n allowEvent: function (e) {\r\n\r\n var allow = true;\r\n\r\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\r\n allow = false;\r\n }\r\n\r\n return allow;\r\n },\r\n registerEvent: function (e) {\r\n var eType = e.type;\r\n\r\n if (eType === 'touchstart') {\r\n\r\n TouchHandler.touches += 1; // push\r\n\r\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\r\n\r\n setTimeout(function () {\r\n if (TouchHandler.touches) {\r\n TouchHandler.touches -= 1; // pop after 500ms\r\n }\r\n }, 500);\r\n\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Delegated click handler for .waves-effect element.\r\n * returns null when .waves-effect element not in \"click tree\"\r\n */\r\n function getWavesEffectElement(e) {\r\n\r\n if (TouchHandler.allowEvent(e) === false) {\r\n return null;\r\n }\r\n\r\n var element = null;\r\n var target = e.target || e.srcElement;\r\n\r\n while (target.parentElement) {\r\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\r\n element = target;\r\n break;\r\n }\r\n target = target.parentElement;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Bubble the click and show effect if .waves-effect elem was found\r\n */\r\n function showEffect(e) {\r\n\r\n // Disable effect if element has \"disabled\" property on it\r\n // In some cases, the event is not triggered by the current element\r\n // if (e.target.getAttribute('disabled') !== null) {\r\n // return;\r\n // }\r\n\r\n var element = getWavesEffectElement(e);\r\n\r\n if (element !== null) {\r\n\r\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\r\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n TouchHandler.registerEvent(e);\r\n\r\n if (e.type === 'touchstart' && Effect.delay) {\r\n\r\n var hidden = false;\r\n\r\n var timer = setTimeout(function () {\r\n timer = null;\r\n Effect.show(e, element);\r\n }, Effect.delay);\r\n\r\n var hideEffect = function (hideEvent) {\r\n\r\n // if touch hasn't moved, and effect not yet started: start effect now\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n Effect.show(e, element);\r\n }\r\n if (!hidden) {\r\n hidden = true;\r\n Effect.hide(hideEvent, element);\r\n }\r\n\r\n removeListeners();\r\n };\r\n\r\n var touchMove = function (moveEvent) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n hideEffect(moveEvent);\r\n\r\n removeListeners();\r\n };\r\n\r\n element.addEventListener('touchmove', touchMove, false);\r\n element.addEventListener('touchend', hideEffect, false);\r\n element.addEventListener('touchcancel', hideEffect, false);\r\n\r\n var removeListeners = function () {\r\n element.removeEventListener('touchmove', touchMove);\r\n element.removeEventListener('touchend', hideEffect);\r\n element.removeEventListener('touchcancel', hideEffect);\r\n };\r\n } else {\r\n\r\n Effect.show(e, element);\r\n\r\n if (isTouchAvailable) {\r\n element.addEventListener('touchend', Effect.hide, false);\r\n element.addEventListener('touchcancel', Effect.hide, false);\r\n }\r\n\r\n element.addEventListener('mouseup', Effect.hide, false);\r\n element.addEventListener('mouseleave', Effect.hide, false);\r\n }\r\n }\r\n }\r\n\r\n Waves.init = function (options) {\r\n var body = document.body;\r\n\r\n options = options || {};\r\n\r\n if ('duration' in options) {\r\n Effect.duration = options.duration;\r\n }\r\n\r\n if ('delay' in options) {\r\n Effect.delay = options.delay;\r\n }\r\n\r\n if (isTouchAvailable) {\r\n body.addEventListener('touchstart', showEffect, false);\r\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\r\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\r\n }\r\n\r\n body.addEventListener('mousedown', showEffect, false);\r\n };\r\n\r\n\r\n /**\r\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\r\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\r\n * or skimming effect should be applied to the elements.\r\n */\r\n Waves.attach = function (elements, classes) {\r\n\r\n elements = getWavesElements(elements);\r\n\r\n if (toString.call(classes) === '[object Array]') {\r\n classes = classes.join(' ');\r\n }\r\n\r\n classes = classes ? ' ' + classes : '';\r\n\r\n var element, tagName;\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n\r\n element = elements[i];\r\n tagName = element.tagName.toLowerCase();\r\n\r\n if (['input', 'img'].indexOf(tagName) !== -1) {\r\n TagWrapper[tagName](element);\r\n element = element.parentElement;\r\n }\r\n\r\n if (element.className.indexOf('waves-effect') === -1) {\r\n element.className += ' waves-effect' + classes;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Cause a ripple to appear in an element via code.\r\n */\r\n Waves.ripple = function (elements, options) {\r\n elements = getWavesElements(elements);\r\n var elementsLen = elements.length;\r\n\r\n options = options || {};\r\n options.wait = options.wait || 0;\r\n options.position = options.position || null; // default = centre of element\r\n\r\n\r\n if (elementsLen) {\r\n var element, pos, off, centre = {},\r\n i = 0;\r\n var mousedown = {\r\n type: 'mousedown',\r\n button: 1\r\n };\r\n var hideRipple = function (mouseup, element) {\r\n return function () {\r\n Effect.hide(mouseup, element);\r\n };\r\n };\r\n\r\n for (; i < elementsLen; i++) {\r\n element = elements[i];\r\n pos = options.position || {\r\n x: element.clientWidth / 2,\r\n y: element.clientHeight / 2\r\n };\r\n\r\n off = offset(element);\r\n centre.x = off.left + pos.x;\r\n centre.y = off.top + pos.y;\r\n\r\n mousedown.pageX = centre.x;\r\n mousedown.pageY = centre.y;\r\n\r\n Effect.show(mousedown, element);\r\n\r\n if (options.wait >= 0 && options.wait !== null) {\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n setTimeout(hideRipple(mouseup, element), options.wait);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Remove all ripples from an element.\r\n */\r\n Waves.calm = function (elements) {\r\n elements = getWavesElements(elements);\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n Effect.hide(mouseup, elements[i]);\r\n }\r\n };\r\n\r\n /**\r\n * Deprecated API fallback\r\n */\r\n Waves.displayEffect = function (options) {\r\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\r\n Waves.init(options);\r\n };\r\n\r\n return Waves;\r\n});\r\n$(document).ready(function () {\r\n //Initialization\r\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\r\n Waves.attach('.btn-flat', ['waves-effect']);\r\n Waves.attach('.chip', ['waves-effect']);\r\n Waves.attach('.view a .mask', ['waves-light']);\r\n Waves.attach('.waves-light', ['waves-light']);\r\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\r\n Waves.attach('.pager li a', ['waves-light']);\r\n Waves.attach('.pagination .page-item .page-link', ['waves-effect']);\r\n Waves.init();\r\n});\r\n"],"sourceRoot":""}